@medplum/react 2.1.4 → 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cjs/index.cjs +4 -4
  2. package/dist/cjs/index.cjs.map +4 -4
  3. package/dist/esm/index.mjs +5 -5
  4. package/dist/esm/index.mjs.map +4 -4
  5. package/dist/types/AppShell/AppShell.d.ts +2 -0
  6. package/dist/types/AppShell/Header.d.ts +1 -0
  7. package/dist/types/AppShell/Navbar.d.ts +1 -0
  8. package/dist/types/CalendarInput/CalendarInput.d.ts +0 -7
  9. package/dist/types/CalendarInput/CalendarInput.utils.d.ts +7 -0
  10. package/dist/types/CodeInput/CodeInput.d.ts +1 -2
  11. package/dist/types/CodeableConceptInput/CodeableConceptInput.d.ts +2 -2
  12. package/dist/types/CodingInput/CodingInput.d.ts +2 -2
  13. package/dist/types/DateTimeInput/DateTimeInput.d.ts +0 -12
  14. package/dist/types/DateTimeInput/DateTimeInput.utils.d.ts +12 -0
  15. package/dist/types/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +1 -0
  16. package/dist/types/FhirPathDisplay/FhirPathDisplay.d.ts +1 -2
  17. package/dist/types/FhirPathTable/FhirPathTable.d.ts +1 -2
  18. package/dist/types/GoogleButton/GoogleButton.d.ts +0 -1
  19. package/dist/types/GoogleButton/GoogleButton.utils.d.ts +1 -0
  20. package/dist/types/MedplumProvider/MedplumProvider.context.d.ts +32 -0
  21. package/dist/types/MedplumProvider/MedplumProvider.d.ts +2 -30
  22. package/dist/types/ResourceArrayDisplay/ResourceArrayDisplay.d.ts +2 -2
  23. package/dist/types/ResourceArrayInput/ResourceArrayInput.d.ts +2 -2
  24. package/dist/types/ResourceBlame/ResourceBlame.d.ts +0 -1
  25. package/dist/types/ResourceBlame/ResourceBlame.utils.d.ts +3 -0
  26. package/dist/types/ResourceForm/ResourceForm.d.ts +1 -2
  27. package/dist/types/ResourceForm/ResourceForm.utils.d.ts +2 -0
  28. package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts +3 -15
  29. package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.utils.d.ts +12 -0
  30. package/dist/types/ResourcePropertyInput/ResourcePropertyInput.d.ts +4 -4
  31. package/dist/types/ResourceTypeInput/ResourceTypeInput.d.ts +12 -0
  32. package/dist/types/SearchControl/SearchControlField.d.ts +4 -4
  33. package/dist/types/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +2 -2
  34. package/dist/types/index.d.ts +5 -3
  35. package/dist/types/utils/questionnaire.d.ts +3 -1
  36. package/package.json +19 -19
@@ -1,4 +1,4 @@
1
- import{formatAddress as Us}from"@medplum/core";import on from"react";function tn(e){let o=e.value;return o?on.createElement(on.Fragment,null,Us(o)):null}import{Group as Gs,NativeSelect as rn,TextInput as Go}from"@mantine/core";import Ge,{useRef as Qs,useState as zs}from"react";function an(e,o){return e.line&&e.line.length>o?e.line[o]:""}function nn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function fn(e){let[o,t]=zs(e.defaultValue||{}),r=Qs();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function s(c){a(nn(r.current||{},0,c))}function l(c){a(nn(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ge.createElement(Gs,{spacing:"xs",grow:!0,noWrap:!0},Ge.createElement(rn,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ge.createElement(rn,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ge.createElement(Go,{placeholder:"Line 1",defaultValue:an(o,0),onChange:c=>s(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"Line 2",defaultValue:an(o,1),onChange:c=>l(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Zs}from"@mantine/core";import{createReference as Ys}from"@medplum/core";import ei,{useRef as oi,useState as ti}from"react";import{showNotification as Ws}from"@mantine/notifications";import Xs,{createContext as Js,useContext as $s,useEffect as ln,useMemo as Ks,useState as js}from"react";var sn=Js(void 0);function Uh(e){let o=e.medplum,t=e.navigate??_s,[r,a]=js({profile:o.getProfile(),loading:!1});ln(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ln(()=>{function f(){Ws({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Ks(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Xs.createElement(sn.Provider,{value:n},e.children)}function Qo(){return $s(sn)}function P(){return Qo().medplum}function Qe(){return Qo().navigate}function pt(){return Qo().profile}function _s(e){window.location.assign(e)}function un(e){let o=pt(),[t,r]=ti(e.defaultValue||{}),a=oi();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&Ys(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return ei.createElement(Zs,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Ou,useMantineTheme as Eu}from"@mantine/core";import no,{Suspense as Lu,useState as Ru}from"react";import{Alert as ii}from"@mantine/core";import{normalizeErrorString as ui}from"@medplum/core";import{forwardRef as ri,createElement as cn}from"react";import ro from"prop-types";var dn={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 ai=Object.defineProperty,ni=Object.defineProperties,fi=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,xn=Object.prototype.hasOwnProperty,In=Object.prototype.propertyIsEnumerable,mn=(e,o,t)=>o in e?ai(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,pn=(e,o)=>{for(var t in o||(o={}))xn.call(o,t)&&mn(e,t,o[t]);if(xt)for(var t of xt(o))In.call(o,t)&&mn(e,t,o[t]);return e},li=(e,o)=>ni(e,fi(o)),si=(e,o)=>{var t={};for(var r in e)xn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&xt)for(var r of xt(e))o.indexOf(r)<0&&In.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=ri((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=si(f,["color","size","stroke","children"]);return cn("svg",pn(li(pn({ref:n},dn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,g])=>cn(c,g)),...u||[]])});return r.propTypes={color:ro.string,size:ro.oneOfType([ro.string,ro.number]),stroke:ro.oneOfType([ro.string,ro.number])},r.displayName=`${o}`,r};var xr=p("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 ao=p("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=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var gr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var hr=p("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 yr=p("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 Cr=p("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 vr=p("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 Sr=p("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 br=p("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 Re=p("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var zo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Pr=p("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 Dr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=p("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 po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Wo=p("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 kr=p("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 Tr=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Br=p("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 Ar=p("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 Mr=p("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 xo=p("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Fr=p("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 wr=p("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 Or=p("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 Er=p("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 Lr=p("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 It=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var gt=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Rr=p("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 Nr=p("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 Hr=p("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 Vr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var qr=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Ur=p("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 go=p("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 Xo=p("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 Jo=p("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 Gr=p("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 Qr=p("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 zr=p("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 $o=p("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Wr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Xr from"react";var ho=class extends Xr.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?Xr.createElement(ii,{icon:Xr.createElement(ao,{size:16}),title:"Something went wrong",color:"red"},ui(this.state.error)):this.props.children}};import{Center as di,Loader as ci}from"@mantine/core";import gn from"react";function Jr(){return gn.createElement(di,{style:{width:"100%",height:"100vh"}},gn.createElement(ci,null))}import{Avatar as Ki,createStyles as ji,Group as Ct,Header as _i,Menu as Ne,Stack as Zi,Text as Ko,UnstyledButton as Fn}from"@mantine/core";import{formatHumanName as Yi,getReferenceString as wn}from"@medplum/core";import Q,{useState as eu}from"react";import{formatHumanName as mi}from"@medplum/core";import hn from"react";function ht(e){let o=e.value;return o?hn.createElement(hn.Fragment,null,mi(o,e.options)):null}import{Avatar as bn}from"@mantine/core";import{getDisplayString as Ti,getImageSrc as Bi}from"@medplum/core";import $r from"react";import{Anchor as pi}from"@mantine/core";import{isReference as xi,isResource as Ii}from"@medplum/core";import gi from"react";function N(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(yn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&yn(o[0]))return!0}return!1}function yn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=hi(t);return r&&(l+="/"+r),gi.createElement(pi,{href:l,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(l)},...s},f)}function hi(e){if(e){if(typeof e=="string")return yi(e);if(Ii(e))return Ci(e);if(xi(e))return vi(e)}return"#"}function yi(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Ci(e){return`/${e.resourceType}/${e.id}`}function vi(e){return`/${e.reference}`}import{deepEquals as Si,isReference as Sn,isResource as bi,normalizeOperationOutcome as Pi}from"@medplum/core";import{useCallback as Di,useEffect as Cn,useState as ki}from"react";function X(e,o){let t=P(),[r,a]=ki(vn(t,e)),n=Di(f=>{Si(f,r)||a(f)},[r,a]);return Cn(()=>{n(vn(t,e))},[t,e,n]),Cn(()=>{let f=!0;return Sn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(Pi(s)))}),()=>f=!1},[t,r,e,n,o]),r}function vn(e,o){if(o){if(bi(o))return o;if(Sn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?Ti(o):e.alt??"",r=(o&&Bi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?$r.createElement(se,{to:o},$r.createElement(bn,{src:r,alt:t,radius:a,...n})):$r.createElement(bn,{src:r,alt:t,radius:a,...n})}import{createStyles as Li,Group as Ri,Text as Dn}from"@mantine/core";import{formatHumanName as Ni,getDisplayString as An,getReferenceString as Hi,isUUID as Vi}from"@medplum/core";import We,{forwardRef as qi,useCallback as kn}from"react";import{Loader as Ai,MultiSelect as Mi}from"@mantine/core";import Pn,{useCallback as yo,useEffect as Fi,useRef as Co,useState as vo}from"react";import{showNotification as wi}from"@mantine/notifications";import{normalizeErrorString as Oi}from"@medplum/core";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Ei(o),u=Co(null),[d,c]=vo(void 0),[g,y]=vo(),[A,v]=vo(),[B,I]=vo(),[H,b]=vo(i.map(r)),[x,q]=vo([]),oe=Co();oe.current=d;let me=Co();me.current=g;let te=Co();te.current=A;let Vo=Co();Vo.current=B;let C=Co();C.current=x;let R=yo(()=>{y(void 0);let Z=u.current?.value.trim()||"";if(Z===oe.current)return;c(Z);let le=new AbortController;v(le),a(Z,le.signal).then(pe=>{le.signal.aborted||(q(pe.map(r)),v(void 0),Vo.current&&(pe.length>0&&n(pe.slice(0,1)),I(!1)))}).catch(pe=>{le.signal.aborted||pe.message.includes("aborted")||wi({color:"red",message:Oi(pe)})})},[a,n,r]),Be=yo(()=>{te.current&&(te.current.abort(),v(void 0)),me.current!==void 0&&window.clearTimeout(me.current);let Z=window.setTimeout(()=>R(),100);y(Z)},[R]),ye=yo(Z=>{let le=[],pe=[];for(let qo of Z){let mt=C.current?.find(qs=>qs.value===qo),Uo=mt?.resource;!Uo&&s!==!1&&f&&(Uo=f(qo),mt=r(Uo)),Uo&&le.push(Uo),mt&&pe.push(mt)}n(le),b(pe)},[s,n,f,r]),to=yo(Z=>{Z.key==="Enter"&&(!me.current&&!te.current?(N(Z),C.current&&C.current.length>0&&(q(C.current.slice(0,1)),ye([C.current[0].value]))):I(!0))},[ye]),k=yo(Z=>{let le=r(f(Z));return q([...C.current,le]),le},[f,q,r]),W=yo((Z,le)=>!le,[]);return Fi(()=>()=>{te.current&&te.current.abort()},[]),Pn.createElement(Mi,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:to,onSearchChange:Be,data:[...H,...x],onFocus:R,onChange:ye,onCreate:k,rightSectionWidth:40,rightSection:A?Pn.createElement(Ai,{size:16}):null,filter:W,creatable:!0})}function Ei(e){return e?Array.isArray(e)?e:[e]:[]}var Ui=Li(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Gi(e){return e.id}function Qi(e){return{value:e.id,label:An(e),resource:e}}function Mn(e){let{classes:o}=Ui(),t=Qe(),r=P(),a=kn(async(f,s)=>{let l=Wi(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return Xi(u,f)},[r]),n=kn(f=>{f.length>0&&t(`/${Hi(f[0])}`)},[t]);return We.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement(Ur,{size:16}),placeholder:"Search",itemComponent:zi,toKey:Gi,toOption:Qi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var zi=qi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),We.createElement("div",{ref:t,...o},We.createElement(Ri,{noWrap:!0},We.createElement(Ce,{value:e}),We.createElement("div",null,We.createElement(Dn,null,An(e)),We.createElement(Dn,{size:"xs",color:"dimmed"},r))))});function Wi(e){let o=JSON.stringify(e);return Vi(e)?`{
1
+ import{formatAddress as js}from"@medplum/core";import ln from"react";function sn(e){let o=e.value;return o?ln.createElement(ln.Fragment,null,js(o)):null}import{Group as _s,NativeSelect as un,TextInput as Qo}from"@mantine/core";import Ue,{useRef as Zs,useState as Ys}from"react";function dn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function cn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function mn(e){let[o,t]=Ys(e.defaultValue||{}),r=Zs();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function s(c){a(cn(r.current||{},0,c))}function l(c){a(cn(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ue.createElement(_s,{spacing:"xs",grow:!0,noWrap:!0},Ue.createElement(un,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ue.createElement(un,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ue.createElement(Qo,{placeholder:"Line 1",defaultValue:dn(o,0),onChange:c=>s(c.currentTarget.value)}),Ue.createElement(Qo,{placeholder:"Line 2",defaultValue:dn(o,1),onChange:c=>l(c.currentTarget.value)}),Ue.createElement(Qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ue.createElement(Qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ue.createElement(Qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as ti}from"@mantine/core";import{createReference as ri}from"@medplum/core";import ai,{useRef as ni,useState as fi}from"react";import{createContext as ei,useContext as oi}from"react";var hr=ei(void 0);function zo(){return oi(hr)}function S(){return zo().medplum}function Qe(){return zo().navigate}function xt(){return zo().profile}function pn(e){let o=xt(),[t,r]=fi(e.defaultValue||{}),a=ni();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&ri(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return ai.createElement(ti,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as qu,useMantineTheme as Gu}from"@mantine/core";import ro,{Suspense as Uu,useState as Qu}from"react";import{Alert as mi}from"@mantine/core";import{normalizeErrorString as pi}from"@medplum/core";import{forwardRef as li,createElement as In}from"react";import oo from"prop-types";var xn={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 si=Object.defineProperty,ii=Object.defineProperties,ui=Object.getOwnPropertyDescriptors,It=Object.getOwnPropertySymbols,Cn=Object.prototype.hasOwnProperty,yn=Object.prototype.propertyIsEnumerable,gn=(e,o,t)=>o in e?si(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,hn=(e,o)=>{for(var t in o||(o={}))Cn.call(o,t)&&gn(e,t,o[t]);if(It)for(var t of It(o))yn.call(o,t)&&gn(e,t,o[t]);return e},di=(e,o)=>ii(e,ui(o)),ci=(e,o)=>{var t={};for(var r in e)Cn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&It)for(var r of It(e))o.indexOf(r)<0&&yn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=li((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=ci(f,["color","size","stroke","children"]);return In("svg",hn(di(hn({ref:n},xn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,g])=>In(c,g)),...u||[]])});return r.propTypes={color:oo.string,size:oo.oneOfType([oo.string,oo.number]),stroke:oo.oneOfType([oo.string,oo.number])},r.displayName=`${o}`,r};var Cr=p("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 to=p("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 yr=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var vr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var Sr=p("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 br=p("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Pr=p("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 Dr=p("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 Tr=p("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 kr=p("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 Re=p("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 Wo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Br=p("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 Ar=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var mo=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Xo=p("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 Fr=p("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 Mr=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var wr=p("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 Or=p("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 Er=p("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var po=p("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var xo=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Lr=p("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 Rr=p("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 Nr=p("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 Hr=p("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 Vr=p("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 gt=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var ht=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var qr=p("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 Gr=p("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 Ur=p("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 Qr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var zr=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Wr=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var Io=p("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 Jo=p("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 $o=p("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 Xr=p("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 Jr=p("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 $r=p("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 Ko=p("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 Kr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import jr from"react";var go=class extends jr.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?jr.createElement(mi,{icon:jr.createElement(to,{size:16}),title:"Something went wrong",color:"red"},pi(this.state.error)):this.props.children}};import{Center as xi,Loader as Ii}from"@mantine/core";import vn from"react";function _r(){return vn.createElement(xi,{style:{width:"100%",height:"100vh"}},vn.createElement(Ii,null))}import{Avatar as Yi,createStyles as eu,Group as vt,Header as ou,Menu as Ne,Stack as tu,Text as jo,UnstyledButton as Ln}from"@mantine/core";import{formatHumanName as ru,getReferenceString as Rn}from"@medplum/core";import U,{useState as au}from"react";import{formatHumanName as gi}from"@medplum/core";import Sn from"react";function Ct(e){let o=e.value;return o?Sn.createElement(Sn.Fragment,null,gi(o,e.options)):null}import{Avatar as kn}from"@mantine/core";import{getDisplayString as Mi,getImageSrc as wi}from"@medplum/core";import Zr from"react";import{Anchor as hi}from"@mantine/core";import{isReference as Ci,isResource as yi}from"@medplum/core";import vi from"react";function H(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(bn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&bn(o[0]))return!0}return!1}function bn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Si(t);return r&&(l+="/"+r),vi.createElement(hi,{href:l,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(l)},...s},f)}function Si(e){if(e){if(typeof e=="string")return bi(e);if(yi(e))return Pi(e);if(Ci(e))return Di(e)}return"#"}function bi(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Pi(e){return`/${e.resourceType}/${e.id}`}function Di(e){return`/${e.reference}`}import{deepEquals as Ti,isReference as Tn,isResource as ki,normalizeOperationOutcome as Bi}from"@medplum/core";import{useCallback as Ai,useEffect as Pn,useState as Fi}from"react";function X(e,o){let t=S(),[r,a]=Fi(Dn(t,e)),n=Ai(f=>{Ti(f,r)||a(f)},[r,a]);return Pn(()=>{n(Dn(t,e))},[t,e,n]),Pn(()=>{let f=!0;return Tn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(Bi(s)))}),()=>f=!1},[t,r,e,n,o]),r}function Dn(e,o){if(o){if(ki(o))return o;if(Tn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?Mi(o):e.alt??"",r=(o&&wi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Zr.createElement(se,{to:o},Zr.createElement(kn,{src:r,alt:t,radius:a,...n})):Zr.createElement(kn,{src:r,alt:t,radius:a,...n})}import{createStyles as Vi,Group as qi,Text as An}from"@mantine/core";import{formatHumanName as Gi,getDisplayString as On,getReferenceString as Ui,isUUID as Qi}from"@medplum/core";import We,{forwardRef as zi,useCallback as Fn}from"react";import{Loader as Oi,MultiSelect as Ei}from"@mantine/core";import{showNotification as Li}from"@mantine/notifications";import{normalizeErrorString as Ri}from"@medplum/core";import Bn,{useCallback as ho,useEffect as Ni,useRef as Co,useState as yo}from"react";function vo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Hi(o),u=Co(null),[d,c]=yo(),[g,v]=yo(),[A,y]=yo(),[D,B]=yo(),[x,O]=yo(i.map(r)),[h,M]=yo([]),_=Co();_.current=d;let Pe=Co();Pe.current=g;let fe=Co();fe.current=A;let qo=Co();qo.current=D;let C=Co();C.current=h;let N=ho(()=>{v(void 0);let ee=u.current?.value.trim()||"";if(ee===_.current)return;c(ee);let le=new AbortController;y(le),a(ee,le.signal).then(me=>{le.signal.aborted||(M(me.map(r)),y(void 0),qo.current&&(me.length>0&&n(me.slice(0,1)),B(!1)))}).catch(me=>{le.signal.aborted||me.message.includes("aborted")||Li({color:"red",message:Ri(me)})})},[a,n,r]),Be=ho(()=>{fe.current&&(fe.current.abort(),y(void 0)),Pe.current!==void 0&&window.clearTimeout(Pe.current);let ee=window.setTimeout(()=>N(),100);v(ee)},[N]),he=ho(ee=>{let le=[],me=[];for(let Go of ee){let pt=C.current?.find(Ks=>Ks.value===Go),Uo=pt?.resource;!Uo&&s!==!1&&f&&(Uo=f(Go),pt=r(Uo)),Uo&&le.push(Uo),pt&&me.push(pt)}n(le),O(me)},[s,n,f,r]),eo=ho(ee=>{ee.key==="Enter"&&(!Pe.current&&!fe.current?(H(ee),C.current&&C.current.length>0&&(M(C.current.slice(0,1)),he([C.current[0].value]))):B(!0))},[he]),T=ho(ee=>{let le=r(f(ee));return M([...C.current,le]),le},[f,M,r]),W=ho((ee,le)=>!le,[]);return Ni(()=>()=>{fe.current&&fe.current.abort()},[]),Bn.createElement(Ei,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:eo,onSearchChange:Be,data:[...x,...h],onFocus:N,onChange:he,onCreate:T,rightSectionWidth:40,rightSection:A?Bn.createElement(Oi,{size:16}):null,filter:W,creatable:!0})}function Hi(e){return e?Array.isArray(e)?e:[e]:[]}var Wi=Vi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Xi(e){return e.id}function Ji(e){return{value:e.id,label:On(e),resource:e}}function En(e){let{classes:o}=Wi(),t=Qe(),r=S(),a=Fn(async(f,s)=>{let l=Ki(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return ji(u,f)},[r]),n=Fn(f=>{f.length>0&&t(`/${Ui(f[0])}`)},[t]);return We.createElement(vo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement(Wr,{size:16}),placeholder:"Search",itemComponent:$i,toKey:Xi,toOption:Ji,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var $i=zi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),We.createElement("div",{ref:t,...o},We.createElement(qi,{noWrap:!0},We.createElement(Ce,{value:e}),We.createElement("div",null,We.createElement(An,null,On(e)),We.createElement(An,{size:"xs",color:"dimmed"},r))))});function Ki(e){let o=JSON.stringify(e);return Qi(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import{formatAddress as Us}from"@medplum/core";import on from"react";function tn
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function Xi(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),$i(Ji(t),o).slice(0,5)}function Ji(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 $i(e,o){return e.sort((t,r)=>Tn(r,o)-Tn(t,o))}function Tn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Bn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Bn(Ni(r),o));return t}function Bn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var ou=ji(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 On(e){let o=Qo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=ou(),[l,i]=eu(!1);return Q.createElement(_i,{height:60,p:8,style:{zIndex:101}},Q.createElement(Ct,{position:"apart"},Q.createElement(Ct,{spacing:"xs"},Q.createElement(Fn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),Q.createElement(Mn,{pathname:e.pathname,searchParams:e.searchParams})),Q.createElement(Ne,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},Q.createElement(Ne.Target,null,Q.createElement(Fn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},Q.createElement(Ct,{spacing:7},Q.createElement(Ce,{value:r,radius:"xl",size:24}),Q.createElement(Ko,{size:"sm",className:f.userName},Yi(r?.name?.[0])),Q.createElement(Dr,{size:12,stroke:1.5})))),Q.createElement(Ne.Dropdown,null,Q.createElement(Zi,{align:"center",p:"xl"},Q.createElement(Ce,{size:"xl",radius:100,value:o.profile}),Q.createElement(ht,{value:o.profile?.name?.[0]}),Q.createElement(Ko,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&Q.createElement(Ne.Divider,null),n.map(u=>u.profile.reference!==wn(o.profile)&&Q.createElement(Ne.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},Q.createElement(Ct,null,Q.createElement(Ki,{radius:"xl"}),Q.createElement("div",{style:{flex:1}},Q.createElement(Ko,{size:"sm",weight:500},u.profile.display),Q.createElement(Ko,{color:"dimmed",size:"xs"},u.project.display))))),Q.createElement(Ne.Divider,null),Q.createElement(Ne.Item,{icon:Q.createElement(Qr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),Q.createElement(Ne.Item,{icon:Q.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${wn(r)}`)},"Account settings"),Q.createElement(Ne.Item,{icon:Q.createElement(Lr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),Q.createElement(Ko,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as bu,createStyles as Pu,Navbar as jr,ScrollArea as Du,Space as ku,Text as Tu}from"@mantine/core";import fe,{useState as Bu}from"react";import{Button as nu,Group as fu,Modal as lu,NativeSelect as su,Stack as iu,TextInput as uu}from"@mantine/core";import{showNotification as Ln}from"@mantine/notifications";import{deepClone as du,normalizeErrorString as cu}from"@medplum/core";import Xe from"react";import au from"react";function En(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?tu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&ru(o,t);return o}function tu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function ru(e,o){e[o.name]=o.value}function $(e){return au.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=En(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Rn(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=du(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Ln({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Ln({color:"red",message:cu(u)})})}return Xe.createElement(lu,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement($,{onSubmit:r},Xe.createElement(iu,null,Xe.createElement(mu,{config:t}),Xe.createElement(uu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),Xe.createElement(fu,{position:"right"},Xe.createElement(nu,{mt:"sm",type:"submit"},"OK")))))}function mu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(su,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import yu,{useState as Cu}from"react";import pu,{useCallback as xu}from"react";function Kr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Iu(e){return typeof e.display=="string"?e.display:Kr(e)}function gu(e){return{value:Kr(e),label:Iu(e),resource:e}}function hu(e){return{code:e,display:e}}function Je(e){let o=P(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=xu(async(s,l)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,s,{signal:l})).expansion?.contains,c=[];for(let g of d)g.code&&!c.some(y=>y.code===g.code)&&c.push(g);return c},[o,t]);return pu.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:Kr,toOption:gu,loadOptions:f,onCreate:hu,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function vt(e){let[o,t]=Cu(e.defaultValue);function r(a){let n=a[0],f=Su(n);t(f),e.onChange&&e.onChange(f)}return yu.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:vu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function vu(e){return e?{code:e}:void 0}function Su(e){return e?.code}var Nn=Pu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function Hn(e){let{classes:o}=Nn(),t=Qe(),r=Fu(e.pathname,e.searchParams,e.menus),[a,n]=Bu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return fe.createElement(fe.Fragment,null,fe.createElement(jr,{width:{sm:250},p:"xs"},fe.createElement(Du,null,fe.createElement(jr.Section,{mb:"sm"},fe.createElement(vt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:l=>s(l),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),fe.createElement(jr.Section,{grow:!0},e.menus?.map(l=>fe.createElement(fe.Fragment,{key:`menu-${l.title}`},fe.createElement(Tu,{className:o.menuTitle},l.title),l.links?.map(i=>fe.createElement(Au,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},fe.createElement(Mu,{to:i.href,icon:i.icon}),fe.createElement("span",null,i.label))))),e.displayAddBookmark&&fe.createElement(bu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:fe.createElement(Vr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&fe.createElement(Rn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Au(e){let{classes:o,cx:t}=Nn();return fe.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function Mu(e){return e.icon?e.icon:fe.createElement(ku,{w:30})}function Fu(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 s=wu(e,o,f.href);s>a&&(a=s,r=f)}return r}function wu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function gb(e){let o=Eu(),[t,r]=Ru(localStorage.navbarOpen==="true"),a=P(),n=pt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?no.createElement(Jr,null):no.createElement(Ou,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&no.createElement(On,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?no.createElement(Hn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark}):void 0},no.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},no.createElement(Lu,{fallback:no.createElement(Jr,null)},e.children)))}import _r from"react";import{Anchor as Nu}from"@mantine/core";import $e from"react";function Ee(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?$e.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(Nu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Vn(e){return _r.createElement("div",null,e.values?.map((o,t)=>_r.createElement("div",{key:"attatchment-"+t},_r.createElement(Ee,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as qn}from"@mantine/core";import ie,{useRef as Vu,useState as qu}from"react";import Zr,{useRef as Hu}from"react";function bo(e){let o=P(),t=Hu(null);function r(f){N(f),t.current?.click()}function a(f){N(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Zr.createElement(Zr.Fragment,null,Zr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Un(e){let[o,t]=qu(e.defaultValue??[]),r=Vu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Ee,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(qn,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(ze,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(bo,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(qn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Wo,{size:16})))))))}import{Button as Gn}from"@mantine/core";import Po,{useState as Uu}from"react";function St(e){let[o,t]=Uu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Po.createElement(Po.Fragment,null,Po.createElement(Ee,{value:o,maxWidth:200}),Po.createElement(Gn,{onClick:a=>{N(a),r(void 0)}},"Remove")):Po.createElement(bo,{onUpload:r},a=>Po.createElement(Gn,{...a},"Upload..."))}import{getPropertyDisplayName as fd,globalSchema as ld}from"@medplum/core";import Yo from"react";var bt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Gu}from"@mantine/core";import jo from"react";var Qu=Gu(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 Qn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Qu();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function zn(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{ActionIcon as _u,Box as Zu,CopyButton as Yu,Tooltip as ed}from"@mantine/core";import{formatDateTime as od,formatPeriod as td,formatTiming as rd,getElementDefinitionTypeName as ad,getTypedPropertyValue as nd,PropertyType as V}from"@medplum/core";import O from"react";import{formatCodeableConcept as zu}from"@medplum/core";import Wn from"react";function Do(e){return Wn.createElement(Wn.Fragment,null,zu(e.value))}import{formatCoding as Wu}from"@medplum/core";import Xn from"react";function Jn(e){return Xn.createElement(Xn.Fragment,null,Wu(e.value))}import Yr from"react";import $n from"react";function Pt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),$n.createElement($n.Fragment,null,t.join("").trim())}function Kn(e){let o=e.value;return o?Yr.createElement(Yr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Yr.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Xu from"react";function jn(e){return Xu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Ju}from"@medplum/core";import _n from"react";function Zn(e){return _n.createElement(_n.Fragment,null,Ju(e.value))}import{formatQuantity as $u}from"@medplum/core";import Yn from"react";function _o(e){return Yn.createElement(Yn.Fragment,null,$u(e.value))}import{formatRange as Ku}from"@medplum/core";import ef from"react";function Dt(e){return ef.createElement(ef.Fragment,null,Ku(e.value))}import kt from"react";function of(e){let o=e.value;return o?kt.createElement(kt.Fragment,null,kt.createElement(_o,{value:o.numerator}),"\xA0/\xA0",kt.createElement(_o,{value:o.denominator})):null}import{stringify as ju}from"@medplum/core";import ea from"react";function fo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||ju(e.value);return e.link!==!1&&e.value.reference?ea.createElement(se,{to:e.value},o):ea.createElement(ea.Fragment,null,o)}import Tt from"react";function tf(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Tt.createElement(Tt.Fragment,null,t.map((a,n)=>Tt.createElement("div",{key:`${n}-${t.length}`},Tt.createElement(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return O.createElement(Zu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,O.createElement(Yu,{value:r,timeout:2e3},({copied:n,copy:f})=>O.createElement(ed,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},O.createElement(_u,{color:n?"teal":"gray",onClick:f},n?O.createElement(zo,{size:"1rem"}):O.createElement(Tr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?O.createElement(Vn,{values:r,maxWidth:e.maxWidth}):O.createElement(tf,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return O.createElement(O.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return O.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.decimal:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return O.createElement(O.Fragment,null,r);case V.canonical:return O.createElement(fo,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return O.createElement(O.Fragment,null,od(r));case V.markdown:return O.createElement("pre",null,r);case V.Address:return O.createElement(tn,{value:r});case V.Annotation:return O.createElement(O.Fragment,null,r?.text);case V.Attachment:return O.createElement(Ee,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return O.createElement(Do,{value:r});case V.Coding:return O.createElement(Jn,{value:r});case V.ContactDetail:return O.createElement(Kn,{value:r});case V.ContactPoint:return O.createElement(Pt,{value:r});case V.HumanName:return O.createElement(ht,{value:r});case V.Identifier:return O.createElement(jn,{value:r});case V.Money:return O.createElement(Zn,{value:r});case V.Period:return O.createElement(O.Fragment,null,td(r));case V.Quantity:case V.Duration:return O.createElement(_o,{value:r});case V.Range:return O.createElement(Dt,{value:r});case V.Ratio:return O.createElement(of,{value:r});case V.Reference:return O.createElement(fo,{value:r,link:e.link});case V.Timing:return O.createElement(O.Fragment,null,rd(r));case V.Dosage:case V.UsageContext:return O.createElement(Zo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return O.createElement(Zo,{value:{type:ad(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function be(e,o){let t=nd(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=ld.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Yo.createElement("div",null,t.name):Yo.createElement(Qn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(bt.includes(f))return null;let s=n[1];s.path||(s.path=r+"."+f);let[l,i]=be(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:Yo.createElement(zn,{key:f,term:fd(f)},Yo.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Uc}from"@mantine/core";import{getPropertyDisplayName as Ef,globalSchema as Gc}from"@medplum/core";import Bo,{useState as Qc}from"react";import{Group as sd,Input as id}from"@mantine/core";import Bt from"react";function At(e){return Bt.createElement(sd,{noWrap:!0},Bt.createElement("div",null,e.children),Bt.createElement("div",null,Bt.createElement(id.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as ud}from"@mantine/core";import dd from"react";function Ie(e,o){return e?.issue?.filter(t=>rf(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function Mt(e,o){return e?.issue?.filter(t=>rf(t.expression?.[0],o))}function rf(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Pe(e){return dd.createElement(ud.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:Ie(e.outcome,e.htmlFor)},e.children)}import{Button as af,Group as cd,Stack as md,TextInput as nf}from"@mantine/core";import{capitalize as pd,deepClone as xd}from"@medplum/core";import Ae,{useEffect as Id,useState as ff}from"react";function xD(e){let o=P(),t=X(e.defaultValue),[r,a]=ff(),[n,f]=ff();return Id(()=>{t&&(f(xd(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Ae.createElement("div",null,"Loading..."):Ae.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Ae.createElement(md,{mb:"xl"},Ae.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Ae.createElement(nf,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Ae.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},Ae.createElement(nf,{name:"id",defaultValue:n.id,disabled:!0}))),Ae.createElement(ot,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Ae.createElement(cd,{position:"right",mt:"xl"},Ae.createElement(af,{type:"submit"},"OK"),e.onDelete&&Ae.createElement(af,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function et(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",pd(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as wc,Group as Oc,NativeSelect as Ec,Textarea as Lc,TextInput as ia}from"@mantine/core";import{capitalize as Rc,getElementDefinitionTypeName as Nc,PropertyType as E}from"@medplum/core";import G,{useState as Hc}from"react";import gd,{useState as hd}from"react";function lf(e){let[o,t]=hd(e.defaultValue);function r(a){let n=Cd(a);t(n),e.onChange&&e.onChange(n)}return gd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&yd(o),maxSelectedValues:1,onChange:r})}function yd(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Cd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import vd,{useState as Sd}from"react";function sf(e){let[o,t]=Sd(e.defaultValue);function r(a){let n=a[0],f=n&&Pd(n);t(f),e.onChange&&e.onChange(f)}return vd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&bd(o),maxSelectedValues:1,onChange:r})}function bd(e){return{system:e.system,code:e.code,display:e.display}}function Pd(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Ad,TextInput as Md}from"@mantine/core";import oa,{useRef as Fd,useState as wd}from"react";import{Group as Dd,NativeSelect as uf,TextInput as kd}from"@mantine/core";import Ft,{useRef as Td,useState as Bd}from"react";function wt(e){let[o,t]=Bd(e.defaultValue),r=Td();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return Ft.createElement(Dd,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(uf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(uf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(kd,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function df(e){let[o,t]=wd(e.defaultValue),r=Fd();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return oa.createElement(Ad,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(Md,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),oa.createElement(wt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Od}from"@mantine/core";import{isValidDate as cf}from"@medplum/core";import Ed from"react";function Me(e){return Ed.createElement(Od,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Nd(),defaultValue:Ld(e.defaultValue),autoFocus:e.autoFocus,error:Ie(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Rd(t))}}})}function Ld(e){if(!e)return"";let o=new Date(e);return cf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Rd(e){if(!e)return"";let o=new Date(e);return cf(o)?o.toISOString():""}function Nd(){return"datetime-local"}import{JsonInput as Hd}from"@mantine/core";import{stringify as Vd}from"@medplum/core";import qd from"react";function mf(e){return qd.createElement(Hd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Vd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Ud,NativeSelect as Gd,TextInput as Ot}from"@mantine/core";import ko,{useRef as Qd,useState as zd}from"react";function pf(e){let[o,t]=zd(e.defaultValue),r=Qd();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 s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return ko.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},ko.createElement(Gd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),ko.createElement(Ot,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),ko.createElement(Ot,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),ko.createElement(Ot,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),ko.createElement(Ot,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Wd,TextInput as xf}from"@mantine/core";import ta,{useState as Xd}from"react";function If(e){let[o,t]=Xd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Wd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(xf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ta.createElement(xf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Jd,TextInput as $d}from"@mantine/core";import ra,{useCallback as aa,useState as Kd}from"react";var jd=["USD","EUR","CAD","GBP","AUD"];function gf(e){let{onChange:o}=e,[t,r]=Kd(e.defaultValue),a=aa(l=>{r(l),o&&o(l)},[o]),n=aa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=aa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=ra.createElement(Jd,{defaultValue:t?.currency,data:jd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ra.createElement($d,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ra.createElement(Br,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as _d}from"@mantine/core";import na,{useState as Zd}from"react";function hf(e){let[o,t]=Zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return na.createElement(_d,{spacing:"xs",grow:!0,noWrap:!0},na.createElement(Me,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),na.createElement(Me,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Yd,NativeSelect as ec,TextInput as yf}from"@mantine/core";import Et,{useState as oc}from"react";function De(e){let[o,t]=oc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Et.createElement(Yd,{spacing:"xs",grow:!0,noWrap:!0},Et.createElement(ec,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Et.createElement(yf,{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:tc(a.currentTarget.value)})}}),Et.createElement(yf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function tc(e){if(e)return parseFloat(e)}import{Group as rc}from"@mantine/core";import fa,{useState as ac}from"react";function tt(e){let[o,t]=ac(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return fa.createElement(rc,{spacing:"xs",grow:!0,noWrap:!0},fa.createElement(De,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),fa.createElement(De,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as nc}from"@mantine/core";import la,{useState as fc}from"react";function Cf(e){let[o,t]=fc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return la.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},la.createElement(De,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),la.createElement(De,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Ic,NativeSelect as gc,TextInput as hc}from"@mantine/core";import{createReference as yc}from"@medplum/core";import Rt,{useRef as Pf,useState as Df}from"react";import{Group as lc,Text as vf}from"@mantine/core";import{getDisplayString as sc,getReferenceString as bf}from"@medplum/core";import lo,{forwardRef as ic,useCallback as Sf,useState as uc}from"react";var dc={Observation:"code",User:"email:contains"},cc=["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 mc(e){return{value:bf(e),label:sc(e),resource:e}}function Lt(e){let o=P(),t=e.resourceType,[r,a]=uc(),n=X(e.defaultValue,a),f=e.onChange,s=Sf(async(i,u)=>{let d=xc(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Sf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:lo.createElement(So,{name:e.name,itemComponent:pc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:bf,toOption:mc,loadOptions:s,onChange:l,clearable:!0})}var pc=ic(({label:e,resource:o,...t},r)=>lo.createElement("div",{ref:r,...t},lo.createElement(lc,{noWrap:!0},lo.createElement(Ce,{value:o}),lo.createElement("div",null,lo.createElement(vf,null,e),lo.createElement(vf,{size:"xs",color:"dimmed"},o.birthDate)))));function xc(e){return dc[e]??(cc.includes(e)?"name":"_id")}function To(e){let o=Cc(e.targetTypes),t=vc(e.defaultValue,o),[r,a]=Df(e.defaultValue),[n,f]=Df(t),s=Pf();s.current=r;let l=Pf();l.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Rt.createElement(Ic,{spacing:"xs",grow:!0,noWrap:!0},o?Rt.createElement(gc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Rt.createElement(hc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Rt.createElement(Lt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?yc(u):void 0)}}))}function Cc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function vc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as kf}from"@mantine/core";import ge,{useRef as Sc,useState as bc}from"react";function Tf(e){let[o,t]=bc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Sc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ge.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},ge.createElement("colgroup",null,ge.createElement("col",{width:"97%"}),ge.createElement("col",{width:"3%"})),ge.createElement("tbody",null,o.map((n,f)=>ge.createElement("tr",{key:`${f}-${o.length}`},ge.createElement("td",null,ge.createElement(He,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(kf,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=[...r.current];l.splice(f,1),a(l)}},ge.createElement(ze,null))))),ge.createElement("tr",null,ge.createElement("td",null),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(kf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},ge.createElement(po,null))))))}import{Button as Mf,Chip as Bf,Group as Nt,Modal as Pc,NativeSelect as Dc,Stack as kc,Switch as Tc,TextInput as Bc}from"@mantine/core";import{formatTiming as Ac}from"@medplum/core";import K,{useRef as Ff,useState as sa}from"react";var Mc=["sun","mon","tue","wed","thu","fri","sat"];function wf(e){let[o,t]=sa(e.defaultValue),[r,a]=sa(!1),n=Ff();return n.current=o,K.createElement(K.Fragment,null,K.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},K.createElement("span",null,Ac(n.current)||"No repeat"),K.createElement(Mf,{onClick:()=>a(!0)},"Edit")),K.createElement(Fc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var Af={repeat:{period:1,periodUnit:"d"}};function Fc(e){let[o,t]=sa(e.defaultValue||Af),r=Ff();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 s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return K.createElement(Pc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},K.createElement(kc,null,K.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},K.createElement(Me,{name:"timing-dialog-start",onChange:i=>a(i)})),K.createElement(Tc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?Af.repeat:void 0)}),o.repeat&&K.createElement(K.Fragment,null,K.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},K.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},K.createElement(Bc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),K.createElement(Dc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>s(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&K.createElement(Pe,{title:"Repeat on"},K.createElement(Bf.Group,{multiple:!0,onChange:l},K.createElement(Nt,{position:"apart",mt:"md",spacing:"xs"},Mc.map(i=>K.createElement(Bf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),K.createElement(Nt,{position:"right"},K.createElement(Mf,{onClick:()=>e.onOk(o)},"OK"))))}function He(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===E.Attachment?G.createElement(Un,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Tf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(Vc,{elementDefinitionTypes:n,...e}):G.createElement(Of,{elementDefinitionType:n[0],...e})}function Vc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Hc(t);return G.createElement(Oc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Ec,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(Of,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Rc(r.code)))}}))}function Of(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 E.SystemString:case E.canonical:case E.string:case E.time:case E.uri:case E.url:return G.createElement(ia,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.date:return G.createElement(ia,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.dateTime:case E.instant:return G.createElement(Me,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case E.decimal:case E.integer:case E.positiveInt:case E.unsignedInt:return G.createElement(ia,{type:"number",step:t===E.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case E.code:return G.createElement(vt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.boolean:return G.createElement(wc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case E.markdown:return G.createElement(Lc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case E.Address:return G.createElement(fn,{name:r,defaultValue:a,onChange:e.onChange});case E.Annotation:return G.createElement(un,{name:r,defaultValue:a,onChange:e.onChange});case E.Attachment:return G.createElement(St,{name:r,defaultValue:a,onChange:e.onChange});case E.CodeableConcept:return G.createElement(lf,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.Coding:return G.createElement(sf,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.ContactDetail:return G.createElement(df,{name:r,defaultValue:a,onChange:e.onChange});case E.ContactPoint:return G.createElement(wt,{name:r,defaultValue:a,onChange:e.onChange});case E.Extension:return G.createElement(mf,{name:r,defaultValue:a,onChange:e.onChange});case E.HumanName:return G.createElement(pf,{name:r,defaultValue:a,onChange:e.onChange});case E.Identifier:return G.createElement(If,{name:r,defaultValue:a,onChange:e.onChange});case E.Money:return G.createElement(gf,{name:r,defaultValue:a,onChange:e.onChange});case E.Period:return G.createElement(hf,{name:r,defaultValue:a,onChange:e.onChange});case E.Duration:case E.Quantity:return G.createElement(De,{name:r,defaultValue:a,onChange:e.onChange});case E.Range:return G.createElement(tt,{name:r,defaultValue:a,onChange:e.onChange});case E.Ratio:return G.createElement(Cf,{name:r,defaultValue:a,onChange:e.onChange});case E.Reference:return G.createElement(To,{name:r,defaultValue:a,targetTypes:qc(o),onChange:e.onChange});case E.Timing:return G.createElement(wf,{name:r,defaultValue:a,onChange:e.onChange});case E.Dosage:case E.UsageContext:return G.createElement(ot,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(ot,{typeName:Nc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function qc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function ot(e){let[o,t]=Qc(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=Gc.types[a];if(!n)return Bo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Bo.createElement(Uc,null,Object.entries(n.properties).map(s=>{let l=s[0];if(l==="id"||bt.includes(l))return null;let i=s[1];if(!i.type)return null;let[u,d]=be(f,l),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Bo.createElement(At,{key:l,title:Ef(l),description:i.definition,htmlFor:l},Bo.createElement(He,{property:i,name:l,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(g,y)=>{r(et(o,l,y??l,s[1],g))}})):Bo.createElement(Pe,{key:l,title:Ef(l),description:i.definition,withAsterisk:c,htmlFor:l,outcome:e.outcome},Bo.createElement(He,{property:i,name:l,defaultValue:u,defaultPropertyType:d,onChange:(g,y)=>{r(et(o,l,y??l,s[1],g))}}))}))}import{Button as ua,createStyles as zc,Group as Lf}from"@mantine/core";import re,{useMemo as Wc,useState as Xc}from"react";var Jc=zc(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 $c(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Rf(e){let{classes:o}=Jc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Xc(da);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=Wc(()=>Kc(a,e.slots),[a,e.slots]);return re.createElement("div",null,re.createElement(Lf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},re.createElement("p",{style:{flex:1}},$c(a)),re.createElement(Lf,{position:"right",spacing:"xs"},re.createElement(ua,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),re.createElement(ua,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),re.createElement("table",{className:o.table},re.createElement("thead",null,re.createElement("tr",null,re.createElement("th",null,"SUN"),re.createElement("th",null,"MON"),re.createElement("th",null,"TUE"),re.createElement("th",null,"WED"),re.createElement("th",null,"THU"),re.createElement("th",null,"FRI"),re.createElement("th",null,"SAT"))),re.createElement("tbody",null,s.map((l,i)=>re.createElement("tr",{key:"week-"+i},l.map((u,d)=>re.createElement("td",{key:"day-"+d},u&&re.createElement(ua,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function da(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Kc(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:jc(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 jc(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 _c,createStyles as Zc}from"@mantine/core";import Yc from"react";var em=Zc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=em();return Yc.createElement(_c,{className:r.root,...t},o)}import ip from"react";import{ActionIcon as el,Center as Xm,createStyles as Jm,Group as $m,Loader as Km,Menu as Ve,ScrollArea as jm,TextInput as _m}from"@mantine/core";import{showNotification as Zm,updateNotification as ha}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as Ym}from"@medplum/core";import T,{useCallback as qt,useEffect as ep,useRef as ol,useState as tl}from"react";import{createStyles as pm,Group as Vt,List as Vf,Stack as qf,Text as ke,Title as Uf}from"@mantine/core";import{capitalize as xm,formatCodeableConcept as Im,formatDateTime as pa,formatObservationValue as gm,isReference as hm}from"@medplum/core";import h,{useEffect as ym,useState as Cm}from"react";import{Blockquote as om,createStyles as tm,Stack as rm}from"@mantine/core";import Nf from"react";var am=tm(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ca({value:e}){let{classes:o}=am();return e?Nf.createElement(rm,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Nf.createElement(om,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as um}from"@mantine/core";import ma from"react";import{Text as nm}from"@mantine/core";import{getDisplayString as fm,isOk as lm,normalizeErrorString as sm}from"@medplum/core";import Hf,{useState as im}from"react";function Le(e){let{value:o,link:t,...r}=e,[a,n]=im(),f=X(o,n),s;if(a&&!lm(a))s=`[${sm(a)}]`;else if(f)s=fm(f);else return null;return t?Hf.createElement(se,{to:o,...r},s):Hf.createElement(nm,{component:"span",...r},s)}function je(e){return ma.createElement(um,{spacing:"xs"},ma.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),ma.createElement(Le,{value:e.value,link:e.link}))}import{Badge as dm}from"@mantine/core";import cm from"react";var mm={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 Ht(e){return cm.createElement(dm,{color:mm[e.status]},e.status)}var Gf=pm(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}}));xa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function xa(e){let o=P(),t=X(e.value),[r,a]=Cm();if(ym(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(qf,null,h.createElement(Uf,null,"Diagnostic Report"),h.createElement(vm,{value:t}),!e.hideSpecimenInfo&&Sm(r),t.result&&h.createElement(bm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(ca,{value:n}))}function vm({value:e}){return h.createElement(Vt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(ke,null,h.createElement(je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(ke,null,h.createElement(je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(ke,null,h.createElement(je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(ke,null,pa(e.issued))),e.status&&h.createElement("div",null,h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(ke,null,xm(e.status))))}function Sm(e){return h.createElement(qf,{spacing:"xs"},h.createElement(Uf,{order:2,size:"h6"},"Specimens"),h.createElement(Vf,{type:"ordered"},e?.map(o=>h.createElement(Vf.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Vt,{spacing:20},h.createElement(Vt,{spacing:5},h.createElement(ke,{fw:500},"Collected:")," ",pa(o.collection?.collectedDateTime)),h.createElement(Vt,{spacing:5},h.createElement(ke,{fw:500},"Received:")," ",pa(o.receivedTime)))))))}function bm(e){let{classes:o}=Gf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,h.createElement(Qf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function Qf(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(Pm,{key:`obs-${hm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function Pm(e){let{classes:o,cx:t}=Gf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Tm(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(se,{to:r},h.createElement(Do,{value:r.code}))),h.createElement("td",null,h.createElement(Dm,{value:r})),h.createElement("td",null,h.createElement(km,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Do,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement(h.Fragment,null,r.category.map(f=>h.createElement("div",{key:`category-${Im(f)}`},h.createElement(Do,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(fo,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Ht,{status:r.status}))),r.hasMember&&h.createElement(Qf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(ca,{value:r.note}))))}function Dm(e){let o=e.value;return h.createElement(h.Fragment,null,gm(o))}function km(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(Dt,{value:o}):null}function Tm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Bm,Paper as Am,useComponentDefaultProps as Mm}from"@mantine/core";import Fm from"react";var wm=Bm((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%"}}})),Om={shadow:"xs",radius:"md",withBorder:!0};function Ao(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Mm("Panel",Om,e),{classes:s,cx:l}=wm({width:r,fill:a},{name:"Panel",unstyled:n});return Fm.createElement(Am,{className:l(s.paper,o),...f},t)}import{createStyles as Em}from"@mantine/core";import{getPropertyDisplayName as Lm,stringify as zf,toTypedValue as Wf}from"@medplum/core";import ue,{useEffect as Rm,useState as Nm}from"react";var Hm=Em(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 Jf(e){let{classes:o}=Hm(),t=P(),[r,a]=Nm();if(Rm(()=>{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?ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.properties).map(f=>{let s=f[0];if(s==="id"||s==="meta")return null;let l=f[1],[i,u]=be(Wf(e.original),s),[d,c]=be(Wf(e.revised),s);return Xf(i)&&Xf(d)||zf(i)===zf(d)?null:ue.createElement("tr",{key:s},ue.createElement("td",null,Lm(s)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:l,propertyType:u,value:i,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:l,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Xf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Vm,{useEffect as qm,useState as Um}from"react";function Ia(e){let o=P(),t=X(e.value),[r,a]=Um();return qm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Vm.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Gm,Group as Qm,Menu as $f,Text as ga}from"@mantine/core";import{formatDateTime as zm,getReferenceString as Wm}from"@medplum/core";import ae from"react";function Kf(e){return ae.createElement(Ke,null,e.children)}function _e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return ae.createElement(Ao,{"data-testid":"timeline-item",fill:!0,...n},ae.createElement(Qm,{position:"apart",spacing:8,mx:"xs",my:"sm"},ae.createElement(Ce,{value:f,link:!0,size:"md"}),ae.createElement("div",{style:{flex:1}},ae.createElement(ga,{size:"sm"},ae.createElement(Le,{color:"dark",weight:500,value:f,link:!0})),ae.createElement(ga,{size:"xs"},ae.createElement(se,{color:"dimmed",to:e.resource},zm(s)),ae.createElement(ga,{component:"span",color:"dimmed",mx:8},"\xB7"),ae.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&ae.createElement($f,{position:"bottom-end",shadow:"md",width:200},ae.createElement($f.Target,null,ae.createElement(Gm,{radius:"xl","aria-label":`Actions for ${Wm(e.resource)}`},ae.createElement(Ar,null))),a)),ae.createElement(ho,null,r&&ae.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&ae.createElement(ae.Fragment,null,e.children)))}function Zf(e,o){e.sort((t,r)=>{let a=jf(t,o),n=jf(r,o);return a>n?1:a<n?-1:_f(t,o)-_f(r,o)})}function jf(e,o){if(!Yf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function _f(e,o){if(!Yf(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 Yf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var op=Jm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ze(e){let o=P(),t=Qe(),r=o.getProfile(),a=ol(null),n=X(e.value),[f,s]=tl(),[l,i]=tl([]),u=e.loadTimelineResources,d=ol(l);d.current=l;let c=qt(C=>{Zf(C,n),C.reverse(),i(C)},[n]),g=qt(C=>{let R=[];for(let Be of C){if(Be.status!=="fulfilled")continue;let ye=Be.value;if(ye.type==="history"&&s(ye),ye.entry)for(let to of ye.entry)R.push(to.resource)}c(R)},[c]),y=qt(C=>c([...d.current,C]),[c]),A=qt(()=>{let C,R;"resourceType"in e.value?(C=e.value.resourceType,R=e.value.id):[C,R]=e.value.reference?.split("/"),u(o,C,R).then(g).catch(console.log)},[o,e.value,u,g]);ep(()=>A(),[A]);function v(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(R=>y(R)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(R=>y(R)).then(()=>ha({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(zo,{size:16}),autoClose:2e3})).catch(R=>ha({id:"upload-notification",color:"red",title:"Upload error",message:Ym(R),icon:T.createElement(Fr,{size:16}),autoClose:2e3}))}function I(C,R){return o.updateResource({...C,priority:R})}function H(C){I(C,"stat").then(A).catch(console.log)}function b(C){I(C,"routine").then(A).catch(console.log)}function x(C){t(`/${C.resourceType}/${C.id}`)}function q(C){t(`/${C.resourceType}/${C.id}/edit`)}function oe(C){t(`/${C.resourceType}/${C.id}/delete`)}function me(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function te(){Zm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Vo(C){ha({id:"upload-notification",loading:!0,title:"Uploading...",message:sp(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Kf,null,e.createCommunication&&T.createElement(Ao,null,T.createElement($,{testid:"timeline-form",onSubmit:C=>{v(C.text);let R=a.current;R&&(R.value="",R.focus())}},T.createElement($m,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement(_m,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(el,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Rr,{size:16})),T.createElement(bo,{onUpload:B,onUploadStart:te,onUploadProgress:Vo},C=>T.createElement(el,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(Wo,{size:16})))))),l.map(C=>{if(!C)return null;let R=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(tp,{key:R,history:f,resource:C,onDetails:me});switch(C.resourceType){case"AuditEvent":return T.createElement(fp,{key:R,resource:C,onDetails:x});case"Communication":return T.createElement(ap,{key:R,resource:C,onPin:C.priority!=="stat"?H:void 0,onUnpin:C.priority==="stat"?b:void 0,onDetails:x,onEdit:q,onDelete:oe});case"DiagnosticReport":return T.createElement(lp,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});case"Media":return T.createElement(np,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});default:return T.createElement(_e,{key:R,resource:C,padding:!0},T.createElement(Ia,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Xm,{style:{width:"100%",height:"100%"}},T.createElement(Km,null))}function Mo(e){return T.createElement(Ve.Dropdown,null,T.createElement(Ve.Label,null,"Resource"),e.onPin&&T.createElement(Ve.Item,{icon:T.createElement(Nr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Ve.Item,{icon:T.createElement(Hr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Ve.Item,{icon:T.createElement(Er,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&T.createElement(Ve.Item,{icon:T.createElement(Mr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(Ve.Divider,null),T.createElement(Ve.Label,null,"Danger zone"),T.createElement(Ve.Item,{color:"red",icon:T.createElement($o,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function tp(e){let o=rp(e.history,e.resource);return o?T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(Jf,{original:o,revised:e.resource})):T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement("h3",null,"Created"),T.createElement(Ia,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function rp(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 ap(e){let{classes:o}=op(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(_e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Mo,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function np(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(_e,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(Ee,{value:e.resource.content}))}function fp(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(jm,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function lp(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(xa,{value:e.resource}))}function sp(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ya(e.loaded)} / ${ya(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ya(e.loaded)}`}function ya(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 tA(e){return ip.createElement(Ze,{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 rl from"react";function Ut(e){let{children:o,...t}=e;return rl.createElement(Ke,null,rl.createElement(Ao,{...t},o))}import{createReference as Gt}from"@medplum/core";import up from"react";function pA(e){return up.createElement(Ze,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Gt(o),subject:o.subject,sender:Gt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Gt(o),subject:o.subject,operator:Gt(t),issued:new Date().toISOString(),content:r})})}import{Button as gx,Loader as hx,Table as yx}from"@mantine/core";import{normalizeOperationOutcome as Cx}from"@medplum/core";import ne,{useEffect as Ll,useRef as Rl,useState as jt}from"react";import{evalFhirPath as dp}from"@medplum/core";import cp from"react";function al(e){let o;try{o=dp(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 cp.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as ox,Button as Eo,Center as $t,createStyles as tx,Group as Kt,Loader as rx,Menu as wl,Pagination as ax,Table as nx,Text as Ba,UnstyledButton as fx}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as wa,formatSearchQuery as lx,globalSchema as sx}from"@medplum/core";import D,{useCallback as Ol,useEffect as El,useRef as ix,useState as Aa}from"react";import{Box as mp,Button as pp,Modal as xp,Text as Ip}from"@mantine/core";import Fo from"react";function fl(e){return Fo.createElement(xp,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Fo.createElement(mp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Fo.createElement(nl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Fo.createElement(nl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Fo.createElement(Ip,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function nl(e){return Fo.createElement(pp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as kp}from"@mantine/core";import{globalSchema as Tp,stringify as Bp}from"@medplum/core";import J,{useEffect as Ap,useRef as vl,useState as Mp}from"react";import{capitalize as gp,DEFAULT_SEARCH_COUNT as hp,evalFhirPathTyped as yp,formatDateTime as Cp,Operator as F}from"@medplum/core";import Qt from"react";var vp={string:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],fulltext:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],token:[F.EQUALS,F.NOT],reference:[F.EQUALS,F.NOT],numeric:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],quantity:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],date:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY],datetime:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY]},Sp={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 at(e,o){return{...e,filters:o,offset:0,name:void 0}}function MA(e){return at(e,[])}function zt(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function wo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function FA(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 sl(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function il(e,o){return Ca(e,o,-1)}function ul(e,o){return Ca(e,o,0)}function dl(e,o){return Ca(e,o,1)}function Ca(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),Sa(e,o,r,a)}function cl(e,o){return va(e,o,-1)}function ml(e,o){return va(e,o,0)}function pl(e,o){return va(e,o,1)}function va(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),Sa(e,o,r,a)}function xl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Sa(e,o,t,new Date)}function Sa(e,o,t,r){return e=zt(e,o),e=ll(e,o,F.GREATER_THAN_OR_EQUALS,t),e=ll(e,o,F.LESS_THAN_OR_EQUALS,r),e}function ll(e,o,t,r){return wo(e,o,t,r.toISOString())}function ba(e,o,t=!0){return wo(e,o,F.MISSING,t.toString())}function bp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Il(e,o){let t=e.count??hp,r=(o-1)*t;return bp(e,r)}function Pa(e,o,t){return o===gl(e)&&t!==void 0&&t===hl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function wA(e,o){let t=!1;return gl(e)===o&&(t=!hl(e)),Pa(e,o,t)}function gl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function hl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function yl(e){return vp[e.type]}function nt(e){return Sp[e]??""}function ve(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"||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(gp).join(" "))}function Cl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Cp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Pp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Dp(e,o.searchParams[0]):null}function Pp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=be({type:e.resourceType,value:e},t);return r?Qt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Dp(e,o){let t=yp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Qt.createElement(Qt.Fragment,null,t.map((r,a)=>Qt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Sl(e){let[o,t]=Mp({search:JSON.parse(Bp(e.search))}),r=vl(null),a=vl(null);Ap(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function s(I){I.key==="Enter"&&u()}function l(){u()}function i(){let I=o.search.fields??[],H=r.current?.value;if(H){let b=[...I,H];t({search:{...o.search,fields:b}})}}function u(){let I=o.search.fields??[],H=a.current?.value;if(H){let b=[...I];b.splice(b.indexOf(H),1),t({search:{...o.search,fields:b}})}}function d(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x<=0||(g(b,x,x-1),t({search:{...o.search,fields:b}}))}function c(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x>=b.length-1||(g(b,x,x+1),t({search:{...o.search,fields:b}}))}function g(I,H,b){let x=I[H];I[H]=I[b],I[b]=x}if(!e.visible)return null;let y=e.search.resourceType,A=Tp.types[y],v=o.search.fields??[],B=Fp(A).filter(I=>!v.includes(I)).sort((I,H)=>I.localeCompare(H));return J.createElement(kp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:I=>n(I),onDoubleClick:()=>f(),"data-testid":"available"},B.map(I=>J.createElement("option",{key:I,value:I},ve(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>s(I),onDoubleClick:()=>l(),"data-testid":"selected"},v.map(I=>J.createElement("option",{key:I,value:I},ve(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function Fp(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ve(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ve(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ve(a)))}return o}import{Button as st,Group as Vp,Modal as qp,NativeSelect as Pl}from"@mantine/core";import{globalSchema as Up,stringify as Dl}from"@medplum/core";import L,{useEffect as Gp,useRef as Tl,useState as ka}from"react";import{formatDateTime as wp,getSearchParameterDetails as Op,globalSchema as Ep,Operator as bl,SearchParameterType as Lp}from"@medplum/core";import lt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=Ep.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===bl.EQUALS||t.operator===bl.NOT_EQUALS))return lt.createElement(Le,{value:{reference:t.value}});let a=Op(o,r);if(t.code==="_lastUpdated"||a.type===Lp.DATETIME)return lt.createElement(lt.Fragment,null,wp(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Rp,TextInput as Da}from"@mantine/core";import{getSearchParameterDetails as Np,SearchParameterType as Oo}from"@medplum/core";import so from"react";function Xt(e){let o=Np(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Oo.REFERENCE:return so.createElement(To,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Oo.BOOLEAN:return so.createElement(Rp,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Oo.DATE:return so.createElement(Da,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.DATETIME:return so.createElement(Me,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Oo.NUMBER:return so.createElement(Da,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.QUANTITY:return so.createElement(De,{name:t,defaultValue:Hp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return so.createElement(Da,{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 Hp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Bl(e){let[o,t]=ka(JSON.parse(Dl(e.search))),[r,a]=ka(-1),n=Tl(o);n.current=o,Gp(()=>{t(JSON.parse(Dl(e.search)))},[e.search]);function f(u){t(wo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=Up.types[s].searchParams??{},i=o.filters||[];return L.createElement(qp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},L.createElement("div",null,L.createElement("table",null,L.createElement("colgroup",null,L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:380}}),L.createElement("col",{style:{width:120}})),L.createElement("thead",null,L.createElement("tr",null,L.createElement("th",null,"Field"),L.createElement("th",null,"Operation"),L.createElement("th",null,"Value"),L.createElement("th",null,"Actions"))),L.createElement("tbody",null,i.map((u,d)=>d===r?L.createElement(kl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let g=[...i];g[d]=c,t(at(n.current,g)),a(-1)},onCancel:()=>a(-1)}):L.createElement(Qp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(sl(n.current,d))})),L.createElement(kl,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),L.createElement(Vp,{position:"right",mt:"xl"},L.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function Qp(e){let{filter:o}=e;return L.createElement("tr",null,L.createElement("td",null,ve(o.code)),L.createElement("td",null,nt(o.operator)),L.createElement("td",null,L.createElement(Wt,{resourceType:e.resourceType,filter:o})),L.createElement("td",null,L.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),L.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function kl(e){let[o,t]=ka(e.defaultValue??{}),r=Tl(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 s=e.searchParams[o.code],l=s&&yl(s);return L.createElement("tr",null,L.createElement("td",null,L.createElement(Pl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ve(i)}))]})),L.createElement("td",null,l&&L.createElement(Pl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:nt(i)}))]})),L.createElement("td",null,s&&o.operator&&L.createElement(Xt,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),L.createElement("td",null,o.code&&o.operator&&o.value&&L.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&L.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as zp,Grid as Ta,Modal as Wp}from"@mantine/core";import io,{useState as Xp}from"react";function Al(e){let[o,t]=Xp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return io.createElement(Wp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},io.createElement($,{onSubmit:r},io.createElement(Ta,null,io.createElement(Ta.Col,{span:10},io.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),io.createElement(Ta.Col,{span:2},io.createElement(zp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function Ml(e){if(!e.searchParams)return null;function o(n,f){a(Pa(e.search,n.code,f))}function t(n){a(zt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(Jp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},ve(n.code))))}function Jp(e){switch(e.searchParam.type){case"date":return m.createElement($p,{...e});case"number":case"quantity":return m.createElement(Kp,{...e});case"reference":return m.createElement(jp,{...e});case"string":case"token":case"uri":return m.createElement(_p,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function $p(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(vr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(dl(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(ul(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(il(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(pl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(ml(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(cl(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(xl(e.search,t))},"Year to date"),m.createElement(Jt,{...e}))}function Kp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Jt,{...e}))}function jp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(Jt,{...e}))}function _p(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(br,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Sr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(Jt,{...e}))}function Jt(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(yr,{size:14}),onClick:()=>e.onChange(ba(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(hr,{size:14}),onClick:()=>e.onChange(ba(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Wr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Zp,globalSchema as Yp}from"@medplum/core";function Fl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(ex(o,r));return t}function ex(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=Yp.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(s=>s.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Zp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ma=class extends Event{constructor(t){super("change");this.definition=t}},Fa=class extends Event{constructor(t){super("load");this.response=t}},uo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},ux=tx(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 dx(e){let{classes:o}=ux(),t=P(),[r,a]=Aa(!1),[n,f]=Aa(),{search:s,onLoad:l}=e,[i,u]=Aa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=ix(i);d.current=i;let c=s.total??"accurate",g=Ol(k=>{f(void 0),t.search(s.resourceType,lx({...s,total:c,fields:void 0}),k).then(W=>{u({...d.current,searchResponse:W}),l&&l(new Fa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,s,c,l]),y=Ol(()=>{u({...d.current,searchResponse:void 0}),g({cache:"reload"})},[g]);El(()=>{g()},[g]);function A(k,W){k.stopPropagation();let le=k.target.checked,pe={...d.current.selected};le?pe[W]=!0:delete pe[W],u({...d.current,selected:pe})}function v(k){k.stopPropagation();let Z=k.target.checked,le={},pe=d.current.searchResponse;Z&&pe?.entry&&pe.entry.forEach(qo=>{qo.resource?.id&&(le[qo.resource.id]=!0)}),u({...d.current,selected:le})}function B(){let k=d.current;if(!k.searchResponse?.entry||k.searchResponse.entry.length===0)return!1;for(let W of k.searchResponse.entry)if(W.resource?.id&&!k.selected[W.resource.id])return!1;return!0}function I(k){e.onChange&&e.onChange(new Ma(k))}function H(k,W){if(yt(k.target)||k.button===2)return;N(k);let Z=k.button===1||k.ctrlKey||k.metaKey;!Z&&e.onClick&&e.onClick(new uo(W,k)),Z&&e.onAuxClick&&e.onAuxClick(new uo(W,k))}function b(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(El(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&sx.types[e.search.resourceType]))return D.createElement($t,{style:{width:"100%",height:"100%"}},D.createElement(rx,null));let q=e.checkboxesEnabled,oe=Fl(s),me=s.resourceType,te=i.searchResponse,C=te?.entry?.map(k=>k.resource),R="subtle",Be="gray",ye=16,to=window.innerWidth<768;return D.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&D.createElement(Kt,{position:"apart",mb:"xl"},D.createElement(Kt,{spacing:2},D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(kr,{size:ye}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(Or,{size:ye}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(wr,{size:ye}),onClick:e.onNew},"New..."),!to&&b()&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(zr,{size:ye}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!to&&e.onDelete&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement($o,{size:ye}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!to&&e.onBulk&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(Cr,{size:ye}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),D.createElement(Kt,{spacing:2},te&&D.createElement(Ba,{size:"xs",color:"dimmed"},xx(s,te.total),"-",Ix(s,te.total)," of"," ",`${c==="estimate"?"~":""}${te.total?.toLocaleString()}`),D.createElement(ox,{title:"Refresh",onClick:y},D.createElement(qr,{size:"1.125rem"})))),D.createElement(nx,{className:o.table},D.createElement("thead",null,D.createElement("tr",null,q&&D.createElement("th",null,D.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:k=>v(k)})),oe.map(k=>D.createElement("th",{key:k.name},D.createElement(wl,{shadow:"md",width:240,position:"bottom-end"},D.createElement(wl.Target,null,D.createElement(fx,{className:o.control},D.createElement(Kt,{position:"apart",noWrap:!0},D.createElement(Ba,{weight:500,size:"sm"},ve(k.name)),D.createElement($t,{className:o.icon},D.createElement(xr,{size:14,stroke:1.5}))))),D.createElement(Ml,{search:e.search,searchParams:k.searchParams,onPrompt:(W,Z)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:Z})},onChange:W=>{I(W)}}))))),!e.hideFilters&&D.createElement("tr",null,q&&D.createElement("th",null),oe.map(k=>D.createElement("th",{key:k.name},k.searchParams&&D.createElement(cx,{resourceType:me,searchParams:k.searchParams,filters:e.search.filters}))))),D.createElement("tbody",null,C?.map(k=>k&&D.createElement("tr",{key:k.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>H(W,k),onAuxClick:W=>H(W,k)},q&&D.createElement("td",null,D.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${k.id}`,checked:!!i.selected[k.id],onChange:W=>A(W,k.id)})),oe.map(W=>D.createElement("td",{key:W.name},Cl(k,W))))))),C?.length===0&&D.createElement(Ke,null,D.createElement($t,{style:{height:150}},D.createElement(Ba,{size:"xl",color:"dimmed"},"No results"))),te?.total!==void 0&&te.total>0&&D.createElement($t,{m:"md",p:"md"},D.createElement(ax,{value:mx(s),total:px(s,te.total),onChange:k=>I(Il(s,k)),getControlProps:k=>{switch(k){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&D.createElement("div",{"data-testid":"search-error"},D.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),D.createElement(Sl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:k=>{I(k),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),D.createElement(Bl,{search:e.search,visible:d.current.filterEditorVisible,onOk:k=>{I(k),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),D.createElement(fl,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),D.createElement(Al,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ve(i.filterDialogSearchParam.code):"",resourceType:me,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:k=>{I(wo(e.search,k.code,k.operator,k.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var GM=D.memo(dx);function cx(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?D.createElement("span",null,"no filters"):D.createElement(D.Fragment,null,o.map(t=>D.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},nt(t.operator),"\xA0",D.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function mx(e){return Math.floor((e.offset??0)/(e.count??wa))+1}function px(e,o){let t=e.count??wa;return Math.ceil(o/t)}function xx(e,o){return Math.min(o,(e.offset??0)+1)}function Ix(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??wa))}function vx(e){let o=P(),[t,r]=jt(),[a,n]=jt(),{query:f,fields:s}=e,[l,i]=jt(),[u,d]=jt({}),c=Rl();c.current=l;let g=Rl({});g.current=u,Ll(()=>{n(void 0),o.graphql(f).then(i).catch(b=>n(Cx(b)))},[o,f]);function y(b,x){b.stopPropagation();let oe=b.target.checked,me={...g.current};oe?me[x]=!0:delete me[x],d(me)}function A(b){b.stopPropagation();let q=b.target.checked,oe={},me=c.current?.data.ResourceList;q&&me&&me.forEach(te=>{te.id&&(oe[te.id]=!0)}),d(oe)}function v(){let b=c.current?.data.ResourceList;if(!b||b.length===0)return!1;for(let x of b)if(x.id&&!g.current[x.id])return!1;return!0}function B(b,x){yt(b.target)||(N(b),b.button!==1&&e.onClick&&e.onClick(new uo(x,b)),b.button===1&&e.onAuxClick&&e.onAuxClick(new uo(x,b)))}if(Ll(()=>{o.requestSchema(e.resourceType).then(b=>{r({...b})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return ne.createElement(hx,null);let H=e.checkboxesEnabled;return ne.createElement("div",{onContextMenu:b=>N(b),"data-testid":"search-control"},ne.createElement(yx,null,ne.createElement("thead",null,ne.createElement("tr",null,H&&ne.createElement("th",null,ne.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:v(),onChange:b=>A(b)})),s.map(b=>ne.createElement("th",{key:b.name},b.name)))),ne.createElement("tbody",null,l?.data.ResourceList.map(b=>b&&ne.createElement("tr",{key:b.id,"data-testid":"search-control-row",onClick:x=>B(x,b),onAuxClick:x=>B(x,b)},H&&ne.createElement("td",null,ne.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${b.id}`,checked:!!u[b.id],onChange:x=>y(x,b.id)})),s.map(x=>ne.createElement("td",{key:x.name},ne.createElement(al,{propertyType:x.propertyType,path:x.fhirPath,resource:b}))))))),l?.data.ResourceList.length===0&&ne.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ne.createElement("div",{"data-testid":"search-error"},ne.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ne.createElement(gx,{onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}var YM=ne.memo(vx);import co from"react";function Ye(e){return co.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},co.createElement("title",null,"Medplum Logo"),co.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),co.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"}),co.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"}),co.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),co.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as Sx}from"@mantine/core";import Oa from"react";function Lo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Oa.createElement(Sx,{icon:Oa.createElement(ao,{size:16}),color:"red"},o.map(t=>Oa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as _t}from"@medplum/core";import bx,{useCallback as Px}from"react";function cF(e){let o=Px((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 bx.createElement(Ze,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:_t(t),sender:_t(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:_t(t),operator:_t(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Hl,Button as Dx,createStyles as kx,NativeSelect as Tx,Stack as Bx,TextInput as La}from"@mantine/core";import{getReferenceString as Ax}from"@medplum/core";import U,{useEffect as Nl,useRef as Vl,useState as it}from"react";var ql=kx(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 AF(e){let o=P(),t=X(e.value),[r,a]=it(void 0),[n,f]=it(),[s,l]=it(),[i,u]=it();function d(){l(void 0)}function c(){f(void 0)}let g=Vl();if(g.current=i,Nl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Nl(()=>(u(Lx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(A,v){u({...g.current,[A]:v})}return U.createElement("div",null,U.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},U.createElement(La,{label:"Plan Title",defaultValue:i.title,onChange:A=>y("title",A.currentTarget.value)}),U.createElement(Ul,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:A=>y("action",A)}),U.createElement(Dx,{type:"submit"},"Save")))}function Ul(e){let{classes:o}=ql(),t=Vl();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return U.createElement("div",{className:o.section},e.actions.map(f=>U.createElement("div",{key:f.id},U.createElement(Mx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),U.createElement("div",{className:o.bottomActions},U.createElement(Hl,{href:"#",onClick:f=>{N(f),a({id:Ql()})}},"Add action")))}function Mx(e){let{classes:o,cx:t}=ql(),{action:r}=e,a=Ex(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){N(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return U.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?U.createElement(wx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):U.createElement(Fx,{action:r,actionType:a}),U.createElement("div",{className:o.bottomActions},U.createElement(Hl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ra={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Fx(e){let{action:o,actionType:t}=e,[r,a]=Gl(o);return U.createElement("div",null,U.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&U.createElement("div",null,U.createElement(fo,{value:{reference:o.definitionCanonical}})),r&&U.createElement("div",null,U.createElement(xe,{property:Ra,propertyType:a,value:r})))}function wx(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return U.createElement(Bx,{spacing:"xl"},U.createElement(La,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),U.createElement(La,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),U.createElement(Tx,{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&&U.createElement(Ul,{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 U.createElement(Zt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return U.createElement(Zt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return U.createElement(Zt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return U.createElement(Zt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),U.createElement(Pe,{title:"Timing",description:"When the action should take place."},U.createElement(Ox,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Zt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return U.createElement(Lt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Ax(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Ox(e){let o=e.action,t="timing",[r,a]=Gl(o);return U.createElement(He,{property:Ra,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,Ra,n))}})}function Ex(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Gl(e){return be({type:"PlanDefinitionAction",value:e},"timing")}var Ea=1;function Ql(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ea=Math.max(Ea,o+1))}return e}return"id-"+Ea++}function Lx(e){return{...e,action:zl(e.action)}}function zl(e){if(e)return e.map(o=>({...o,id:Ql(o.id),action:zl(o.action)}))}import{Anchor as Te,Box as Qa,Button as oI,createStyles as tI,NativeSelect as rI,Space as aI,Textarea as nI,TextInput as tr,Title as fI}from"@mantine/core";import{globalSchema as lI,isResource as sI}from"@medplum/core";import S,{useEffect as Yl,useRef as iI,useState as or}from"react";import{Checkbox as qx,MultiSelect as Ux,NativeSelect as Gx,Radio as Kl,TextInput as ut,Textarea as Qx}from"@mantine/core";import{capitalize as Va,deepEquals as zx,formatCoding as qa,getTypedPropertyValue as qe,globalSchema as Wx,stringify as jl}from"@medplum/core";import Y from"react";import{evalFhirPathTyped as Rx,formatCoding as Nx,getTypedPropertyValue as Na}from"@medplum/core";var Yt=(B=>(B.group="group",B.display="display",B.question="question",B.boolean="boolean",B.decimal="decimal",B.integer="integer",B.date="date",B.dateTime="dateTime",B.time="time",B.string="string",B.text="text",B.url="url",B.choice="choice",B.openChoice="open-choice",B.attachment="attachment",B.reference="reference",B.quantity="quantity",B))(Yt||{});function Wl(e){return e.type==="choice"||e.type==="open-choice"}function Xl(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=$l(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=Vx(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Jl(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>Nx(f.valueCoding)===r||f[o]===r),n=Na({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function $l(e,o){if(!Array.isArray(e))return;let t=e.find(r=>r.linkId===o);if(t)return t.answer;for(let r of e)if(r.item){let a=$l(r.item,o);if(a)return a}}function Hx(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Rx(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function Vx(e,o,t){let r=o||[],a=Na({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Na({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(Hx(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function er(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(g=>g.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=Kx(d[0]?.answer??[],u,l),e.onChange({id:d[0].id,linkId:o.linkId,text:o.text,answer:c})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=Ga(e.allResponses,o,e.index,e.groupSequence)??qe({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Y.createElement(At,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Y.createElement(qx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Y.createElement(ut,{type:"number",step:"any",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Y.createElement(ut,{type:"number",step:1,id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Y.createElement(ut,{type:"date",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Y.createElement(Me,{name:n,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Y.createElement(ut,{type:"time",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Y.createElement(ut,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Y.createElement(Qx,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Y.createElement(St,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)});case"reference":return Y.createElement(To,{name:n,targetTypes:jx(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Y.createElement(De,{name:n,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return _x(o)?Y.createElement(Xx,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Y.createElement(Jx,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function Xx(e){let{name:o,item:t,initial:r}=e,a=qe({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=qe({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(Ha(l))}let f=Ga(e.allResponses,t,e.index,e.groupSequence)??qe({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=Zx(e.item),i=Yx(e.allResponses,t,e.groupSequence);return Y.createElement(Ux,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Ha(a)],onChange:u=>{let d=Jl(u,s,t);e.onChangeAnswer(d)}})}return Y.createElement(Gx,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=qe({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Va(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:(qa(f?.value)||f?.value)??Ha(a),data:n})}function Jx(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Y.createElement(Je,{elementDefinition:{binding:{valueSet:t.answerValueSet}},onChange:a}):Y.createElement($x,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function $x(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Wx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=qe({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],g=`${o}-option-${d}`,y=qe({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&jl(y)===jl(f)&&(l=g),s.push([g,y])}let i=Ga(e.allResponses,t,e.index,e.groupSequence),u=eI(s,i);return Y.createElement(Kl.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(g=>g[0]===d);if(c){let g=c[1],y="value"+Va(g.type);a({[y]:g.value})}}},s.map(([d,c])=>Y.createElement(Kl,{key:d,id:d,value:d,label:Y.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function Kx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function jx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function _x(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Zx(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=qe({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Va(t.type),a=(e.answerOption??[]).map(n=>({value:_l(n,r),label:_l(n,r)}));return{propertyName:r,data:a}}function _l(e,o){return qa(e.valueCoding)||e[o]?.toString()}function Ha(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ua(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Ua(r.item,o)));return t}function Zl(e){return qe({type:"QuestionnaireItemAnswer",value:e},"value")}function Ga(e,o,t=0,r=0){let n=Ua(e,o.linkId??"")[r]?.answer;return Zl(n?.[t]??{})}function Yx(e,o,t=0){let a=Ua(e,o.linkId??"")[t]?.answer;return a?a.map(f=>Zl(f)).map(f=>qa(f?.value)||f?.value):[]}function eI(e,o){return e.find(t=>zx(t[1].value,o?.value))?.[0]}var uI=tI(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:32,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}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function sw(e){let o=P(),t=X(e.questionnaire),[r,a]=or(),[n,f]=or(),[s,l]=or(),[i,u]=or();function d(){u(void 0)}function c(){l(void 0)}return Yl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Yl(()=>(f(pI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:S.createElement("div",null,S.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},S.createElement(es,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),S.createElement(oI,{type:"submit"},"Save")))}function es(e){let{classes:o,cx:t}=uI(),r=e.item,a=e.item,n=sI(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=iI();u.current=e.item;function d(x){N(x),e.setSelectedKey(e.item.id)}function c(x){N(x),e.setHoverKey(e.item.id)}function g(x){let q=u.current;e.onChange({...q,item:q.item?.map(oe=>oe.id===x.id?x:oe)})}function y(x){e.onChange({...e.item,item:[...e.item.item??[],x]})}function A(x){e.onChange({...e.item,item:e.item.item?.filter(q=>q!==x)})}function v(x,q){e.onChange({...u.current,[x]:q})}function B(x){e.onChange({...e.item,...x})}function I(x){e.onChange({...e.item,item:e.item.item?.map(q=>q===x?{...q,repeats:!q.repeats}:q)})}function H(x,q){let oe=gI(e.item.item,x,q);e.onChange({...e.item,item:oe})}let b=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return S.createElement("div",{"data-testid":a.linkId,className:b,onClick:d,onMouseOver:c},S.createElement("div",{className:o.questionBody},l?S.createElement(S.Fragment,null,n&&S.createElement(tr,{size:"xl",defaultValue:r.title,onChange:x=>v("title",x.currentTarget.value)}),!n&&S.createElement(nI,{autosize:!0,minRows:2,defaultValue:a.text,onChange:x=>v("text",x.currentTarget.value)}),a.type==="reference"&&S.createElement(mI,{item:a,onChange:x=>v("extension",x)}),Wl(a)&&S.createElement(dI,{item:a,onChange:x=>B(x)})):S.createElement(S.Fragment,null,r.title&&S.createElement(fI,null,r.title),a.text&&S.createElement("div",null,a.text),!f&&S.createElement(er,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((x,q)=>S.createElement("div",{key:x.id},S.createElement(es,{item:x,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:q===0,isLast:q===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:g,onRemove:()=>A(x),onRepeatable:I,onMoveUp:()=>H(q,-1),onMoveDown:()=>H(q,1)}))),!f&&S.createElement("div",{className:o.topActions},l?S.createElement(S.Fragment,null,S.createElement(tr,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:x=>v("linkId",x.currentTarget.value)}),!f&&S.createElement(rI,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:x=>v("type",x.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"}]})):S.createElement("div",null,s)),!n&&S.createElement(Qa,{className:o.movementActions},S.createElement(Qa,{className:o.columnAlignment},!e.isFirst&&S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveUp&&e.onMoveUp()}},S.createElement(gr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveDown&&e.onMoveDown()}},S.createElement(Ir,{"data-testid":"down-button",size:15,className:o.movementIcons})))),S.createElement("div",{className:o.bottomActions},f&&S.createElement(S.Fragment,null,S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),y({id:eo(),linkId:Xa("q"),type:"string",text:"Question"})}},"Add item"),S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),y({id:eo(),linkId:Xa("g"),type:"group",text:"Group"})}},"Add group")),n&&S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),y(II())}},"Add Page"),l&&!n&&S.createElement(S.Fragment,null,S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function dI(e){let o=lI.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.item.answerOption??[];return S.createElement("div",null,e.item.answerValueSet!==void 0?S.createElement(tr,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):S.createElement(cI,{options:t,property:o,item:e.item,onChange:e.onChange}),S.createElement(Qa,{display:"flex"},S.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:eo()}]})}},"Add choice"),S.createElement(aI,{w:"lg"}),S.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function cI(e){return S.createElement("div",null,e.options.map(o=>{let[t,r]=be({type:"QuestionnaireItemAnswerOption",value:o},"value");return S.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(He,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),S.createElement("div",null,S.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function mI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return S.createElement(S.Fragment,null,t.map(r=>S.createElement("div",{key:r.id},S.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(tr,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(l=>l.id===r.id),s=n[f].valueCodeableConcept?.coding?.[0]??[];s.display=a.target.value,s.code=a.target.value,e.onChange(n)}}))),S.createElement("div",null,S.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),S.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange([...o,{id:eo(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var za=1,Wa=1;function Xa(e){return e+za++}function eo(){return"id-"+Wa++}function pI(e){return{...e,id:e.id||eo(),item:os(e.item)}}function os(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Wa=Math.max(Wa,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(za=Math.max(za,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||eo(),item:os(o.item),answerOption:xI(o.answerOption)}))}function xI(e){if(e)return e.map(o=>({...o,id:o.id||eo()}))}function II(){return{id:eo(),linkId:Xa("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function gI(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Anchor as fs,Button as Ro,Group as hI,Stack as yI,Stepper as ts,Title as CI}from"@mantine/core";import{createReference as vI,getExtension as SI,getReferenceString as ls}from"@medplum/core";import w,{useEffect as rs,useState as No}from"react";function ss(e){let o=P(),t=o.getProfile(),[r,a]=No(),n=X(e.questionnaire),[f,s]=No(),[l,i]=No(0),u=BI(n?.item??[]),d=()=>i(y=>y>=u?y:y+1),c=()=>i(y=>y<=0?y:y-1);rs(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),rs(()=>{s(n?PI(n):void 0)},[n]);function g(y){let A=f?.item??[],B={resourceType:"QuestionnaireResponse",item:ds(A,y)};s(B)}return!r||!n?null:w.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:ls(n),subject:e.subject,source:vI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&w.createElement(CI,null,n.title),n.item&&w.createElement(is,{items:n.item??[],allResponses:f?.item??[],onChange:g,renderPages:u>1,activePage:l}),w.createElement(hI,{position:"right",mt:"xl"},w.createElement(bI,{activePage:l,numberOfPages:u,nextStep:d,prevStep:c,submitButtonText:e.submitButtonText})))}function is(e){let[o,t]=No(Ja(e.items));function r(n,f){let s=o.some(i=>i.id===n),l;s?l=o.map(i=>i.id===n?f:i):l=[...o,f],t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?w.createElement(ts.Step,{label:n.text,key:n.linkId},w.createElement(as,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):w.createElement(as,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?w.createElement(ts,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):w.createElement(yI,null,a)}function as(e){return Xl(e.item,e.allResponses)?e.item.type==="display"?w.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?w.createElement(ns,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):w.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},w.createElement(ns,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function ns(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(s=>s.linkId===o.linkId);e.onChange({id:FI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?w.createElement(AI,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):w.createElement(MI,{item:e.item,key:e.item.linkId},({index:r})=>w.createElement(er,{...e,index:r}))}function bI(e){return e.activePage===0&&e.numberOfPages<=0?w.createElement(Ro,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?w.createElement(w.Fragment,null,w.createElement(Ro,{onClick:e.prevStep},"Back"),w.createElement(Ro,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?w.createElement(w.Fragment,null,w.createElement(Ro,{onClick:e.nextStep},"Next")):w.createElement(w.Fragment,null,w.createElement(Ro,{onClick:e.prevStep},"Back"),w.createElement(Ro,{onClick:e.nextStep},"Next"))}function PI(e){return{resourceType:"QuestionnaireResponse",questionnaire:ls(e),item:Ja(e.item)}}function Ja(e){return e?.map(DI)??[]}function DI(e){return{id:us(),linkId:e.linkId,text:e.text,item:Ja(e.item),answer:e.initial?.map(TI)??[]}}var kI=1;function us(){return"id-"+kI++}function TI(e){return{...e}}function BI(e){return e.filter(t=>SI(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function AI(e){let[o,t]=No(wI(e.item,e.allResponses)),r=e.item;return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement("div",{key:n},w.createElement("h3",null,e.text),w.createElement(is,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&w.createElement(fs,{onClick:()=>t(a=>a+1)},"Add Group"))}function MI(e){let[o,t]=No(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement(w.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&w.createElement(fs,{onClick:()=>t(a=>a+1)},"Add Item"))}function FI(e,o){return e.length===0||e.length<o+1?us():e[o].id}function wI(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function OI(e,o){let t=ds(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function EI(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(OI(e[a],o[a])):o[a]&&t.push(o[a]);return t}function ds(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat(EI(a,n))}return t}import{ActionIcon as rr,Button as LI,createStyles as RI,Divider as NI,Group as dt,NativeSelect as $a,Stack as ar,Text as HI,TextInput as VI}from"@mantine/core";import{formatRange as cs,getCodeBySystem as qI}from"@medplum/core";import z,{useEffect as UI,useState as Ka}from"react";var GI=RI(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"}})),QI=["gender","age","gestationalAge","context","appliesTo","category"],zI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function Mw(e){e=Object.assign(zI,e);let o=e.definition,[t,r]=Ka([]),[a,n]=Ka(1),[f,s]=Ka(1);return UI(()=>{let y=JI(o,s);r($I(y.qualifiedInterval||[],n))},[o]),z.createElement($,{testid:"reference-range-editor",onSubmit:l},z.createElement(ar,null,t.map(y=>z.createElement(WI,{unit:jI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:g,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(rr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(po,null)),z.createElement(dt,{position:"right"},z.createElement(LI,{type:"submit"},"Save")));function l(){let y=t.flatMap(A=>A.intervals).filter(A=>!_I(A));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(A=>[...A,y])}function u(y){r(A=>A.filter(v=>v.id!==y.id))}function d(y,A){r(v=>{v=[...v];let B=v.find(H=>H.id===y),I=B?.intervals.findIndex(H=>H.id===A.id);return I!==void 0&&B?.intervals[I]&&(B.intervals[I]=A),v})}function c(y,A){A.id===void 0&&(A.id=`id-${f}`,s(v=>v+1)),r(v=>{v=[...v];let B=v.findIndex(I=>I.id===y);if(B!==-1){let I={...v[B]};A={...A,...I.filters},I.intervals=[...I.intervals,A],v[B]=I}return v})}function g(y,A){r(v=>{v=[...v];let B=v.find(I=>I.id===y);return B&&(B.intervals=B.intervals.filter(I=>I.id!==A.id)),v})}}function WI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=GI();return z.createElement(Ke,{"data-testid":o.id,className:r.section},z.createElement(ar,{spacing:"lg"},z.createElement(dt,{position:"right"},z.createElement(rr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{N(a),e.onRemoveGroup(o)}},z.createElement(ze,null))),z.createElement(XI,{intervalGroup:o,onChange:e.onChange}),z.createElement(NI,null),o.intervals.map(a=>z.createElement(ar,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(dt,null,z.createElement(VI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{N(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(rr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{N(n),e.onRemove(o.id,a)}},z.createElement(ze,null))),z.createElement(tt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(rr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(po,null))))}function XI(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(ar,{style:{maxWidth:"50%"}},z.createElement(dt,null,z.createElement($a,{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(dt,{spacing:"xs"},z.createElement(HI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(tt,{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($a,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement($a,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function JI(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 $I(e,o){let t=1,r={};for(let a of e){let n=KI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(QI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function KI(e){return[`gender=${e.gender}`,`age=${cs(e.age)}`,`gestationalAge=${cs(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function jI(e){return e&&(qI(e,"http://unitsofmeasure.org")||e.text)}function _I(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as ms,Grid as nr,Text as ZI}from"@mantine/core";import{formatDateTime as YI,getReferenceString as eg}from"@medplum/core";import he,{useEffect as og,useState as ps}from"react";function qw(e){let o=P(),t=X(e.value),[r,a]=ps(!1),[n,f]=ps();if(og(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return he.createElement(nr,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,g=d?.output?.[0]?.valueReference;return he.createElement(he.Fragment,{key:`action-${u}`},he.createElement(nr.Col,{span:1,p:"md"},d?.status==="completed"?he.createElement(Pr,null):he.createElement(Gr,{color:"gray"})),he.createElement(nr.Col,{span:9,p:"xs"},he.createElement(ZI,{weight:500},i.title),i.description&&he.createElement("div",null,i.description),he.createElement("div",null,"Last edited by\xA0",he.createElement(Le,{value:d?.meta?.author}),"\xA0on\xA0",YI(d?.meta?.lastUpdated)),he.createElement("div",null,"Status: ",he.createElement(Ht,{status:d?.status||"unknown"}))),he.createElement(nr.Col,{span:2,p:"md"},c&&!g&&he.createElement(ms,{onClick:()=>e.onStart(d,c)},"Start"),c&&g&&he.createElement(ms,{onClick:()=>e.onEdit(d,c,g)},"Edit")))}));function s(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===eg(u.resource))return u.resource}}import{createStyles as sg}from"@mantine/core";import Se,{useEffect as ig,useState as ug}from"react";import{stringify as ng}from"@medplum/core";function fr(e,o){let t=tg(e,o);return rg(t,e,o)}function tg(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,d=u+1,c=u-1,g=s[d],y=s[c],A,v=0;i===-l||i!==l&&y.i<g.i?(v=g.i,A=g):(v=y.i+1,A=y),s[c]=void 0;let B=v-i,I={i:v,j:B,prev:ag(A),snake:!1};for(;v<t&&B<r&&e[v]===o[B];)v++,B++;if(v>I.i&&(I={i:v,j:B,prev:I,snake:!0}),s[u]=I,v>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function rg(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 s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function ag(e){return e&&!e.snake&&e.prev?e.prev:e}function xs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:ng(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 fg(t,o),lg(t),t}function fg(e,o){for(let t=1;t<o.length;t++){let r=fr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function lg(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 dg=sg(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 Zw(e){let{classes:o}=dg(),t=P(),[r,a]=ug(e.history);if(ig(()=>{!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 Se.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=xs(r);return Se.createElement("div",{className:o.container},Se.createElement("table",{className:o.root},Se.createElement("tbody",null,f.map((s,l)=>Se.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&Se.createElement(Se.Fragment,null,Se.createElement("td",{className:o.author,rowSpan:s.span},Se.createElement(je,{value:s.meta.author,link:!0})),Se.createElement("td",{className:o.dateTime,rowSpan:s.span},Se.createElement(se,{to:cg(n,s.meta.versionId)},mg(s.meta.lastUpdated)))),Se.createElement("td",{className:o.lineNumber},l+1),Se.createElement("td",{className:o.line},Se.createElement("pre",{className:o.pre},s.value)))))))}function cg(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function mg(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Ho(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Ho(r,"month");let a=Math.floor(o/86400);if(a>0)return Ho(a,"day");let n=Math.floor(o/3600);if(n>0)return Ho(n,"hour");let f=Math.floor(o/60);return f>0?Ho(f,"minute"):Ho(o,"second")}function Ho(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as pg}from"@mantine/core";import{stringify as Is}from"@medplum/core";import oo from"react";var xg=pg(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function nO(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Is(o,!0).match(/[^\r\n]+/g),a=Is(t,!0).match(/[^\r\n]+/g),n=fr(r,a);return oo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>oo.createElement(Ig,{key:"delta"+s,delta:f})))}function Ig(e){let{classes:o}=xg();return oo.createElement(oo.Fragment,null,"...",oo.createElement("br",null),e.delta.original.lines.length>0&&oo.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
- `)),e.delta.revised.lines.length>0&&oo.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
- `)),"...",oo.createElement("br",null))}import{Table as gg}from"@mantine/core";import{formatDateTime as hg,normalizeErrorString as yg}from"@medplum/core";import ce,{useEffect as Cg,useState as vg}from"react";function mO(e){let o=P(),[t,r]=vg(e.history);return Cg(()=>{!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?ce.createElement(gg,{withBorder:!0,withColumnBorders:!0},ce.createElement("thead",null,ce.createElement("tr",null,ce.createElement("th",null,"Author"),ce.createElement("th",null,"Date"),ce.createElement("th",null,"Version"))),ce.createElement("tbody",null,t.entry?.map((a,n)=>ce.createElement(Sg,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Sg(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(je,{value:t.meta?.author,link:!0})),ce.createElement("td",null,hg(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:bg(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},yg(o?.outcome)))}function bg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as Pg,createStyles as Dg,Stack as kg,Text as Tg}from"@mantine/core";import{getReferenceString as Bg}from"@medplum/core";import ee,{useEffect as Ag,useRef as Mg,useState as ct}from"react";var Fg=Dg(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function PO(e){let{classes:o}=Fg(),t=P(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=ct(),s=Mg();s.current=n;let[l,i]=ct(da()),[u,d]=ct(),[c,g]=ct(),[y,A]=ct();if(Ag(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Bg(r)],["start","gt"+wg(l)],["start","lt"+Og(l)]])).then(f).catch(console.log)):f(void 0)},[t,r,l]),!r||!n||!a)return null;let v=r.actor?.[0];return ee.createElement("div",{className:o.container,"data-testid":"scheduler"},ee.createElement("div",{className:o.info},v&&ee.createElement(Ce,{value:v,size:"xl"}),v&&ee.createElement(Tg,{size:"xl",weight:500},ee.createElement(Le,{value:v})),ee.createElement("p",null,"1 hour"),u&&ee.createElement("p",null,u.toLocaleDateString()),c&&ee.createElement("p",null,gs(new Date(c.start)))),ee.createElement("div",{className:o.selection},!u&&ee.createElement("div",null,ee.createElement("h3",null,"Select date"),ee.createElement(Rf,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(kg,null,n.map(B=>{let I=new Date(B.start);return I.getTime()>u.getTime()&&I.getTime()<u.getTime()+24*3600*1e3&&ee.createElement("div",{key:B.id},ee.createElement(Pg,{variant:"outline",style:{width:150},onClick:()=>g(B)},gs(I)))}))),u&&c&&!y&&ee.createElement(ss,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&y&&ee.createElement("div",null,ee.createElement("h3",null,"You're all set!"),ee.createElement("p",null,"Check your email for a calendar invite."))))}function wg(e){return hs(e.getTime())}function Og(e){return hs(e.getTime()+31*24*60*60*1e3)}function hs(e){return new Date(Math.max(Date.now(),e)).toISOString()}function gs(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as lr}from"@medplum/core";import Eg from"react";function FO(e){return Eg.createElement(Ze,{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:[lr(o)],subject:o.subject,sender:lr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[lr(o)],subject:o.subject,operator:lr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as oh}from"@medplum/core";import mr,{useEffect as th,useState as ks}from"react";import{Anchor as ys,Button as Lg,Center as Rg,Group as Ng,Stack as Hg,Text as Vg,TextInput as qg,Title as Ug}from"@mantine/core";import{normalizeOperationOutcome as Gg}from"@medplum/core";import Fe,{useState as Qg}from"react";function sr(e){let o=P(),[t,r]=Qg();return Fe.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(Gg(n))}}},Fe.createElement(Rg,{sx:{flexDirection:"column"}},Fe.createElement(Ye,{size:32}),Fe.createElement(Ug,null,"Create project")),Fe.createElement(Hg,{spacing:"xl"},Fe.createElement(qg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:Ie(t,"firstName")}),Fe.createElement(Vg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Fe.createElement(ys,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Fe.createElement(ys,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Fe.createElement(Ng,{position:"right",mt:"xl",noWrap:!0},Fe.createElement(Lg,{type:"submit"},"Create project")))}import{Anchor as cr,Button as Jg,Center as $g,Checkbox as Kg,Divider as jg,Group as Ss,PasswordInput as _g,Stack as Zg,Text as bs,TextInput as _a}from"@mantine/core";import{normalizeOperationOutcome as Ps}from"@medplum/core";import _,{useEffect as Yg,useState as eh}from"react";import zg,{useEffect as Wg,useRef as Xg,useState as ja}from"react";function ir(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 ur(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=Xg(null),[n,f]=ja(typeof google<"u"),[s,l]=ja(!1),[i,u]=ja(!1);return Wg(()=>{if(typeof google>"u"){ir("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?zg.createElement("div",{ref:a}):null}function dr(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 Cs(e){typeof grecaptcha>"u"&&ir("https://www.google.com/recaptcha/api.js?render="+e)}function vs(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function Ds(e){let o=dr(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=eh(),f=Mt(a,void 0);return Yg(()=>{t&&Cs(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await vs(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(Ps(l))}}},_.createElement($g,{sx:{flexDirection:"column"}},e.children),_.createElement(Lo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(Ss,{position:"center",p:"xl",style:{height:70}},_.createElement(ur,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(Ps(l))}}})),_.createElement(jg,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Zg,{spacing:"xl"},_.createElement(_a,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:Ie(a,"firstName")}),_.createElement(_a,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:Ie(a,"lastName")}),_.createElement(_a,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:Ie(a,"email")}),_.createElement(_g,{name:"password",label:"Password",autoComplete:"off",required:!0,error:Ie(a,"password")}),_.createElement(bs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(cr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(bs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(cr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(Ss,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Kg,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Jg,{type:"submit"},"Create account")))}function p0(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=P(),[l,i]=ks(void 0),[u,d]=ks();th(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(g=>s.processCode(g.code)).then(()=>f()).catch(g=>d(oh(g)))},[s,o,t,l,f]);function c(g){g.code?s.processCode(g.code).then(()=>f()).catch(console.log):g.login&&i(g.login)}return mr.createElement(Ut,{width:450},u&&mr.createElement("pre",null,JSON.stringify(u,null,2)),!l&&mr.createElement(Ds,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&mr.createElement(sr,{login:l,handleAuthResponse:c}))}import{showNotification as Hs}from"@mantine/notifications";import{normalizeErrorString as Vs}from"@medplum/core";import mo,{useCallback as Ya,useEffect as wh,useState as en}from"react";import{Anchor as Ts,Button as Bs,Center as As,Checkbox as rh,Divider as ah,Group as Za,PasswordInput as nh,Stack as fh,TextInput as lh}from"@mantine/core";import{normalizeOperationOutcome as sh}from"@medplum/core";import j,{useCallback as pr,useState as Ms}from"react";function Fs(e){let[o,t]=Ms();return o?j.createElement(uh,{email:o,...e}):j.createElement(ih,{setEmail:t,...e})}function ih(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=P(),l=!e.disableGoogleAuth&&dr(e.googleClientId),i=pr(async c=>{if(!c.authorizeUrl)return!1;let g=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",g),window.location.assign(y.toString()),!0},[s,f]),u=pr(async c=>{let g=await s.post("auth/method",{email:c.email});await i(g)||o(c.email)},[s,i,o]),d=pr(async c=>{let g=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(g)||r(g)},[s,f,i,r]);return j.createElement($,{style:{maxWidth:400},onSubmit:u},j.createElement(As,{sx:{flexDirection:"column"}},a),l&&j.createElement(j.Fragment,null,j.createElement(Za,{position:"center",p:"xl",style:{height:70}},j.createElement(ur,{googleClientId:l,handleGoogleCredential:d})),!n&&j.createElement(ah,{label:"or",labelPosition:"center",my:"lg"})),!n&&j.createElement(lh,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),j.createElement(Za,{position:"apart",mt:"xl",spacing:0,noWrap:!0},j.createElement("div",null,t&&j.createElement(Ts,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&j.createElement(Bs,{type:"submit"},"Next")))}function uh(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,s]=Ms(),l=Mt(f,void 0),i=pr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(sh(d)))},[n,a,t]);return j.createElement($,{style:{maxWidth:400},onSubmit:i},j.createElement(As,{sx:{flexDirection:"column"}},r),j.createElement(Lo,{issues:l}),j.createElement(fh,{spacing:"xl"},j.createElement(nh,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:Ie(f,"password")})),j.createElement(Za,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&j.createElement(Ts,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),j.createElement(rh,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),j.createElement(Bs,{type:"submit"},"Sign in")))}import{Avatar as dh,Center as ch,Group as mh,Stack as ph,Text as ws,Title as xh,UnstyledButton as Ih}from"@mantine/core";import{normalizeOperationOutcome as gh}from"@medplum/core";import we,{useState as hh}from"react";function Os(e){let o=P(),[t,r]=hh();return we.createElement(ph,null,we.createElement(ch,{sx:{flexDirection:"column"}},we.createElement(Ye,{size:32}),we.createElement(xh,{order:3},"Choose profile")),we.createElement(Lo,{outcome:t}),e.memberships.map(a=>we.createElement(Ih,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(gh(n)))}},we.createElement(mh,null,we.createElement(dh,{radius:"xl"}),we.createElement("div",{style:{flex:1}},we.createElement(ws,{size:"sm",weight:500},a.profile?.display),we.createElement(ws,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as yh,Center as Ch,Checkbox as vh,Group as Sh,Stack as Es,Title as bh}from"@mantine/core";import Ue from"react";function Ls(e){let o=P();return Ue.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ue.createElement(Es,null,Ue.createElement(Ch,{sx:{flexDirection:"column"}},Ue.createElement(Ye,{size:32}),Ue.createElement(bh,null,"Choose scope")),Ue.createElement(Es,null,(e.scope??"openid").split(" ").map(t=>Ue.createElement(vh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ue.createElement(Sh,{position:"right",mt:"xl"},Ue.createElement(yh,{type:"submit"},"Set scope"))))}import{Alert as Ph,Button as Dh,Center as kh,Group as Th,Stack as Rs,TextInput as Bh,Title as Ah}from"@mantine/core";import{normalizeErrorString as Mh}from"@medplum/core";import Oe,{useState as Fh}from"react";function Ns(e){let o=P(),[t,r]=Fh(void 0);return Oe.createElement($,{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(Mh(n)))}},Oe.createElement(Rs,null,Oe.createElement(kh,{sx:{flexDirection:"column"}},Oe.createElement(Ye,{size:32}),Oe.createElement(Ah,null,"Enter MFA code")),t&&Oe.createElement(Ph,{icon:Oe.createElement(ao,{size:16}),title:"Error",color:"red"},t),Oe.createElement(Rs,null,Oe.createElement(Bh,{name:"token",label:"MFA code",required:!0})),Oe.createElement(Th,{position:"right",mt:"xl"},Oe.createElement(Dh,{type:"submit"},"Submit code"))))}function u1(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=P(),[i,u]=en(void 0),[d,c]=en(!1),[g,y]=en(void 0),A=Ya(I=>{f?f(I):l.processCode(I).then(()=>{r&&r()}).catch(H=>Hs({color:"red",message:Vs(H)}))},[l,f,r]),v=Ya(I=>{c(!!I.mfaRequired),I.login&&u(I.login),I.memberships&&y(I.memberships),I.code&&(t?y(void 0):A(I.code))},[t,A]),B=Ya(I=>{A(I.code)},[A]);return wh(()=>{o&&!i&&l.get("auth/login/"+o).then(v).catch(I=>Hs({color:"red",message:Vs(I)}))},[l,o,i,v]),mo.createElement(Ut,{width:450},(()=>i?d?mo.createElement(Ns,{login:i,handleAuthResponse:v}):g?mo.createElement(Os,{login:i,memberships:g,handleAuthResponse:v}):e.projectId==="new"?mo.createElement(sr,{login:i,handleAuthResponse:v}):e.chooseScopes?mo.createElement(Ls,{login:i,scope:e.scope,handleAuthResponse:B}):mo.createElement("div",null,"Success"):mo.createElement(Fs,{onForgotPassword:a,onRegister:n,handleAuthResponse:v,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}export{tn as AddressDisplay,fn as AddressInput,un as AnnotationInput,gb as AppShell,So as AsyncAutocomplete,Vn as AttachmentArrayDisplay,Un as AttachmentArrayInput,bo as AttachmentButton,Ee as AttachmentDisplay,St as AttachmentInput,Zo as BackboneElementDisplay,ot as BackboneElementInput,Rf as CalendarInput,At as CheckboxFormSection,vt as CodeInput,Do as CodeableConceptDisplay,lf as CodeableConceptInput,Jn as CodingDisplay,sf as CodingInput,Kn as ContactDetailDisplay,df as ContactDetailInput,Pt as ContactPointDisplay,wt as ContactPointInput,Ke as Container,Me as DateTimeInput,tA as DefaultResourceTimeline,Qn as DescriptionList,zn as DescriptionListEntry,xa as DiagnosticReportDisplay,Ut as Document,Vc as ElementDefinitionInputSelector,Of as ElementDefinitionTypeInput,pA as EncounterTimeline,ho as ErrorBoundary,vx as FhirPathTable,$ as Form,Pe as FormSection,On as Header,ht as HumanNameDisplay,pf as HumanNameInput,jn as IdentifierDisplay,If as IdentifierInput,Jr as Loading,Ye as Logo,se as MedplumLink,Uh as MedplumProvider,YM as MemoizedFhirPathTable,GM as MemoizedSearchControl,Zn as MoneyDisplay,gf as MoneyInput,Hn as Navbar,bm as ObservationTable,Lo as OperationOutcomeAlert,Ao as Panel,cF as PatientTimeline,AF as PlanDefinitionBuilder,_o as QuantityDisplay,De as QuantityInput,sw as QuestionnaireBuilder,ss as QuestionnaireForm,Yt as QuestionnaireItemType,ns as QuestionnaireRepeatWrapper,Dt as RangeDisplay,tt as RangeInput,fo as ReferenceDisplay,To as ReferenceInput,Mw as ReferenceRangeEditor,WI as ReferenceRangeGroupEditor,p0 as RegisterForm,qw as RequestGroupDisplay,tf as ResourceArrayDisplay,Tf as ResourceArrayInput,Ce as ResourceAvatar,je as ResourceBadge,Zw as ResourceBlame,nO as ResourceDiff,xD as ResourceForm,mO as ResourceHistoryTable,Lt as ResourceInput,Le as ResourceName,xe as ResourcePropertyDisplay,He as ResourcePropertyInput,Ia as ResourceTable,Ze as ResourceTimeline,PO as Scheduler,Ma as SearchChangeEvent,uo as SearchClickEvent,dx as SearchControl,Sl as SearchFieldEditor,Bl as SearchFilterEditor,Fa as SearchLoadEvent,FO as ServiceRequestTimeline,u1 as SignInForm,Ht as StatusBadge,Kf as Timeline,_e as TimelineItem,wf as TimingInput,Sa as addDateFilterBetween,FA as addField,wo as addFilter,cl as addLastMonthFilter,ba as addMissingFilter,pl as addNextMonthFilter,ml as addThisMonthFilter,ul as addTodayFilter,dl as addTomorrowFilter,xl as addYearToDateFilter,il as addYesterdayFilter,ve as buildFieldNameString,MA as clearFilters,zt as clearFiltersOnField,Ld as convertIsoToLocal,Rd as convertLocalToIso,ir as createScriptTag,sl as deleteFilter,Ie as getErrorsForInput,Mt as getIssuesForExpression,$c as getMonthString,Jl as getNewMultiSelectValues,nt as getOpString,vs as getRecaptcha,yl as getSearchOperators,gl as getSortField,da as getStartMonth,mg as getTimeString,be as getValueAndType,Cs as initRecaptcha,Wl as isChoiceQuestion,Xl as isQuestionEnabled,hl as isSortDescending,En as parseForm,Cl as renderValue,at as setFilters,bp as setOffset,Il as setPage,et as setPropertyValue,Pa as setSort,Zf as sortByDateAndPriority,wA as toggleSort,P as useMedplum,Qo as useMedplumContext,Qe as useMedplumNavigate,pt as useMedplumProfile,X as useResource};
64
+ }`.replace(/\s+/g," ")}function ji(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),Zi(_i(t),o).slice(0,5)}function _i(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 Zi(e,o){return e.sort((t,r)=>Mn(r,o)-Mn(t,o))}function Mn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,wn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,wn(Gi(r),o));return t}function wn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var nu=eu(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 Nn(e){let o=zo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=nu(),[l,i]=au(!1);return U.createElement(ou,{height:60,p:8,style:{zIndex:101}},U.createElement(vt,{position:"apart"},U.createElement(vt,{spacing:"xs"},U.createElement(Ln,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&U.createElement(En,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(Ne,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},U.createElement(Ne.Target,null,U.createElement(Ln,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},U.createElement(vt,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement(jo,{size:"sm",className:f.userName},ru(r?.name?.[0])),U.createElement(Ar,{size:12,stroke:1.5})))),U.createElement(Ne.Dropdown,null,U.createElement(tu,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(Ct,{value:o.profile?.name?.[0]}),U.createElement(jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(Ne.Divider,null),n.map(u=>u.profile.reference!==Rn(o.profile)&&U.createElement(Ne.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(vt,null,U.createElement(Yi,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(jo,{size:"sm",weight:500},u.profile.display),U.createElement(jo,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(Ne.Divider,null),U.createElement(Ne.Item,{icon:U.createElement(Jr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(Ne.Item,{icon:U.createElement(Io,{size:14,stroke:1.5}),onClick:()=>a(`/${Rn(r)}`)},"Account settings"),U.createElement(Ne.Item,{icon:U.createElement(Vr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Fu,createStyles as Mu,Navbar as ea,ScrollArea as wu,Space as Ou,Text as Eu}from"@mantine/core";import ne,{useState as Lu}from"react";import{Button as iu,Group as uu,Modal as du,NativeSelect as cu,Stack as mu,TextInput as pu}from"@mantine/core";import{showNotification as Vn}from"@mantine/notifications";import{deepClone as xu,normalizeErrorString as Iu}from"@medplum/core";import Xe from"react";import su from"react";function Hn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?fu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&lu(o,t);return o}function fu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function lu(e,o){e[o.name]=o.value}function $(e){return su.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Hn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function qn(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=xu(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Vn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Vn({color:"red",message:Iu(u)})})}return Xe.createElement(du,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement($,{onSubmit:r},Xe.createElement(mu,null,Xe.createElement(gu,{config:t}),Xe.createElement(pu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Xe.createElement(uu,{position:"right"},Xe.createElement(iu,{mt:"sm",type:"submit"},"OK")))))}function gu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(cu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import ku,{useCallback as Bu,useState as Au}from"react";import bu,{useState as Pu}from"react";import hu,{useCallback as Cu}from"react";function Yr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function yu(e){return typeof e.display=="string"?e.display:Yr(e)}function vu(e){return{value:Yr(e),label:yu(e),resource:e}}function Su(e){return{code:e,display:e}}function So(e){let o=S(),{binding:t,creatable:r,clearable:a,...n}=e,f=Cu(async(s,l)=>{if(!t)return[];let u=(await o.searchValueSet(t,s,{signal:l})).expansion?.contains,d=[];for(let c of u)c.code&&!d.some(g=>g.code===c.code)&&d.push(c);return d},[o,t]);return hu.createElement(vo,{...n,creatable:r??!0,clearable:a??!0,toKey:Yr,toOption:vu,loadOptions:f,onCreate:Su,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function St(e){let[o,t]=Pu(e.defaultValue);function r(a){let n=a[0],f=Tu(n);t(f),e.onChange&&e.onChange(f)}return bu.createElement(So,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Du(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Du(e){return e?{code:e}:void 0}function Tu(e){return e?.code}function bo(e){let[o,t]=Au(e.defaultValue),r=e.onChange,a=Bu(n=>{t(n),r&&r(n)},[r]);return ku.createElement(St,{"data-autofocus":e.autoFocus,"data-testid":e.testId,defaultValue:o,onChange:a,name:e.name,placeholder:e.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Gn=Mu(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 Un(e){let{classes:o}=Gn(),t=Qe(),r=Hu(e.pathname,e.searchParams,e.menus),[a,n]=Lu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return ne.createElement(ne.Fragment,null,ne.createElement(ea,{width:{sm:250},p:"xs"},ne.createElement(wu,null,!e.resourceTypeSearchDisabled&&ne.createElement(ea.Section,{mb:"sm"},ne.createElement(bo,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),ne.createElement(ea.Section,{grow:!0},e.menus?.map(l=>ne.createElement(ne.Fragment,{key:`menu-${l.title}`},ne.createElement(Eu,{className:o.menuTitle},l.title),l.links?.map(i=>ne.createElement(Ru,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},ne.createElement(Nu,{to:i.href,icon:i.icon}),ne.createElement("span",null,i.label))))),e.displayAddBookmark&&ne.createElement(Fu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:ne.createElement(Qr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&ne.createElement(qn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Ru(e){let{classes:o,cx:t}=Gn();return ne.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function Nu(e){return e.icon?e.icon:ne.createElement(Ou,{w:30})}function Hu(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 s=Vu(e,o,f.href);s>a&&(a=s,r=f)}return r}function Vu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function Bb(e){let o=Gu(),[t,r]=Qu(localStorage.navbarOpen==="true"),a=S(),n=xt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ro.createElement(_r,null):ro.createElement(qu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ro.createElement(Nn,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ro.createElement(Un,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0},ro.createElement(go,{key:`${e.pathname}?${e.searchParams?.toString()}`},ro.createElement(Uu,{fallback:ro.createElement(_r,null)},e.children)))}import oa from"react";import{Anchor as zu}from"@mantine/core";import Je from"react";function Ee(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?Je.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&Je.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&Je.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Je.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&Je.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Je.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Je.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Je.createElement(zu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Qn(e){return oa.createElement("div",null,e.values?.map((o,t)=>oa.createElement("div",{key:"attatchment-"+t},oa.createElement(Ee,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as zn}from"@mantine/core";import ie,{useRef as Xu,useState as Ju}from"react";import ta,{useRef as Wu}from"react";function Po(e){let o=S(),t=Wu(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return ta.createElement(ta.Fragment,null,ta.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Wn(e){let[o,t]=Ju(e.defaultValue??[]),r=Xu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Ee,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(zn,{title:"Remove",size:"sm",onClick:s=>{H(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(ze,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(zn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Xo,{size:16})))))))}import{Button as Xn}from"@mantine/core";import Do,{useState as $u}from"react";function bt(e){let[o,t]=$u(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Ee,{value:o,maxWidth:200}),Do.createElement(Xn,{onClick:a=>{H(a),r(void 0)}},"Remove")):Do.createElement(Po,{onUpload:r},a=>Do.createElement(Xn,{...a},"Upload..."))}import{normalizeOperationOutcome as kd}from"@medplum/core";import Mt,{useEffect as Bd,useState as tf}from"react";import Jn from"react";import{Container as Ku,createStyles as ju}from"@mantine/core";import _u from"react";var Zu=ju(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function $e(e){let{children:o,...t}=e,{classes:r}=Zu();return _u.createElement(Ku,{className:r.root,...t},o)}import{createStyles as Yu,Paper as ed,useComponentDefaultProps as od}from"@mantine/core";import td from"react";var rd=Yu((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%"}}})),ad={shadow:"xs",radius:"md",withBorder:!0};function To(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=od("Panel",ad,e),{classes:s,cx:l}=rd({width:r,fill:a},{name:"Panel",unstyled:n});return td.createElement(ed,{className:l(s.paper,o),...f},t)}function Pt(e){let{children:o,...t}=e;return Jn.createElement($e,null,Jn.createElement(To,{...t},o))}import{Anchor as Kn,Button as nd,Center as fd,Group as ld,Stack as sd,Text as id,TextInput as ud,Title as dd}from"@mantine/core";import{normalizeOperationOutcome as cd}from"@medplum/core";import Ae,{useState as md}from"react";import ao from"react";function Ke(e){return ao.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},ao.createElement("title",null,"Medplum Logo"),ao.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),ao.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),ao.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),ao.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),ao.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function pe(e,o){return e?.issue?.filter(t=>$n(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function Dt(e,o){return e?.issue?.filter(t=>$n(t.expression?.[0],o))}function $n(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 Tt(e){let o=S(),[t,r]=md();return Ae.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(cd(n))}}},Ae.createElement(fd,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(dd,null,"Create project")),Ae.createElement(sd,{spacing:"xl"},Ae.createElement(ud,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:pe(t,"firstName")}),Ae.createElement(id,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(Kn,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(Kn,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(ld,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(nd,{type:"submit"},"Create project")))}import{Anchor as Ft,Button as Cd,Center as yd,Checkbox as vd,Divider as Sd,Group as Zn,PasswordInput as bd,Stack as Pd,Text as Yn,TextInput as na}from"@mantine/core";import{normalizeOperationOutcome as ef}from"@medplum/core";import Z,{useEffect as Dd,useState as Td}from"react";import pd,{useEffect as xd,useRef as Id,useState as ra}from"react";function kt(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 Bt(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=Id(null),[n,f]=ra(typeof google<"u"),[s,l]=ra(!1),[i,u]=ra(!1);return xd(()=>{if(typeof google>"u"){kt("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?pd.createElement("div",{ref:a}):null}function At(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__"}}import{Alert as gd}from"@mantine/core";import{operationOutcomeIssueToString as hd}from"@medplum/core";import aa from"react";function ko(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:aa.createElement(gd,{icon:aa.createElement(to,{size:16}),color:"red"},o.map(t=>aa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},hd(t))))}function jn(e){typeof grecaptcha>"u"&&kt("https://www.google.com/recaptcha/api.js?render="+e)}function _n(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function of(e){let o=At(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=Td(),f=Dt(a,void 0);return Dd(()=>{t&&jn(t)},[t]),Z.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await _n(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(ef(l))}}},Z.createElement(yd,{sx:{flexDirection:"column"}},e.children),Z.createElement(ko,{issues:f}),o&&Z.createElement(Z.Fragment,null,Z.createElement(Zn,{position:"center",p:"xl",style:{height:70}},Z.createElement(Bt,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(ef(l))}}})),Z.createElement(Sd,{label:"or",labelPosition:"center",my:"lg"})),Z.createElement(Pd,{spacing:"xl"},Z.createElement(na,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:pe(a,"firstName")}),Z.createElement(na,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:pe(a,"lastName")}),Z.createElement(na,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:pe(a,"email")}),Z.createElement(bd,{name:"password",label:"Password",autoComplete:"off",required:!0,error:pe(a,"password")}),Z.createElement(Yn,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Z.createElement(Ft,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Z.createElement(Ft,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),Z.createElement(Yn,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",Z.createElement(Ft,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",Z.createElement(Ft,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),Z.createElement(Zn,{position:"apart",mt:"xl",noWrap:!0},Z.createElement(vd,{name:"remember",label:"Remember me",size:"xs"}),Z.createElement(Cd,{type:"submit"},"Create account")))}function rD(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=S(),[l,i]=tf(),[u,d]=tf();Bd(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(g=>s.processCode(g.code)).then(()=>f()).catch(g=>d(kd(g)))},[s,o,t,l,f]);function c(g){g.code?s.processCode(g.code).then(()=>f()).catch(console.log):g.login&&i(g.login)}return Mt.createElement(Pt,{width:450},u&&Mt.createElement("pre",null,JSON.stringify(u,null,2)),!l&&Mt.createElement(of,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&Mt.createElement(Tt,{login:l,handleAuthResponse:c}))}import{showNotification as xf}from"@mantine/notifications";import{normalizeErrorString as If}from"@medplum/core";import no,{useCallback as la,useEffect as ac,useState as sa}from"react";import{Anchor as rf,Button as af,Center as nf,Checkbox as Ad,Divider as Fd,Group as fa,PasswordInput as Md,Stack as wd,TextInput as Od}from"@mantine/core";import{normalizeOperationOutcome as Ed}from"@medplum/core";import K,{useCallback as wt,useState as ff}from"react";function lf(e){let[o,t]=ff();return o?K.createElement(Rd,{email:o,...e}):K.createElement(Ld,{setEmail:t,...e})}function Ld(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=S(),l=!e.disableGoogleAuth&&At(e.googleClientId),i=wt(async c=>{if(!c.authorizeUrl)return!1;let g=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),v=new URL(c.authorizeUrl);return v.searchParams.set("state",g),window.location.assign(v.toString()),!0},[s,f]),u=wt(async c=>{let g=await s.post("auth/method",{email:c.email});await i(g)||o(c.email)},[s,i,o]),d=wt(async c=>{let g=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(g)||r(g)},[s,f,i,r]);return K.createElement($,{style:{maxWidth:400},onSubmit:u},K.createElement(nf,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(fa,{position:"center",p:"xl",style:{height:70}},K.createElement(Bt,{googleClientId:l,handleGoogleCredential:d})),!n&&K.createElement(Fd,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Od,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(fa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(rf,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(af,{type:"submit"},"Next")))}function Rd(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,s]=ff(),l=Dt(f,void 0),i=wt(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(Ed(d)))},[n,a,t]);return K.createElement($,{style:{maxWidth:400},onSubmit:i},K.createElement(nf,{sx:{flexDirection:"column"}},r),K.createElement(ko,{issues:l}),K.createElement(wd,{spacing:"xl"},K.createElement(Md,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:pe(f,"password")})),K.createElement(fa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(rf,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Ad,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(af,{type:"submit"},"Sign in")))}import{Avatar as Nd,Center as Hd,Group as Vd,Stack as qd,Text as sf,Title as Gd,UnstyledButton as Ud}from"@mantine/core";import{normalizeOperationOutcome as Qd}from"@medplum/core";import Fe,{useState as zd}from"react";function uf(e){let o=S(),[t,r]=zd();return Fe.createElement(qd,null,Fe.createElement(Hd,{sx:{flexDirection:"column"}},Fe.createElement(Ke,{size:32}),Fe.createElement(Gd,{order:3},"Choose profile")),Fe.createElement(ko,{outcome:t}),e.memberships.map(a=>Fe.createElement(Ud,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Qd(n)))}},Fe.createElement(Vd,null,Fe.createElement(Nd,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(sf,{size:"sm",weight:500},a.profile?.display),Fe.createElement(sf,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Wd,Center as Xd,Checkbox as Jd,Group as $d,Stack as df,Title as Kd}from"@mantine/core";import He from"react";function cf(e){let o=S();return He.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},He.createElement(df,null,He.createElement(Xd,{sx:{flexDirection:"column"}},He.createElement(Ke,{size:32}),He.createElement(Kd,null,"Choose scope")),He.createElement(df,null,(e.scope??"openid").split(" ").map(t=>He.createElement(Jd,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),He.createElement($d,{position:"right",mt:"xl"},He.createElement(Wd,{type:"submit"},"Set scope"))))}import{Alert as jd,Button as _d,Center as Zd,Group as Yd,Stack as mf,TextInput as ec,Title as oc}from"@mantine/core";import{normalizeErrorString as tc}from"@medplum/core";import Me,{useState as rc}from"react";function pf(e){let o=S(),[t,r]=rc();return Me.createElement($,{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(tc(n)))}},Me.createElement(mf,null,Me.createElement(Zd,{sx:{flexDirection:"column"}},Me.createElement(Ke,{size:32}),Me.createElement(oc,null,"Enter MFA code")),t&&Me.createElement(jd,{icon:Me.createElement(to,{size:16}),title:"Error",color:"red"},t),Me.createElement(mf,null,Me.createElement(ec,{name:"token",label:"MFA code",required:!0})),Me.createElement(Yd,{position:"right",mt:"xl"},Me.createElement(_d,{type:"submit"},"Submit code"))))}function eT(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=S(),[i,u]=sa(),[d,c]=sa(!1),[g,v]=sa(),A=la(B=>{f?f(B):l.processCode(B).then(()=>{r&&r()}).catch(x=>xf({color:"red",message:If(x)}))},[l,f,r]),y=la(B=>{c(!!B.mfaRequired),B.login&&u(B.login),B.memberships&&v(B.memberships),B.code&&(t?v(void 0):A(B.code))},[t,A]),D=la(B=>{A(B.code)},[A]);return ac(()=>{o&&!i&&l.get("auth/login/"+o).then(y).catch(B=>xf({color:"red",message:If(B)}))},[l,o,i,y]),no.createElement(Pt,{width:450},(()=>i?d?no.createElement(pf,{login:i,handleAuthResponse:y}):g?no.createElement(uf,{login:i,memberships:g,handleAuthResponse:y}):e.projectId==="new"?no.createElement(Tt,{login:i,handleAuthResponse:y}):e.chooseScopes?no.createElement(cf,{login:i,scope:e.scope,handleAuthResponse:D}):no.createElement("div",null,"Success"):no.createElement(lf,{onForgotPassword:a,onRegister:n,handleAuthResponse:y,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}import{getPropertyDisplayName as Sc,tryGetDataType as bc}from"@medplum/core";import et from"react";var Ot=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as nc}from"@mantine/core";import _o from"react";var fc=nc(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 gf(e){let{children:o,compact:t}=e,{classes:r,cx:a}=fc();return _o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function hf(e){return _o.createElement(_o.Fragment,null,_o.createElement("dt",null,e.term),_o.createElement("dd",null,e.children))}import{ActionIcon as pc,Box as xc,CopyButton as Ic,Tooltip as gc}from"@mantine/core";import{formatDateTime as hc,formatPeriod as Cc,formatTiming as yc,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as lc}from"@medplum/core";import Cf from"react";function Bo(e){return Cf.createElement(Cf.Fragment,null,lc(e.value))}import{formatCoding as sc}from"@medplum/core";import yf from"react";function vf(e){return yf.createElement(yf.Fragment,null,sc(e.value))}import ia from"react";import Sf from"react";function Et(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("]")),Sf.createElement(Sf.Fragment,null,t.join("").trim())}function bf(e){let o=e.value;return o?ia.createElement(ia.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>ia.createElement(Et,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import ic from"react";function Pf(e){return ic.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as uc}from"@medplum/core";import Df from"react";function Tf(e){return Df.createElement(Df.Fragment,null,uc(e.value))}import{formatQuantity as dc}from"@medplum/core";import kf from"react";function Zo(e){return kf.createElement(kf.Fragment,null,dc(e.value))}import{formatRange as cc}from"@medplum/core";import Bf from"react";function Lt(e){return Bf.createElement(Bf.Fragment,null,cc(e.value))}import Rt from"react";function Af(e){let o=e.value;return o?Rt.createElement(Rt.Fragment,null,Rt.createElement(Zo,{value:o.numerator}),"\xA0/\xA0",Rt.createElement(Zo,{value:o.denominator})):null}import{stringify as mc}from"@medplum/core";import ua from"react";function fo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||mc(e.value);return e.link!==!1&&e.value.reference?ua.createElement(se,{to:e.value},o):ua.createElement(ua.Fragment,null,o)}import Ao from"react";function Ff(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?Ao.createElement(Ao.Fragment,null,t.map((a,n)=>Ao.createElement("div",{key:`${n}-${t.length}`},Ao.createElement(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Ao.createElement(Ao.Fragment,null)}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(xc,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Ic,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(gc,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(pc,{color:n?"teal":"gray",onClick:f},n?E.createElement(Wo,{size:"1rem"}):E.createElement(Mr,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===V.Attachment?E.createElement(Qn,{values:r,maxWidth:e.maxWidth}):E.createElement(Ff,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.decimal:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(fo,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,hc(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(sn,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(Ee,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(Bo,{value:r});case V.Coding:return E.createElement(vf,{value:r});case V.ContactDetail:return E.createElement(bf,{value:r});case V.ContactPoint:return E.createElement(Et,{value:r});case V.HumanName:return E.createElement(Ct,{value:r});case V.Identifier:return E.createElement(Pf,{value:r});case V.Money:return E.createElement(Tf,{value:r});case V.Period:return E.createElement(E.Fragment,null,Cc(r));case V.Quantity:case V.Duration:return E.createElement(Zo,{value:r});case V.Range:return E.createElement(Lt,{value:r});case V.Ratio:return E.createElement(Af,{value:r});case V.Reference:return E.createElement(fo,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,yc(r));case V.Dosage:case V.UsageContext:return E.createElement(Yo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o)throw Error(`Displaying property of type ${e.propertyType} requires element schema`);return E.createElement(Yo,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}import{getTypedPropertyValue as vc}from"@medplum/core";function Se(e,o){let t=vc(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Yo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=bc(r);return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?et.createElement("div",null,t.name):et.createElement(gf,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Ot.includes(f))return null;let[l,i]=Se(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:et.createElement(hf,{key:f,term:Sc(f)},et.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):et.createElement("div",null,r,"\xA0not implemented")}import{Stack as Km}from"@mantine/core";import{getPropertyDisplayName as rl,tryGetDataType as jm}from"@medplum/core";import wo,{useState as _m}from"react";import{Group as Pc,Input as Dc}from"@mantine/core";import Nt from"react";function Ht(e){return Nt.createElement(Pc,{noWrap:!0},Nt.createElement("div",null,e.children),Nt.createElement("div",null,Nt.createElement(Dc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Tc}from"@mantine/core";import kc from"react";function be(e){return kc.createElement(Tc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:pe(e.outcome,e.htmlFor)},e.children)}import{capitalize as Bc}from"@medplum/core";function ot(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",Bc(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as Gm,Group as Um,NativeSelect as Qm,Textarea as zm,TextInput as Ca}from"@mantine/core";import{capitalize as Wm,PropertyType as L}from"@medplum/core";import G,{useState as Xm}from"react";import Ac,{useState as Fc}from"react";function Mf(e){let[o,t]=Fc(e.defaultValue);function r(a){let n=wc(a);t(n),e.onChange&&e.onChange(n)}return Ac.createElement(So,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Mc(o),maxSelectedValues:1,onChange:r})}function Mc(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function wc(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import Oc,{useState as Ec}from"react";function Vt(e){let[o,t]=Ec(e.defaultValue);function r(a){let n=a[0],f=n&&Rc(n);t(f),e.onChange&&e.onChange(f)}return Oc.createElement(So,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Lc(o),maxSelectedValues:1,onChange:r})}function Lc(e){return{system:e.system,code:e.code,display:e.display}}function Rc(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Gc,TextInput as Uc}from"@mantine/core";import da,{useRef as Qc,useState as zc}from"react";import{Group as Nc,NativeSelect as wf,TextInput as Hc}from"@mantine/core";import qt,{useRef as Vc,useState as qc}from"react";function Gt(e){let[o,t]=qc(e.defaultValue),r=Vc();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return qt.createElement(Nc,{spacing:"xs",grow:!0,noWrap:!0},qt.createElement(wf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),qt.createElement(wf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),qt.createElement(Hc,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function Of(e){let[o,t]=zc(e.defaultValue),r=Qc();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return da.createElement(Gc,{spacing:"xs",grow:!0,noWrap:!0},da.createElement(Uc,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),da.createElement(Gt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Wc}from"@mantine/core";import Xc from"react";import{isValidDate as Ef}from"@medplum/core";function Lf(e){if(!e)return"";let o=new Date(e);return Ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Rf(e){if(!e)return"";let o=new Date(e);return Ef(o)?o.toISOString():""}function we(e){return Xc.createElement(Wc,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Jc(),defaultValue:Lf(e.defaultValue),autoFocus:e.autoFocus,error:pe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Rf(t))}}})}function Jc(){return"datetime-local"}import{JsonInput as $c}from"@mantine/core";import{stringify as Kc}from"@medplum/core";import jc from"react";function Nf(e){return jc.createElement($c,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Kc(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as _c,NativeSelect as Zc,TextInput as Ut}from"@mantine/core";import Fo,{useRef as Yc,useState as em}from"react";function Hf(e){let[o,t]=em(e.defaultValue),r=Yc();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 s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Fo.createElement(_c,{spacing:"xs",grow:!0,noWrap:!0},Fo.createElement(Zc,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Fo.createElement(Ut,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Fo.createElement(Ut,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Fo.createElement(Ut,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Fo.createElement(Ut,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as om,TextInput as Vf}from"@mantine/core";import ca,{useState as tm}from"react";function qf(e){let[o,t]=tm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ca.createElement(om,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(Vf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ca.createElement(Vf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as rm,TextInput as am}from"@mantine/core";import ma,{useCallback as pa,useState as nm}from"react";var fm=["USD","EUR","CAD","GBP","AUD"];function Gf(e){let{onChange:o}=e,[t,r]=nm(e.defaultValue),a=pa(l=>{r(l),o&&o(l)},[o]),n=pa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=pa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=ma.createElement(rm,{defaultValue:t?.currency,data:fm,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ma.createElement(am,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ma.createElement(wr,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as lm}from"@mantine/core";import xa,{useState as sm}from"react";function Uf(e){let[o,t]=sm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return xa.createElement(lm,{spacing:"xs",grow:!0,noWrap:!0},xa.createElement(we,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),xa.createElement(we,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as im,NativeSelect as um,TextInput as Qf}from"@mantine/core";import Qt,{useState as dm}from"react";function De(e){let[o,t]=dm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qt.createElement(im,{spacing:"xs",grow:!0,noWrap:!0},Qt.createElement(um,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Qt.createElement(Qf,{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:cm(a.currentTarget.value)})}}),Qt.createElement(Qf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function cm(e){if(e)return parseFloat(e)}import{Group as mm}from"@mantine/core";import Ia,{useState as pm}from"react";function tt(e){let[o,t]=pm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ia.createElement(mm,{spacing:"xs",grow:!0,noWrap:!0},Ia.createElement(De,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),Ia.createElement(De,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as xm}from"@mantine/core";import ga,{useState as Im}from"react";function zf(e){let[o,t]=Im(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ga.createElement(xm,{spacing:"xs",grow:!0,noWrap:!0},ga.createElement(De,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ga.createElement(De,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Tm,NativeSelect as km}from"@mantine/core";import{createReference as Bm}from"@medplum/core";import Wt,{useState as $f}from"react";import{Group as gm,Text as Wf}from"@mantine/core";import{getDisplayString as hm,getReferenceString as Jf}from"@medplum/core";import lo,{forwardRef as Cm,useCallback as Xf,useState as ym}from"react";var vm={Observation:"code",User:"email:contains"},Sm=["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 bm(e){return{value:Jf(e),label:hm(e),resource:e}}function zt(e){let o=S(),t=e.resourceType,[r,a]=ym(),n=X(e.defaultValue,a),f=e.onChange,s=Xf(async(i,u)=>{let d=Dm(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Xf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:lo.createElement(vo,{name:e.name,itemComponent:Pm,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:Jf,toOption:bm,loadOptions:s,onChange:l,clearable:!0})}var Pm=Cm(({label:e,resource:o,...t},r)=>lo.createElement("div",{ref:r,...t},lo.createElement(gm,{noWrap:!0},lo.createElement(Ce,{value:o}),lo.createElement("div",null,lo.createElement(Wf,null,e),lo.createElement(Wf,{size:"xs",color:"dimmed"},o.birthDate)))));function Dm(e){return vm[e]??(Sm.includes(e)?"name":"_id")}function Mo(e){let o=Am(e.targetTypes),t=Fm(e.defaultValue,o),[r,a]=$f(e.defaultValue),[n,f]=$f(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Wt.createElement(Tm,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Wt.createElement(km,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:l=>f(l.currentTarget.value),data:o}),!o&&Wt.createElement(bo,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Wt.createElement(zt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?Bm(l):void 0)}}))}function Am(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Fm(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as Kf}from"@mantine/core";import Ie,{useRef as Mm,useState as wm}from"react";function jf(e){let[o,t]=wm(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Mm();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return Ie.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Ie.createElement("colgroup",null,Ie.createElement("col",{width:"97%"}),Ie.createElement("col",{width:"3%"})),Ie.createElement("tbody",null,o.map((n,f)=>Ie.createElement("tr",{key:`${f}-${o.length}`},Ie.createElement("td",null,Ie.createElement(Ve,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Kf,{title:"Remove",size:"sm",onClick:s=>{H(s);let l=[...r.current];l.splice(f,1),a(l)}},Ie.createElement(ze,null))))),Ie.createElement("tr",null,Ie.createElement("td",null),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Kf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},Ie.createElement(mo,null))))))}import{Button as Yf,Chip as _f,Group as Xt,Modal as Om,NativeSelect as Em,Stack as Lm,Switch as Rm,TextInput as Nm}from"@mantine/core";import{formatTiming as Hm}from"@medplum/core";import j,{useRef as el,useState as ha}from"react";var Vm=["sun","mon","tue","wed","thu","fri","sat"];function ol(e){let[o,t]=ha(e.defaultValue),[r,a]=ha(!1),n=el();return n.current=o,j.createElement(j.Fragment,null,j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement("span",null,Hm(n.current)||"No repeat"),j.createElement(Yf,{onClick:()=>a(!0)},"Edit")),j.createElement(qm,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var Zf={repeat:{period:1,periodUnit:"d"}};function qm(e){let[o,t]=ha(e.defaultValue||Zf),r=el();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 s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return j.createElement(Om,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},j.createElement(Lm,null,j.createElement(be,{title:"Starts on",htmlFor:"timing-dialog-start"},j.createElement(we,{name:"timing-dialog-start",onChange:i=>a(i)})),j.createElement(Rm,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?Zf.repeat:void 0)}),o.repeat&&j.createElement(j.Fragment,null,j.createElement(be,{title:"Repeat every",htmlFor:"timing-dialog-period"},j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(Nm,{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)}),j.createElement(Em,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>s(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"&&j.createElement(be,{title:"Repeat on"},j.createElement(_f.Group,{multiple:!0,onChange:l},j.createElement(Xt,{position:"apart",mt:"md",spacing:"xs"},Vm.map(i=>j.createElement(_f,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),j.createElement(Xt,{position:"right"},j.createElement(Yf,{onClick:()=>e.onOk(o)},"OK"))))}function Ve(e){let o=e.property,t=e.defaultPropertyType??o.type[0].code,r=e.name,a=e.defaultValue;if(o.max>1&&!e.arrayElement)return t===L.Attachment?G.createElement(Wn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(jf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(Jm,{elementDefinitionTypes:n,...e}):G.createElement(tl,{elementDefinitionType:n[0],...e})}function Jm(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Xm(t);return G.createElement(Um,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Qm,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(tl,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Wm(r.code)))}}))}function tl(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(Ca,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.date:return G.createElement(Ca,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(we,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(Ca,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(St,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(Gm,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(zm,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return G.createElement(mn,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(pn,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(bt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(Mf,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(Vt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Of,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Gt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(Nf,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(Hf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(Gf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(Uf,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(De,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(tt,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(zf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(Mo,{name:r,defaultValue:a,targetTypes:$m(o),onChange:e.onChange});case L.Timing:return G.createElement(ol,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(rt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(rt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function $m(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function rt(e){let[o,t]=_m(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=jm(a);if(!n)return wo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return wo.createElement(Km,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Ot.includes(s)||!l.type)return null;let[i,u]=Se(f,s),d=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?wo.createElement(Ht,{key:s,title:rl(s),description:l.description,htmlFor:s},wo.createElement(Ve,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(c,g)=>{r(ot(o,s,g??s,l,c))}})):wo.createElement(be,{key:s,title:rl(s),description:l.description,withAsterisk:d,htmlFor:s,outcome:e.outcome},wo.createElement(Ve,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(c,g)=>{r(ot(o,s,g??s,l,c))}}))}))}import{Button as ya,createStyles as Zm,Group as nl}from"@mantine/core";import te,{useMemo as Ym,useState as ep}from"react";function al(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Jt(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var op=Zm(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 fl(e){let{classes:o}=op(),{onChangeMonth:t,onClick:r}=e,[a,n]=ep(Jt);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=Ym(()=>tp(a,e.slots),[a,e.slots]);return te.createElement("div",null,te.createElement(nl,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},te.createElement("p",{style:{flex:1}},al(a)),te.createElement(nl,{position:"right",spacing:"xs"},te.createElement(ya,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),te.createElement(ya,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),te.createElement("table",{className:o.table},te.createElement("thead",null,te.createElement("tr",null,te.createElement("th",null,"SUN"),te.createElement("th",null,"MON"),te.createElement("th",null,"TUE"),te.createElement("th",null,"WED"),te.createElement("th",null,"THU"),te.createElement("th",null,"FRI"),te.createElement("th",null,"SAT"))),te.createElement("tbody",null,s.map((l,i)=>te.createElement("tr",{key:"week-"+i},l.map((u,d)=>te.createElement("td",{key:"day-"+d},u&&te.createElement(ya,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function tp(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:rp(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 rp(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 lx from"react";import{ActionIcon as Pl,Center as zp,createStyles as Wp,Group as Xp,Loader as Jp,Menu as qe,ScrollArea as $p,TextInput as Kp}from"@mantine/core";import{showNotification as jp,updateNotification as ka}from"@mantine/notifications";import{getReferenceString as at,normalizeErrorString as _p}from"@medplum/core";import k,{useCallback as jt,useEffect as Zp,useRef as Dl,useState as Tl}from"react";import{createStyles as gp,Group as Kt,List as il,Stack as ul,Text as Te,Title as dl}from"@mantine/core";import{capitalize as hp,formatCodeableConcept as Cp,formatDateTime as ba,formatObservationValue as yp,isReference as vp}from"@medplum/core";import I,{useEffect as Sp,useState as bp}from"react";import{Blockquote as ap,createStyles as np,Stack as fp}from"@mantine/core";import ll from"react";var lp=np(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function va({value:e}){let{classes:o}=lp();return e?ll.createElement(fp,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&ll.createElement(ap,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as mp}from"@mantine/core";import Sa from"react";import{Text as sp}from"@mantine/core";import{getDisplayString as ip,isOk as up,normalizeErrorString as dp}from"@medplum/core";import sl,{useState as cp}from"react";function Le(e){let{value:o,link:t,...r}=e,[a,n]=cp(),f=X(o,n),s;if(a&&!up(a))s=`[${dp(a)}]`;else if(f)s=ip(f);else return null;return t?sl.createElement(se,{to:o,...r},s):sl.createElement(sp,{component:"span",...r},s)}function je(e){return Sa.createElement(mp,{spacing:"xs"},Sa.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),Sa.createElement(Le,{value:e.value,link:e.link}))}import{Badge as pp}from"@mantine/core";import xp from"react";var Ip={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 $t(e){return xp.createElement(pp,{color:Ip[e.status]},e.status)}var cl=gp(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}}));Pa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function Pa(e){let o=S(),t=X(e.value),[r,a]=bp();if(Sp(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.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(ul,null,I.createElement(dl,null,"Diagnostic Report"),I.createElement(Pp,{value:t}),r&&!e.hideSpecimenInfo&&Dp(r),t.result&&I.createElement(Tp,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(va,{value:n}))}function Pp({value:e}){return I.createElement(Kt,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(Te,null,I.createElement(je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(Te,null,I.createElement(je,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(Te,null,I.createElement(je,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(Te,null,ba(e.issued))),e.status&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(Te,null,hp(e.status))))}function Dp(e){return I.createElement(ul,{spacing:"xs"},I.createElement(dl,{order:2,size:"h6"},"Specimens"),I.createElement(il,{type:"ordered"},e?.map(o=>I.createElement(il.Item,{ml:"sm",key:`specimen-${o.id}`},I.createElement(Kt,{spacing:20},I.createElement(Kt,{spacing:5},I.createElement(Te,{fw:500},"Collected:")," ",ba(o.collection?.collectedDateTime)),I.createElement(Kt,{spacing:5},I.createElement(Te,{fw:500},"Received:")," ",ba(o.receivedTime)))))))}function Tp(e){let{classes:o}=cl();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,I.createElement(ml,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function ml(e){return I.createElement(I.Fragment,null,e.value?.map(o=>I.createElement(kp,{key:`obs-${vp(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function kp(e){let{classes:o,cx:t}=cl(),r=X(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Fp(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(se,{to:r},I.createElement(Bo,{value:r.code}))),I.createElement("td",null,I.createElement(Bp,{value:r})),I.createElement("td",null,I.createElement(Ap,{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(I.Fragment,null,r.category.map(f=>I.createElement("div",{key:`category-${Cp(f)}`},I.createElement(Bo,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(fo,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement($t,{status:r.status}))),r.hasMember&&I.createElement(ml,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(va,{value:r.note}))))}function Bp(e){let o=e.value;return I.createElement(I.Fragment,null,yp(o))}function Ap(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(Lt,{value:o}):null}function Fp(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Mp}from"@mantine/core";import{getDataType as wp,getPropertyDisplayName as Op,stringify as pl,toTypedValue as xl}from"@medplum/core";import ue,{useEffect as Ep,useState as Lp}from"react";var Rp=Mp(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 gl(e){let{classes:o}=Rp(),t=S(),[r,a]=Lp(!1);if(Ep(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=wp(e.original.resourceType);return ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.elements).map(([f,s])=>{if(f==="id"||f==="meta")return null;let[l,i]=Se(xl(e.original),f),[u,d]=Se(xl(e.revised),f);return Il(l)&&Il(u)||pl(l)===pl(u)?null:ue.createElement("tr",{key:f},ue.createElement("td",null,Op(f)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:s,propertyType:d,value:u,ignoreMissingValues:!0})))})))}function Il(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Np,{useEffect as Hp,useState as Vp}from"react";function Da(e){let o=S(),t=X(e.value),[r,a]=Vp(!1);return Hp(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:Np.createElement(Yo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as qp,Group as Gp,Menu as hl,Text as Ta}from"@mantine/core";import{formatDateTime as Up,getReferenceString as Qp}from"@medplum/core";import re from"react";function Cl(e){return re.createElement($e,null,e.children)}function _e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return re.createElement(To,{"data-testid":"timeline-item",fill:!0,...n},re.createElement(Gp,{position:"apart",spacing:8,mx:"xs",my:"sm"},re.createElement(Ce,{value:f,link:!0,size:"md"}),re.createElement("div",{style:{flex:1}},re.createElement(Ta,{size:"sm"},re.createElement(Le,{color:"dark",weight:500,value:f,link:!0})),re.createElement(Ta,{size:"xs"},re.createElement(se,{color:"dimmed",to:e.resource},Up(s)),re.createElement(Ta,{component:"span",color:"dimmed",mx:8},"\xB7"),re.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&re.createElement(hl,{position:"bottom-end",shadow:"md",width:200},re.createElement(hl.Target,null,re.createElement(qp,{radius:"xl","aria-label":`Actions for ${Qp(e.resource)}`},re.createElement(Or,null))),a)),re.createElement(go,null,r&&re.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&re.createElement(re.Fragment,null,e.children)))}function Sl(e,o){e.sort((t,r)=>{let a=yl(t,o),n=yl(r,o);return a>n?1:a<n?-1:vl(t,o)-vl(r,o)})}function yl(e,o){if(!bl(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function vl(e,o){if(!bl(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 bl(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Yp=Wp(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ze(e){let o=S(),t=Qe(),r=o.getProfile(),a=Dl(null),n=X(e.value),[f,s]=Tl(),[l,i]=Tl([]),u=e.loadTimelineResources,d=Dl(l);d.current=l;let c=jt(C=>{Sl(C,n),C.reverse(),i(C)},[n]),g=jt(C=>{let N=[];for(let Be of C){if(Be.status!=="fulfilled")continue;let he=Be.value;if(he.type==="history"&&s(he),he.entry)for(let eo of he.entry)N.push(eo.resource)}c(N)},[c]),v=jt(C=>c([...d.current,C]),[c]),A=jt(()=>{let C,N;"resourceType"in e.value?(C=e.value.resourceType,N=e.value.id):[C,N]=e.value.reference?.split("/"),u(o,C,N).then(g).catch(console.log)},[o,e.value,u,g]);Zp(()=>A(),[A]);function y(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(N=>v(N)).catch(console.log)}function D(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(N=>v(N)).then(()=>ka({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:k.createElement(Wo,{size:16}),autoClose:2e3})).catch(N=>ka({id:"upload-notification",color:"red",title:"Upload error",message:_p(N),icon:k.createElement(Lr,{size:16}),autoClose:2e3}))}function B(C,N){return o.updateResource({...C,priority:N})}function x(C){B(C,"stat").then(A).catch(console.log)}function O(C){B(C,"routine").then(A).catch(console.log)}function h(C){t(`/${C.resourceType}/${C.id}`)}function M(C){t(`/${C.resourceType}/${C.id}/edit`)}function _(C){t(`/${C.resourceType}/${C.id}/delete`)}function Pe(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function fe(){jp({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function qo(C){ka({id:"upload-notification",loading:!0,title:"Uploading...",message:fx(C),autoClose:!1,withCloseButton:!1})}return n?k.createElement(Cl,null,e.createCommunication&&k.createElement(To,null,k.createElement($,{testid:"timeline-form",onSubmit:C=>{y(C.text);let N=a.current;N&&(N.value="",N.focus())}},k.createElement(Xp,{spacing:"xs",noWrap:!0,style:{width:"100%"}},k.createElement(Ce,{value:r}),k.createElement(Kp,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),k.createElement(Pl,{type:"submit",radius:"xl",color:"blue",variant:"filled"},k.createElement(qr,{size:16})),k.createElement(Po,{onUpload:D,onUploadStart:fe,onUploadProgress:qo},C=>k.createElement(Pl,{...C,radius:"xl",color:"blue",variant:"filled"},k.createElement(Xo,{size:16})))))),l.map(C=>{if(!C)return null;let N=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return k.createElement(ex,{key:N,history:f,resource:C,onDetails:Pe});switch(C.resourceType){case"AuditEvent":return k.createElement(ax,{key:N,resource:C,onDetails:h});case"Communication":return k.createElement(tx,{key:N,resource:C,onPin:C.priority!=="stat"?x:void 0,onUnpin:C.priority==="stat"?O:void 0,onDetails:h,onEdit:M,onDelete:_});case"DiagnosticReport":return k.createElement(nx,{key:N,resource:C,onDetails:h,onEdit:M,onDelete:_});case"Media":return k.createElement(rx,{key:N,resource:C,onDetails:h,onEdit:M,onDelete:_});default:return k.createElement(_e,{key:N,resource:C,padding:!0},k.createElement(Da,{value:C,ignoreMissingValues:!0}))}})):k.createElement(zp,{style:{width:"100%",height:"100%"}},k.createElement(Jp,null))}function Oo(e){return k.createElement(qe.Dropdown,null,k.createElement(qe.Label,null,"Resource"),e.onPin&&k.createElement(qe.Item,{icon:k.createElement(Gr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${at(e.resource)}`},"Pin"),e.onUnpin&&k.createElement(qe.Item,{icon:k.createElement(Ur,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${at(e.resource)}`},"Unpin"),e.onDetails&&k.createElement(qe.Item,{icon:k.createElement(Hr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${at(e.resource)}`},"Details"),e.onEdit&&k.createElement(qe.Item,{icon:k.createElement(Er,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${at(e.resource)}`},"Edit"),e.onDelete&&k.createElement(k.Fragment,null,k.createElement(qe.Divider,null),k.createElement(qe.Label,null,"Danger zone"),k.createElement(qe.Item,{color:"red",icon:k.createElement(Ko,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${at(e.resource)}`},"Delete")))}function ex(e){let o=ox(e.history,e.resource);return o?k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Oo,{...e})},k.createElement(gl,{original:o,revised:e.resource})):k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Oo,{...e})},k.createElement("h3",null,"Created"),k.createElement(Da,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function ox(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 tx(e){let{classes:o}=Yp(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return k.createElement(_e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:k.createElement(Oo,{...e})},k.createElement("p",null,e.resource.payload?.[0]?.contentString))}function rx(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return k.createElement(_e,{resource:e.resource,padding:!!t,popupMenuItems:k.createElement(Oo,{...e})},k.createElement(Ee,{value:e.resource.content}))}function ax(e){return k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Oo,{...e})},k.createElement($p,null,k.createElement("pre",null,e.resource.outcomeDesc)))}function nx(e){return k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Oo,{...e})},k.createElement(Pa,{value:e.resource}))}function fx(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${Ba(e.loaded)} / ${Ba(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${Ba(e.loaded)}`}function Ba(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 uM(e){return lx.createElement(Ze,{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{createReference as _t}from"@medplum/core";import sx from"react";function gM(e){return sx.createElement(Ze,{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:_t(o),subject:o.subject,sender:_t(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:_t(o),subject:o.subject,operator:_t(t),issued:new Date().toISOString(),content:r})})}import{Button as hI,Loader as CI,Table as yI}from"@mantine/core";import{normalizeOperationOutcome as vI}from"@medplum/core";import ae,{useEffect as as,useRef as ns,useState as nr}from"react";import{evalFhirPath as ix}from"@medplum/core";import ux from"react";function kl(e){let o;try{o=ix(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 ux.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as tI,Button as No,Center as rr,createStyles as rI,Group as ar,Loader as aI,Menu as os,Pagination as nI,Table as fI,Text as Na,UnstyledButton as lI}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ga,formatSearchQuery as sI,globalSchema as iI}from"@medplum/core";import b,{useCallback as ts,useEffect as rs,useRef as uI,useState as Ha}from"react";import{Box as dx,Button as cx,Modal as mx,Text as px}from"@mantine/core";import Eo from"react";function Al(e){return Eo.createElement(mx,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Eo.createElement(dx,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Eo.createElement(Bl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Eo.createElement(Bl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Eo.createElement(px,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Bl(e){return Eo.createElement(cx,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as lt,Modal as Px}from"@mantine/core";import{getDataType as Dx,getSearchParameters as Tx,stringify as kx}from"@medplum/core";import J,{useEffect as Bx,useRef as zl,useState as Ax}from"react";import{capitalize as xx,DEFAULT_SEARCH_COUNT as Ix,evalFhirPathTyped as gx,formatDateTime as hx,Operator as w}from"@medplum/core";import Zt from"react";var Cx={string:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],fulltext:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],token:[w.EQUALS,w.NOT],reference:[w.EQUALS,w.NOT],numeric:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],quantity:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],date:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY],datetime:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY]},yx={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 nt(e,o){return{...e,filters:o,offset:0,name:void 0}}function OM(e){return nt(e,[])}function Yt(e,o){return nt(e,(e.filters??[]).filter(t=>t.code!==o))}function Lo(e,o,t,r,a){a&&(e=Yt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),nt(e,n)}function EM(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 Ml(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function wl(e,o){return Aa(e,o,-1)}function Ol(e,o){return Aa(e,o,0)}function El(e,o){return Aa(e,o,1)}function Aa(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),Ma(e,o,r,a)}function Ll(e,o){return Fa(e,o,-1)}function Rl(e,o){return Fa(e,o,0)}function Nl(e,o){return Fa(e,o,1)}function Fa(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),Ma(e,o,r,a)}function Hl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ma(e,o,t,new Date)}function Ma(e,o,t,r){return e=Yt(e,o),e=Fl(e,o,w.GREATER_THAN_OR_EQUALS,t),e=Fl(e,o,w.LESS_THAN_OR_EQUALS,r),e}function Fl(e,o,t,r){return Lo(e,o,t,r.toISOString())}function wa(e,o,t=!0){return Lo(e,o,w.MISSING,t.toString())}function vx(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Vl(e,o){let t=e.count??Ix,r=(o-1)*t;return vx(e,r)}function Oa(e,o,t){return o===ql(e)&&t!==void 0&&t===Gl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function LM(e,o){let t=!1;return ql(e)===o&&(t=!Gl(e)),Oa(e,o,t)}function ql(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function Gl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Ul(e){return Cx[e.type]}function ft(e){return yx[e]??""}function ye(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"||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(xx).join(" "))}function Ql(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?hx(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Sx(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?bx(e,o.searchParams[0]):null}function Sx(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Zt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function bx(e,o){let t=gx(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Zt.createElement(Zt.Fragment,null,t.map((r,a)=>Zt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Wl(e){let[o,t]=Ax({search:JSON.parse(kx(e.search))}),r=zl(null),a=zl(null);Bx(()=>{t({search:e.search})},[e.search]);function n(x){x.key==="Enter"&&i()}function f(){i()}function s(x){x.key==="Enter"&&u()}function l(){u()}function i(){let x=o.search.fields??[],O=r.current?.value;if(O){let h=[...x,O];t({search:{...o.search,fields:h}})}}function u(){let x=o.search.fields??[],O=a.current?.value;if(O){let h=[...x];h.splice(h.indexOf(O),1),t({search:{...o.search,fields:h}})}}function d(){let x=o.search.fields??[],O=a.current?.value;if(!O)return;let h=[...x],M=h.indexOf(O);M<=0||(g(h,M,M-1),t({search:{...o.search,fields:h}}))}function c(){let x=o.search.fields??[],O=a.current?.value;if(!O)return;let h=[...x],M=h.indexOf(O);M>=h.length-1||(g(h,M,M+1),t({search:{...o.search,fields:h}}))}function g(x,O,h){let M=x[O];x[O]=x[h],x[h]=M}if(!e.visible)return null;let v=e.search.resourceType,A=Dx(v),y=Tx(v),D=o.search.fields??[],B=Fx(A,y).filter(x=>!D.includes(x)).sort((x,O)=>x.localeCompare(O));return J.createElement(Px,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:x=>n(x),onDoubleClick:()=>f(),"data-testid":"available"},B.map(x=>J.createElement("option",{key:x,value:x},ye(x))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:x=>s(x),onDoubleClick:()=>l(),"data-testid":"selected"},D.map(x=>J.createElement("option",{key:x,value:x},ye(x))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(lt,{onClick:()=>e.onOk(o.search)},"OK"))}function Fx(e,o){let t=[],r=new Set,a=new Set;for(let n of Object.keys(e.elements))t.push(n),r.add(n.toLowerCase()),a.add(ye(n));if(o)for(let n of Object.keys(o)){let f=ye(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(ye(n)))}return t}import{Button as it,Group as Hx,Modal as Vx,NativeSelect as Jl}from"@mantine/core";import{globalSchema as qx,stringify as $l}from"@medplum/core";import R,{useEffect as Gx,useRef as jl,useState as La}from"react";import{formatDateTime as Mx,getSearchParameterDetails as wx,globalSchema as Ox,Operator as Xl,SearchParameterType as Ex}from"@medplum/core";import st from"react";function er(e){let{resourceType:o,filter:t}=e,r=Ox.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Xl.EQUALS||t.operator===Xl.NOT_EQUALS))return st.createElement(Le,{value:{reference:t.value}});let a=wx(o,r);if(t.code==="_lastUpdated"||a.type===Ex.DATETIME)return st.createElement(st.Fragment,null,Mx(t.value))}return st.createElement(st.Fragment,null,t.value)}import{Checkbox as Lx,TextInput as Ea}from"@mantine/core";import{getSearchParameterDetails as Rx,SearchParameterType as Ro}from"@medplum/core";import so from"react";function or(e){let o=Rx(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Ro.REFERENCE:return so.createElement(Mo,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Ro.BOOLEAN:return so.createElement(Lx,{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 Ro.DATE:return so.createElement(Ea,{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 Ro.DATETIME:return so.createElement(we,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Ro.NUMBER:return so.createElement(Ea,{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 Ro.QUANTITY:return so.createElement(De,{name:t,defaultValue:Nx(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return so.createElement(Ea,{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 Nx(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function _l(e){let[o,t]=La(JSON.parse($l(e.search))),[r,a]=La(-1),n=jl(o);n.current=o,Gx(()=>{t(JSON.parse($l(e.search)))},[e.search]);function f(u){t(Lo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=qx.types[s].searchParams??{},i=o.filters||[];return R.createElement(Vx,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(Kl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let g=[...i];g[d]=c,t(nt(n.current,g)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Ux,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(Ml(n.current,d))})),R.createElement(Kl,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),R.createElement(Hx,{position:"right",mt:"xl"},R.createElement(it,{onClick:()=>e.onOk(n.current)},"OK")))}function Ux(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,ft(o.operator)),R.createElement("td",null,R.createElement(er,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(it,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(it,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Kl(e){let[o,t]=La(e.defaultValue??{}),r=jl(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 s=e.searchParams[o.code],l=s&&Ul(s);return R.createElement("tr",null,R.createElement("td",null,R.createElement(Jl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),R.createElement("td",null,l&&R.createElement(Jl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:ft(i)}))]})),R.createElement("td",null,s&&o.operator&&R.createElement(or,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(it,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(it,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Qx,Grid as Ra,Modal as zx}from"@mantine/core";import io,{useState as Wx}from"react";function Zl(e){let[o,t]=Wx(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return io.createElement(zx,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},io.createElement($,{onSubmit:r},io.createElement(Ra,null,io.createElement(Ra.Col,{span:10},io.createElement(or,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),io.createElement(Ra.Col,{span:2},io.createElement(Qx,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function Yl(e){if(!e.searchParams)return null;function o(n,f){a(Oa(e.search,n.code,f))}function t(n){a(Yt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(Xx,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(F.Dropdown,null,e.searchParams.map(n=>m.createElement(F.Item,{key:n.code},ye(n.code))))}function Xx(e){switch(e.searchParam.type){case"date":return m.createElement(Jx,{...e});case"number":case"quantity":return m.createElement($x,{...e});case"reference":return m.createElement(Kx,{...e});case"string":case"token":case"uri":return m.createElement(jx,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Jx(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(Dr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(El(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(Ol(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(wl(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(Nl(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(Rl(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(Ll(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(Hl(e.search,t))},"Year to date"),m.createElement(tr,{...e}))}function $x(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(tr,{...e}))}function Kx(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(tr,{...e}))}function jx(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(kr,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(Tr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(tr,{...e}))}function tr(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(br,{size:14}),onClick:()=>e.onChange(wa(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(Sr,{size:14}),onClick:()=>e.onChange(wa(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Kr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as _x,getSearchParameter as Zx,getSearchParameterDetails as Yx,getSearchParameters as eI}from"@medplum/core";function es(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(oI(o,r));return t}function oI(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=_x(e,o),r=Zx(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=eI(e),n;if(a){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(a).filter(s=>s.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=Yx(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var Va=class extends Event{constructor(t){super("change");this.definition=t}},qa=class extends Event{constructor(t){super("load");this.response=t}},uo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},dI=rI(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 cI(e){let{classes:o}=dI(),t=S(),[r,a]=Ha(!1),[n,f]=Ha(),{search:s,onLoad:l}=e,[i,u]=Ha({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=uI(i);d.current=i;let c=s.total??"accurate",g=ts(T=>{f(void 0),t.search(s.resourceType,sI({...s,total:c,fields:void 0}),T).then(W=>{u({...d.current,searchResponse:W}),l&&l(new qa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,s,c,l]),v=ts(()=>{u({...d.current,searchResponse:void 0}),g({cache:"reload"})},[g]);rs(()=>{g()},[g]);function A(T,W){T.stopPropagation();let le=T.target.checked,me={...d.current.selected};le?me[W]=!0:delete me[W],u({...d.current,selected:me})}function y(T){T.stopPropagation();let ee=T.target.checked,le={},me=d.current.searchResponse;ee&&me?.entry&&me.entry.forEach(Go=>{Go.resource?.id&&(le[Go.resource.id]=!0)}),u({...d.current,selected:le})}function D(){let T=d.current;if(!T.searchResponse?.entry||T.searchResponse.entry.length===0)return!1;for(let W of T.searchResponse.entry)if(W.resource?.id&&!T.selected[W.resource.id])return!1;return!0}function B(T){e.onChange&&e.onChange(new Va(T))}function x(T,W){if(yt(T.target)||T.button===2)return;H(T);let ee=T.button===1||T.ctrlKey||T.metaKey;!ee&&e.onClick&&e.onClick(new uo(W,T)),ee&&e.onAuxClick&&e.onAuxClick(new uo(W,T))}function O(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(rs(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&iI.types[e.search.resourceType]))return b.createElement(rr,{style:{width:"100%",height:"100%"}},b.createElement(aI,null));let M=e.checkboxesEnabled,_=es(s),Pe=s.resourceType,fe=i.searchResponse,C=fe?.entry?.map(T=>T.resource),N="subtle",Be="gray",he=16,eo=window.innerWidth<768;return b.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&b.createElement(ar,{position:"apart",mb:"xl"},b.createElement(ar,{spacing:2},b.createElement(No,{compact:!0,variant:N,color:Be,leftIcon:b.createElement(Fr,{size:he}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),b.createElement(No,{compact:!0,variant:N,color:Be,leftIcon:b.createElement(Nr,{size:he}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&b.createElement(No,{compact:!0,variant:N,color:Be,leftIcon:b.createElement(Rr,{size:he}),onClick:e.onNew},"New..."),!eo&&O()&&b.createElement(No,{compact:!0,variant:N,color:Be,leftIcon:b.createElement($r,{size:he}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!eo&&e.onDelete&&b.createElement(No,{compact:!0,variant:N,color:Be,leftIcon:b.createElement(Ko,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!eo&&e.onBulk&&b.createElement(No,{compact:!0,variant:N,color:Be,leftIcon:b.createElement(Pr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),b.createElement(ar,{spacing:2},fe&&b.createElement(Na,{size:"xs",color:"dimmed"},II(s,fe.total),"-",gI(s,fe.total)," of"," ",`${c==="estimate"?"~":""}${fe.total?.toLocaleString()}`),b.createElement(tI,{title:"Refresh",onClick:v},b.createElement(zr,{size:"1.125rem"})))),b.createElement(fI,{className:o.table},b.createElement("thead",null,b.createElement("tr",null,M&&b.createElement("th",null,b.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:D(),onChange:T=>y(T)})),_.map(T=>b.createElement("th",{key:T.name},b.createElement(os,{shadow:"md",width:240,position:"bottom-end"},b.createElement(os.Target,null,b.createElement(lI,{className:o.control},b.createElement(ar,{position:"apart",noWrap:!0},b.createElement(Na,{weight:500,size:"sm"},ye(T.name)),b.createElement(rr,{className:o.icon},b.createElement(Cr,{size:14,stroke:1.5}))))),b.createElement(Yl,{search:e.search,searchParams:T.searchParams,onPrompt:(W,ee)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:ee})},onChange:W=>{B(W)}}))))),!e.hideFilters&&b.createElement("tr",null,M&&b.createElement("th",null),_.map(T=>b.createElement("th",{key:T.name},T.searchParams&&b.createElement(mI,{resourceType:Pe,searchParams:T.searchParams,filters:e.search.filters}))))),b.createElement("tbody",null,C?.map(T=>T&&b.createElement("tr",{key:T.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>x(W,T),onAuxClick:W=>x(W,T)},M&&b.createElement("td",null,b.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${T.id}`,checked:!!i.selected[T.id],onChange:W=>A(W,T.id)})),_.map(W=>b.createElement("td",{key:W.name},Ql(T,W))))))),C?.length===0&&b.createElement($e,null,b.createElement(rr,{style:{height:150}},b.createElement(Na,{size:"xl",color:"dimmed"},"No results"))),fe?.total!==void 0&&fe.total>0&&b.createElement(rr,{m:"md",p:"md"},b.createElement(nI,{value:pI(s),total:xI(s,fe.total),onChange:T=>B(Vl(s,T)),getControlProps:T=>{switch(T){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(Wl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:T=>{B(T),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),b.createElement(_l,{search:e.search,visible:d.current.filterEditorVisible,onOk:T=>{B(T),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),b.createElement(Al,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),b.createElement(Zl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:Pe,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:T=>{B(Lo(e.search,T.code,T.operator,T.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var Xw=b.memo(cI);function mI(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=>b.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},ft(t.operator),"\xA0",b.createElement(er,{resourceType:e.resourceType,filter:t}))))}function pI(e){return Math.floor((e.offset??0)/(e.count??Ga))+1}function xI(e,o){let t=e.count??Ga;return Math.ceil(o/t)}function II(e,o){return Math.min(o,(e.offset??0)+1)}function gI(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ga))}function SI(e){let o=S(),[t,r]=nr(!1),[a,n]=nr(),{query:f,fields:s}=e,[l,i]=nr(),[u,d]=nr({}),c=ns();c.current=l;let g=ns({});g.current=u,as(()=>{n(void 0),o.graphql(f).then(i).catch(x=>n(vI(x)))},[o,f]);function v(x,O){x.stopPropagation();let M=x.target.checked,_={...g.current};M?_[O]=!0:delete _[O],d(_)}function A(x){x.stopPropagation();let h=x.target.checked,M={},_=c.current?.data.ResourceList;h&&_&&_.forEach(Pe=>{Pe.id&&(M[Pe.id]=!0)}),d(M)}function y(){let x=c.current?.data.ResourceList;if(!x||x.length===0)return!1;for(let O of x)if(O.id&&!g.current[O.id])return!1;return!0}function D(x,O){yt(x.target)||(H(x),x.button!==1&&e.onClick&&e.onClick(new uo(O,x)),x.button===1&&e.onAuxClick&&e.onAuxClick(new uo(O,x)))}if(as(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return ae.createElement(CI,null);let B=e.checkboxesEnabled;return ae.createElement("div",{onContextMenu:x=>H(x),"data-testid":"search-control"},ae.createElement(yI,null,ae.createElement("thead",null,ae.createElement("tr",null,B&&ae.createElement("th",null,ae.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:y(),onChange:x=>A(x)})),s.map(x=>ae.createElement("th",{key:x.name},x.name)))),ae.createElement("tbody",null,l?.data.ResourceList.map(x=>x&&ae.createElement("tr",{key:x.id,"data-testid":"search-control-row",onClick:O=>D(O,x),onAuxClick:O=>D(O,x)},B&&ae.createElement("td",null,ae.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${x.id}`,checked:!!u[x.id],onChange:O=>v(O,x.id)})),s.map(O=>ae.createElement("td",{key:O.name},ae.createElement(kl,{propertyType:O.propertyType,path:O.fhirPath,resource:x}))))))),l?.data.ResourceList.length===0&&ae.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ae.createElement("div",{"data-testid":"search-error"},ae.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ae.createElement(hI,{onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}var oO=ae.memo(SI);import{showNotification as bI}from"@mantine/notifications";import PI,{useEffect as fs,useMemo as DI,useState as TI}from"react";function lO(e){let o=e.medplum,t=e.navigate??kI,[r,a]=TI({profile:o.getProfile(),loading:!1});fs(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),fs(()=>{function f(){bI({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=DI(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return PI.createElement(hr.Provider,{value:n},e.children)}function kI(e){window.location.assign(e)}import{createReference as fr}from"@medplum/core";import BI,{useCallback as AI}from"react";function pO(e){let o=AI((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 BI.createElement(Ze,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:fr(t),sender:fr(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:fr(t),operator:fr(r),issued:new Date().toISOString(),content:a})})}import{Anchor as ss,Button as FI,createStyles as MI,NativeSelect as wI,Stack as OI,TextInput as Qa}from"@mantine/core";import{getReferenceString as EI}from"@medplum/core";import q,{useEffect as ls,useRef as is,useState as ut}from"react";var us=MI(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 MO(e){let o=S(),t=X(e.value),[r,a]=ut(!1),[n,f]=ut(),[s,l]=ut(),[i,u]=ut();function d(){l(void 0)}function c(){f(void 0)}let g=is();if(g.current=i,ls(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),ls(()=>(u(qI(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function v(A,y){u({...g.current,[A]:y})}return q.createElement("div",null,q.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Qa,{label:"Plan Title",defaultValue:i.title,onChange:A=>v("title",A.currentTarget.value)}),q.createElement(ds,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:A=>v("action",A)}),q.createElement(FI,{type:"submit"},"Save")))}function ds(e){let{classes:o}=us(),t=is();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(LI,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(ss,{href:"#",onClick:f=>{H(f),a({id:ms()})}},"Add action")))}function LI(e){let{classes:o,cx:t}=us(),{action:r}=e,a=VI(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?q.createElement(NI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(RI,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(ss,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var za={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function RI(e){let{action:o,actionType:t}=e,[r,a]=cs(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(fo,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(xe,{property:za,propertyType:a,value:r})))}function NI(e){let{action:o}=e,[t,r]=ut(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(OI,{spacing:"xl"},q.createElement(Qa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Qa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(wI,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(ds,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(lr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(lr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(lr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(lr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(be,{title:"Timing",description:"When the action should take place."},q.createElement(HI,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function lr(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(zt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:EI(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function HI(e){let o=e.action,t="timing",[r,a]=cs(o);return q.createElement(Ve,{property:za,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(ot(o,t,f??t,za,n))}})}function VI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function cs(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Ua=1;function ms(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ua=Math.max(Ua,o+1))}return e}return"id-"+Ua++}function qI(e){return{...e,action:ps(e.action)}}function ps(e){if(e)return e.map(o=>({...o,id:ms(o.id),action:ps(o.action)}))}import{Anchor as ke,Box as _a,Button as lg,createStyles as sg,Group as ig,NativeSelect as ug,Space as dg,Textarea as cg,TextInput as Za,Title as mg}from"@mantine/core";import{getElementDefinition as pg,isResource as xg}from"@medplum/core";import P,{useEffect as Ps,useRef as Ig,useState as cr}from"react";import{Checkbox as XI,Group as JI,MultiSelect as $I,NativeSelect as KI,Radio as ys,Textarea as jI,TextInput as dt}from"@mantine/core";import{capitalize as Ja,deepEquals as _I,formatCoding as $a,getElementDefinition as ZI,getTypedPropertyValue as Ge,stringify as vs}from"@medplum/core";import Y from"react";import{deepClone as GI,evalFhirPathTyped as UI,formatCoding as QI,getExtension as xs,getTypedPropertyValue as Wa}from"@medplum/core";var sr=(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))(sr||{});function Is(e){return e.type==="choice"||e.type==="open-choice"}function gs(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Cs(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=WI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function hs(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>QI(f.valueCoding)===r||f[o]===r),n=Wa({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function Cs(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=Cs(t.item,o);if(r)return r}}}function zI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=UI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function WI(e,o,t){let r=o||[],a=Wa({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Wa({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(zI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function ir(e){let o=xs(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(o){if(o.valueCode!==void 0)return[o.valueCode];if(o.valueCodeableConcept)return o.valueCodeableConcept?.coding?.map(t=>t.code)}}function ur(e,o){let t=GI(e),r=xs(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?(r&&(t.extension=t.extension?.filter(a=>a!==r)),t):(r||(t.extension||(t.extension=[]),r={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},t.extension.push(r)),o.length===1?(r.valueCode=o[0],delete r.valueCodeableConcept):(r.valueCodeableConcept={coding:o.map(a=>({code:a}))},delete r.valueCode),t)}function dr(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(g=>g.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=tg(d[0]?.answer??[],u,l),e.onChange({id:d[0].id,linkId:o.linkId,text:o.text,answer:c})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=ja(e.allResponses,o,e.index,e.groupSequence)??Ge({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Y.createElement(Ht,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Y.createElement(XI,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Y.createElement(dt,{type:"number",step:"any",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Y.createElement(dt,{type:"number",step:1,id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Y.createElement(dt,{type:"date",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Y.createElement(we,{name:n,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Y.createElement(dt,{type:"time",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Y.createElement(dt,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Y.createElement(jI,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Y.createElement(JI,{py:4},Y.createElement(bt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)}));case"reference":return Y.createElement(Mo,{name:n,targetTypes:ir(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Y.createElement(De,{name:n,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return rg(o)?Y.createElement(YI,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Y.createElement(eg,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function YI(e){let{name:o,item:t,initial:r}=e,a=Ge({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=Ge({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(Xa(l))}let f=ja(e.allResponses,t,e.index,e.groupSequence)??Ge({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=ag(e.item),i=ng(e.allResponses,t,e.groupSequence);return Y.createElement($I,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Xa(a)],onChange:u=>{let d=hs(u,s,t);e.onChangeAnswer(d)}})}return Y.createElement(KI,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=Ge({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Ja(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:($a(f?.value)||f?.value)??Xa(a),data:n})}function eg(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Y.createElement(Vt,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):Y.createElement(og,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function og(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=ZI("QuestionnaireItemAnswerOption","value[x]"),f=Ge({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],g=`${o}-option-${d}`,v=Ge({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&vs(v)===vs(f)&&(l=g),s.push([g,v])}let i=ja(e.allResponses,t,e.index,e.groupSequence),u=fg(s,i);return Y.createElement(ys.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(g=>g[0]===d);if(c){let g=c[1],v="value"+Ja(g.type);a({[v]:g.value})}}},s.map(([d,c])=>Y.createElement(ys,{key:d,id:d,value:d,py:4,label:Y.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function tg(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function rg(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function ag(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=Ge({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Ja(t.type),a=(e.answerOption??[]).map(n=>({value:Ss(n,r),label:Ss(n,r)}));return{propertyName:r,data:a}}function Ss(e,o){return $a(e.valueCoding)||e[o]?.toString()}function Xa(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ka(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Ka(r.item,o)));return t}function bs(e){return Ge({type:"QuestionnaireItemAnswer",value:e},"value")}function ja(e,o,t=0,r=0){let n=Ka(e,o.linkId??"")[r]?.answer;return bs(n?.[t]??{})}function ng(e,o,t=0){let a=Ka(e,o.linkId??"")[t]?.answer;return a?a.map(f=>bs(f)).map(f=>$a(f?.value)||f?.value):[]}function fg(e,o){return e.find(t=>_I(t[1].value,o?.value))?.[0]}var gg=sg(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:32,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}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function i0(e){let o=S(),t=X(e.questionnaire),[r,a]=cr(!1),[n,f]=cr(),[s,l]=cr(),[i,u]=cr();function d(){u(void 0)}function c(){l(void 0)}return Ps(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),Ps(()=>(f(vg(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:P.createElement("div",null,P.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},P.createElement(Ds,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),P.createElement(lg,{type:"submit"},"Save")))}function Ds(e){let{classes:o,cx:t}=gg(),r=e.item,a=e.item,n=xg(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Ig();u.current=e.item;function d(h){H(h),e.setSelectedKey(e.item.id)}function c(h){H(h),e.setHoverKey(e.item.id)}function g(h){let M=u.current;e.onChange({...M,item:M.item?.map(_=>_.id===h.id?h:_)})}function v(h){e.onChange({...e.item,item:[...e.item.item??[],h]})}function A(h){e.onChange({...e.item,item:e.item.item?.filter(M=>M!==h)})}function y(h,M){e.onChange({...u.current,[h]:M})}function D(h){e.onChange({...e.item,...h})}function B(h){e.onChange({...e.item,item:e.item.item?.map(M=>M===h?{...M,repeats:!M.repeats}:M)})}function x(h,M){let _=Pg(e.item.item,h,M);e.onChange({...e.item,item:_})}let O=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return P.createElement("div",{"data-testid":a.linkId,className:O,onClick:d,onMouseOver:c},P.createElement("div",{className:o.questionBody},l?P.createElement(P.Fragment,null,n&&P.createElement(Za,{size:"xl",defaultValue:r.title,onChange:h=>y("title",h.currentTarget.value)}),!n&&P.createElement(cg,{autosize:!0,minRows:2,defaultValue:a.text,onChange:h=>y("text",h.currentTarget.value)}),a.type==="reference"&&P.createElement(yg,{item:a,onChange:D}),Is(a)&&P.createElement(hg,{item:a,onChange:h=>D(h)})):P.createElement(P.Fragment,null,r.title&&P.createElement(mg,null,r.title),a.text&&P.createElement("div",null,a.text),!f&&P.createElement(dr,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((h,M)=>P.createElement("div",{key:h.id},P.createElement(Ds,{item:h,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:M===0,isLast:M===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:g,onRemove:()=>A(h),onRepeatable:B,onMoveUp:()=>x(M,-1),onMoveDown:()=>x(M,1)}))),!f&&P.createElement("div",{className:o.topActions},l?P.createElement(P.Fragment,null,P.createElement(Za,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:h=>y("linkId",h.currentTarget.value)}),!f&&P.createElement(ug,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:h=>y("type",h.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"}]})):P.createElement("div",null,s)),!n&&P.createElement(_a,{className:o.movementActions},P.createElement(_a,{className:o.columnAlignment},!e.isFirst&&P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onMoveUp&&e.onMoveUp()}},P.createElement(vr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onMoveDown&&e.onMoveDown()}},P.createElement(yr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),P.createElement("div",{className:o.bottomActions},f&&P.createElement(P.Fragment,null,P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),v({id:co(),linkId:on("q"),type:"string",text:"Question"})}},"Add item"),P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),v({id:co(),linkId:on("g"),type:"group",text:"Group"})}},"Add group")),n&&P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),v(bg())}},"Add Page"),l&&!n&&P.createElement(P.Fragment,null,P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function hg(e){let o=pg("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return P.createElement("div",null,e.item.answerValueSet!==void 0?P.createElement(Za,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):P.createElement(Cg,{options:t,property:o,item:e.item,onChange:e.onChange}),P.createElement(_a,{display:"flex"},P.createElement(ke,{href:"#",onClick:r=>{H(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:co()}]})}},"Add choice"),P.createElement(dg,{w:"lg"}),P.createElement(ke,{href:"#",onClick:r=>{H(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function Cg(e){return P.createElement("div",null,e.options.map(o=>{let[t,r]=Se({type:"QuestionnaireItemAnswerOption",value:o},"value");return P.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},P.createElement("div",null,P.createElement(Ve,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),P.createElement("div",null,P.createElement(ke,{href:"#",onClick:a=>{H(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function yg(e){let o=ir(e.item)??[];return P.createElement(P.Fragment,null,o.map((t,r)=>P.createElement(ig,{key:`${t}-${r}`},P.createElement(bo,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(ur(e.item,o.map(n=>n===t?a:n)))}}),P.createElement(ke,{href:"#",onClick:a=>{H(a),e.onChange(ur(e.item,o.filter(n=>n!==t)))}},"Remove"))),P.createElement(ke,{href:"#",onClick:t=>{H(t),e.onChange(ur(e.item,[...o,""]))}},"Add Resource Type"))}var Ya=1,en=1;function on(e){return e+Ya++}function co(){return"id-"+en++}function vg(e){return{...e,id:e.id||co(),item:Ts(e.item)}}function Ts(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(en=Math.max(en,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ya=Math.max(Ya,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||co(),item:Ts(o.item),answerOption:Sg(o.answerOption)}))}function Sg(e){if(e)return e.map(o=>({...o,id:o.id||co()}))}function bg(){return{id:co(),linkId:on("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function Pg(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Anchor as Fs,Button as tn,Group as Dg,Stack as Tg,Stepper as ks,Title as Ms}from"@mantine/core";import{createReference as kg,getExtension as Bg,getReferenceString as ws}from"@medplum/core";import Q,{useEffect as Bs,useState as Ho}from"react";function Os(e){let o=S(),t=o.getProfile(),[r,a]=Ho(!1),n=X(e.questionnaire),[f,s]=Ho(),[l,i]=Ho(0);Bs(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Bs(()=>{s(n?Fg(n):void 0)},[n]);function u(v){let A=f?.item??[],D={resourceType:"QuestionnaireResponse",item:Rs(A,v)};s(D)}if(!r||!n)return null;let d=Eg(n),c=()=>i(v=>v+1),g=()=>i(v=>v-1);return Q.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:ws(n),subject:e.subject,source:kg(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&Q.createElement(Ms,null,n.title),n.item&&Q.createElement(Es,{items:n.item??[],allResponses:f?.item??[],onChange:u,renderPages:d>1,activePage:l}),Q.createElement(Ag,{activePage:l,numberOfPages:d,nextStep:c,prevStep:g,submitButtonText:e.submitButtonText}))}function Es(e){let[o,t]=Ho(an(e.items));function r(n,f){let s=o.some(i=>i.id===n),l;s?l=o.map(i=>i.id===n?f:i):l=[...o,f],t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?Q.createElement(ks.Step,{label:n.text,key:n.linkId},Q.createElement(As,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):Q.createElement(As,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?Q.createElement(ks,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):Q.createElement(Tg,null,a)}function As(e){return gs(e.item,e.allResponses)?e.item.type==="display"?Q.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?Q.createElement(rn,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):e.item.type==="boolean"?Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):Q.createElement(be,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text},Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function rn(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(s=>s.linkId===o.linkId);e.onChange({id:Ng(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?Q.createElement(Lg,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):Q.createElement(Rg,{item:e.item,key:e.item.linkId},({index:r})=>Q.createElement(dr,{...e,index:r}))}function Ag(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return Q.createElement(Dg,{position:"right",mt:"xl",spacing:"xs"},o&&Q.createElement(tn,{onClick:e.prevStep},"Back"),t&&Q.createElement(tn,{onClick:e.nextStep},"Next"),r&&Q.createElement(tn,{type:"submit"},e.submitButtonText??"Submit"))}function Fg(e){return{resourceType:"QuestionnaireResponse",questionnaire:ws(e),item:an(e.item)}}function an(e){return e?.map(Mg)??[]}function Mg(e){return{id:Ls(),linkId:e.linkId,text:e.text,item:an(e.item),answer:e.initial?.map(Og)??[]}}var wg=1;function Ls(){return"id-"+wg++}function Og(e){return{...e}}function Eg(e){let o=e?.item?.[0];return o&&Bg(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function Lg(e){let[o,t]=Ho(Hg(e.item,e.allResponses)),r=e.item;return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement("div",{key:n},e.text&&Q.createElement(Ms,{order:3,mb:"md"},e.text),Q.createElement(Es,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&Q.createElement(Fs,{onClick:()=>t(a=>a+1)},"Add Group"))}function Rg(e){let[o,t]=Ho(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement(Q.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&Q.createElement(Fs,{onClick:()=>t(a=>a+1)},"Add Item"))}function Ng(e,o){return e.length===0||e.length<o+1?Ls():e[o].id}function Hg(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function Vg(e,o){let t=Rs(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function qg(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(Vg(e[a],o[a])):o[a]&&t.push(o[a]);return t}function Rs(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat(qg(a,n))}return t}import{ActionIcon as mr,Button as Gg,createStyles as Ug,Divider as Qg,Group as ct,NativeSelect as nn,Stack as pr,Text as zg,TextInput as Wg}from"@mantine/core";import{formatRange as Ns,getCodeBySystem as Xg}from"@medplum/core";import z,{useEffect as Jg,useState as fn}from"react";var $g=Ug(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"}})),Kg=["gender","age","gestationalAge","context","appliesTo","category"],jg={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function F0(e){e=Object.assign(jg,e);let o=e.definition,[t,r]=fn([]),[a,n]=fn(1),[f,s]=fn(1);return Jg(()=>{let v=Yg(o,s);r(eh(v.qualifiedInterval||[],n))},[o]),z.createElement($,{testid:"reference-range-editor",onSubmit:l},z.createElement(pr,null,t.map(v=>z.createElement(_g,{unit:th(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:g,onRemoveGroup:u,key:`group-${v.id}`,intervalGroup:v}))),z.createElement(mr,{title:"Add Group",size:"sm",onClick:v=>{H(v),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(mo,null)),z.createElement(ct,{position:"right"},z.createElement(Gg,{type:"submit"},"Save")));function l(){let v=t.flatMap(A=>A.intervals).filter(A=>!rh(A));e.onSubmit({...o,qualifiedInterval:v})}function i(v){r(A=>[...A,v])}function u(v){r(A=>A.filter(y=>y.id!==v.id))}function d(v,A){r(y=>{y=[...y];let D=y.find(x=>x.id===v),B=D?.intervals.findIndex(x=>x.id===A.id);return B!==void 0&&D?.intervals[B]&&(D.intervals[B]=A),y})}function c(v,A){A.id===void 0&&(A.id=`id-${f}`,s(y=>y+1)),r(y=>{y=[...y];let D=y.findIndex(B=>B.id===v);if(D!==-1){let B={...y[D]};A={...A,...B.filters},B.intervals=[...B.intervals,A],y[D]=B}return y})}function g(v,A){r(y=>{y=[...y];let D=y.find(B=>B.id===v);return D&&(D.intervals=D.intervals.filter(B=>B.id!==A.id)),y})}}function _g(e){let{intervalGroup:o,unit:t}=e,{classes:r}=$g();return z.createElement($e,{"data-testid":o.id,className:r.section},z.createElement(pr,{spacing:"lg"},z.createElement(ct,{position:"right"},z.createElement(mr,{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(ze,null))),z.createElement(Zg,{intervalGroup:o,onChange:e.onChange}),z.createElement(Qg,null),o.intervals.map(a=>z.createElement(pr,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ct,null,z.createElement(Wg,{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(mr,{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(ze,null))),z.createElement(tt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(mr,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(mo,null))))}function Zg(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(pr,{style:{maxWidth:"50%"}},z.createElement(ct,null,z.createElement(nn,{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(ct,{spacing:"xs"},z.createElement(zg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(tt,{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(nn,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(nn,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function Yg(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 eh(e,o){let t=1,r={};for(let a of e){let n=oh(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Kg.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function oh(e){return[`gender=${e.gender}`,`age=${Ns(e.age)}`,`gestationalAge=${Ns(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function th(e){return e&&(Xg(e,"http://unitsofmeasure.org")||e.text)}function rh(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Hs,Grid as xr,Text as ah}from"@mantine/core";import{formatDateTime as nh,getReferenceString as fh}from"@medplum/core";import ge,{useEffect as lh,useState as Vs}from"react";function q0(e){let o=S(),t=X(e.value),[r,a]=Vs(!1),[n,f]=Vs();if(lh(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ge.createElement(xr,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,g=d?.output?.[0]?.valueReference;return ge.createElement(ge.Fragment,{key:`action-${u}`},ge.createElement(xr.Col,{span:1,p:"md"},d?.status==="completed"?ge.createElement(Br,null):ge.createElement(Xr,{color:"gray"})),ge.createElement(xr.Col,{span:9,p:"xs"},ge.createElement(ah,{weight:500},i.title),i.description&&ge.createElement("div",null,i.description),ge.createElement("div",null,"Last edited by\xA0",ge.createElement(Le,{value:d?.meta?.author}),"\xA0on\xA0",nh(d?.meta?.lastUpdated)),ge.createElement("div",null,"Status: ",ge.createElement($t,{status:d?.status||"unknown"}))),ge.createElement(xr.Col,{span:2,p:"md"},c&&!g&&ge.createElement(Hs,{onClick:()=>e.onStart(d,c)},"Start"),c&&g&&ge.createElement(Hs,{onClick:()=>e.onEdit(d,c,g)},"Edit")))}));function s(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===fh(u.resource))return u.resource}}import{createStyles as ph}from"@mantine/core";import ve,{useEffect as xh,useState as Ih}from"react";import{stringify as dh}from"@medplum/core";function Ir(e,o){let t=sh(e,o);return ih(t,e,o)}function sh(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,d=u+1,c=u-1,g=s[d],v=s[c],A,y=0;i===-l||i!==l&&v.i<g.i?(y=g.i,A=g):(y=v.i+1,A=v),s[c]=void 0;let D=y-i,B={i:y,j:D,prev:uh(A),snake:!1};for(;y<t&&D<r&&e[y]===o[D];)y++,D++;if(y>B.i&&(B={i:y,j:D,prev:B,snake:!0}),s[u]=B,y>=t&&D>=r)return s[u]}s[f+l-1]=void 0}}function ih(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 s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function uh(e){return e&&!e.snake&&e.prev?e.prev:e}function qs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:dh(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 ch(t,o),mh(t),t}function ch(e,o){for(let t=1;t<o.length;t++){let r=Ir(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function mh(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}}function Gs(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Us(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Vo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Vo(r,"month");let a=Math.floor(o/86400);if(a>0)return Vo(a,"day");let n=Math.floor(o/3600);if(n>0)return Vo(n,"hour");let f=Math.floor(o/60);return f>0?Vo(f,"minute"):Vo(o,"second")}function Vo(e,o){return`${e} ${e===1?o:o+"s"} ago`}var gh=ph(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 e1(e){let{classes:o}=gh(),t=S(),[r,a]=Ih(e.history);if(xh(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=qs(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((s,l)=>ve.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:s.span},ve.createElement(je,{value:s.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:s.span},ve.createElement(se,{to:Gs(n,s.meta.versionId)},Us(s.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},l+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as hh}from"@mantine/core";import{stringify as Qs}from"@medplum/core";import Ye from"react";var Ch=hh(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function l1(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Qs(o,!0).match(/[^\r\n]+/g),a=Qs(t,!0).match(/[^\r\n]+/g),n=Ir(r,a);return Ye.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>Ye.createElement(yh,{key:"delta"+s,delta:f})))}function yh(e){let{classes:o}=Ch();return Ye.createElement(Ye.Fragment,null,"...",Ye.createElement("br",null),e.delta.original.lines.length>0&&Ye.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
+ `)),e.delta.revised.lines.length>0&&Ye.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
+ `)),"...",Ye.createElement("br",null))}import{Button as zs,Group as vh,Stack as Sh,TextInput as Ws}from"@mantine/core";import{deepClone as bh}from"@medplum/core";import Oe,{useEffect as Ph,useState as Xs}from"react";function I1(e){let o=S(),t=X(e.defaultValue),[r,a]=Xs(!1),[n,f]=Xs();return Ph(()=>{t&&(f(bh(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?Oe.createElement("div",null,"Loading..."):Oe.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Oe.createElement(Sh,{mb:"xl"},Oe.createElement(be,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Oe.createElement(Ws,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Oe.createElement(be,{title:"ID",htmlFor:"id",outcome:e.outcome},Oe.createElement(Ws,{name:"id",defaultValue:n.id,disabled:!0}))),Oe.createElement(rt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Oe.createElement(vh,{position:"right",mt:"xl"},Oe.createElement(zs,{type:"submit"},"OK"),e.onDelete&&Oe.createElement(zs,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}import{Table as Dh}from"@mantine/core";import{formatDateTime as Th,normalizeErrorString as kh}from"@medplum/core";import ce,{useEffect as Bh,useState as Ah}from"react";function P1(e){let o=S(),[t,r]=Ah(e.history);return Bh(()=>{!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?ce.createElement(Dh,{withBorder:!0,withColumnBorders:!0},ce.createElement("thead",null,ce.createElement("tr",null,ce.createElement("th",null,"Author"),ce.createElement("th",null,"Date"),ce.createElement("th",null,"Version"))),ce.createElement("tbody",null,t.entry?.map((a,n)=>ce.createElement(Fh,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Fh(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(je,{value:t.meta?.author,link:!0})),ce.createElement("td",null,Th(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:Mh(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},kh(o?.outcome)))}function Mh(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as wh,createStyles as Oh,Stack as Eh,Text as Lh}from"@mantine/core";import{getReferenceString as Rh}from"@medplum/core";import oe,{useEffect as Nh,useRef as Hh,useState as mt}from"react";var Vh=Oh(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function R1(e){let{classes:o}=Vh(),t=S(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=mt(),s=Hh();s.current=n;let[l,i]=mt(Jt()),[u,d]=mt(),[c,g]=mt(),[v,A]=mt();if(Nh(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Rh(r)],["start","gt"+qh(l)],["start","lt"+Gh(l)]])).then(f).catch(console.log)):f(void 0)},[t,r,l]),!r||!n||!a)return null;let y=r.actor?.[0];return oe.createElement("div",{className:o.container,"data-testid":"scheduler"},oe.createElement("div",{className:o.info},y&&oe.createElement(Ce,{value:y,size:"xl"}),y&&oe.createElement(Lh,{size:"xl",weight:500},oe.createElement(Le,{value:y})),oe.createElement("p",null,"1 hour"),u&&oe.createElement("p",null,u.toLocaleDateString()),c&&oe.createElement("p",null,Js(new Date(c.start)))),oe.createElement("div",{className:o.selection},!u&&oe.createElement("div",null,oe.createElement("h3",null,"Select date"),oe.createElement(fl,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&oe.createElement("div",null,oe.createElement("h3",null,"Select time"),oe.createElement(Eh,null,n.map(D=>{let B=new Date(D.start);return B.getTime()>u.getTime()&&B.getTime()<u.getTime()+24*3600*1e3&&oe.createElement("div",{key:D.id},oe.createElement(wh,{variant:"outline",style:{width:150},onClick:()=>g(D)},Js(B)))}))),u&&c&&!v&&oe.createElement(Os,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&v&&oe.createElement("div",null,oe.createElement("h3",null,"You're all set!"),oe.createElement("p",null,"Check your email for a calendar invite."))))}function qh(e){return $s(e.getTime())}function Gh(e){return $s(e.getTime()+31*24*60*60*1e3)}function $s(e){return new Date(Math.max(Date.now(),e)).toISOString()}function Js(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as gr}from"@medplum/core";import Uh from"react";function Q1(e){return Uh.createElement(Ze,{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:[gr(o)],subject:o.subject,sender:gr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[gr(o)],subject:o.subject,operator:gr(t),issued:new Date().toISOString(),content:r})})}export{sn as AddressDisplay,mn as AddressInput,pn as AnnotationInput,Bb as AppShell,vo as AsyncAutocomplete,Qn as AttachmentArrayDisplay,Wn as AttachmentArrayInput,Po as AttachmentButton,Ee as AttachmentDisplay,bt as AttachmentInput,Yo as BackboneElementDisplay,rt as BackboneElementInput,fl as CalendarInput,Ht as CheckboxFormSection,St as CodeInput,Bo as CodeableConceptDisplay,Mf as CodeableConceptInput,vf as CodingDisplay,Vt as CodingInput,bf as ContactDetailDisplay,Of as ContactDetailInput,Et as ContactPointDisplay,Gt as ContactPointInput,$e as Container,we as DateTimeInput,uM as DefaultResourceTimeline,gf as DescriptionList,hf as DescriptionListEntry,Pa as DiagnosticReportDisplay,Pt as Document,Jm as ElementDefinitionInputSelector,tl as ElementDefinitionTypeInput,gM as EncounterTimeline,go as ErrorBoundary,SI as FhirPathTable,$ as Form,be as FormSection,Nn as Header,Ct as HumanNameDisplay,Hf as HumanNameInput,Pf as IdentifierDisplay,qf as IdentifierInput,_r as Loading,Ke as Logo,se as MedplumLink,lO as MedplumProvider,oO as MemoizedFhirPathTable,Xw as MemoizedSearchControl,Tf as MoneyDisplay,Gf as MoneyInput,Un as Navbar,Tp as ObservationTable,ko as OperationOutcomeAlert,To as Panel,pO as PatientTimeline,MO as PlanDefinitionBuilder,Zo as QuantityDisplay,De as QuantityInput,i0 as QuestionnaireBuilder,Os as QuestionnaireForm,sr as QuestionnaireItemType,rn as QuestionnaireRepeatWrapper,Lt as RangeDisplay,tt as RangeInput,fo as ReferenceDisplay,Mo as ReferenceInput,F0 as ReferenceRangeEditor,_g as ReferenceRangeGroupEditor,rD as RegisterForm,q0 as RequestGroupDisplay,Ff as ResourceArrayDisplay,jf as ResourceArrayInput,Ce as ResourceAvatar,je as ResourceBadge,e1 as ResourceBlame,l1 as ResourceDiff,I1 as ResourceForm,P1 as ResourceHistoryTable,zt as ResourceInput,Le as ResourceName,xe as ResourcePropertyDisplay,Ve as ResourcePropertyInput,Da as ResourceTable,Ze as ResourceTimeline,R1 as Scheduler,Va as SearchChangeEvent,uo as SearchClickEvent,cI as SearchControl,Wl as SearchFieldEditor,_l as SearchFilterEditor,qa as SearchLoadEvent,Q1 as ServiceRequestTimeline,eT as SignInForm,$t as StatusBadge,Cl as Timeline,_e as TimelineItem,ol as TimingInput,Ma as addDateFilterBetween,EM as addField,Lo as addFilter,Ll as addLastMonthFilter,wa as addMissingFilter,Nl as addNextMonthFilter,Rl as addThisMonthFilter,Ol as addTodayFilter,El as addTomorrowFilter,Hl as addYearToDateFilter,wl as addYesterdayFilter,ye as buildFieldNameString,OM as clearFilters,Yt as clearFiltersOnField,Lf as convertIsoToLocal,Rf as convertLocalToIso,kt as createScriptTag,Ml as deleteFilter,pe as getErrorsForInput,Dt as getIssuesForExpression,hs as getNewMultiSelectValues,ft as getOpString,ir as getQuestionnaireItemReferenceTargetTypes,_n as getRecaptcha,Ul as getSearchOperators,ql as getSortField,jn as initRecaptcha,Is as isChoiceQuestion,gs as isQuestionEnabled,Gl as isSortDescending,Hn as parseForm,hr as reactContext,Ql as renderValue,nt as setFilters,vx as setOffset,Vl as setPage,ur as setQuestionnaireItemReferenceTargetTypes,Oa as setSort,Sl as sortByDateAndPriority,LM as toggleSort,S as useMedplum,zo as useMedplumContext,Qe as useMedplumNavigate,xt as useMedplumProfile,X as useResource};
68
68
  //# sourceMappingURL=index.mjs.map