@medplum/react 2.0.31 → 2.1.0

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 (98) hide show
  1. package/dist/cjs/index.cjs +5 -5
  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/AddressDisplay/AddressDisplay.d.ts +0 -1
  6. package/dist/types/AddressInput/AddressInput.d.ts +0 -1
  7. package/dist/types/AnnotationInput/AnnotationInput.d.ts +0 -1
  8. package/dist/types/AppShell/HeaderSearchInput.d.ts +0 -1
  9. package/dist/types/AppShell/Navbar.d.ts +0 -1
  10. package/dist/types/AsyncAutocomplete/AsyncAutocomplete.d.ts +0 -1
  11. package/dist/types/AttachmentArrayDisplay/AttachmentArrayDisplay.d.ts +0 -1
  12. package/dist/types/AttachmentArrayInput/AttachmentArrayInput.d.ts +0 -1
  13. package/dist/types/AttachmentDisplay/AttachmentDisplay.d.ts +0 -1
  14. package/dist/types/AttachmentInput/AttachmentInput.d.ts +0 -1
  15. package/dist/types/BackboneElementDisplay/BackboneElementDisplay.d.ts +0 -1
  16. package/dist/types/BackboneElementInput/BackboneElementInput.d.ts +0 -1
  17. package/dist/types/BookmarkDialog/BookmarkDialog.d.ts +0 -1
  18. package/dist/types/CalendarInput/CalendarInput.d.ts +0 -1
  19. package/dist/types/CodeInput/CodeInput.d.ts +0 -1
  20. package/dist/types/CodeableConceptDisplay/CodeableConceptDisplay.d.ts +0 -1
  21. package/dist/types/CodeableConceptInput/CodeableConceptInput.d.ts +0 -1
  22. package/dist/types/CodingDisplay/CodingDisplay.d.ts +0 -1
  23. package/dist/types/CodingInput/CodingInput.d.ts +0 -1
  24. package/dist/types/ContactDetailDisplay/ContactDetailDisplay.d.ts +0 -1
  25. package/dist/types/ContactDetailInput/ContactDetailInput.d.ts +0 -1
  26. package/dist/types/ContactPointDisplay/ContactPointDisplay.d.ts +0 -1
  27. package/dist/types/ContactPointInput/ContactPointInput.d.ts +0 -1
  28. package/dist/types/Container/Container.d.ts +0 -1
  29. package/dist/types/DateTimeInput/DateTimeInput.d.ts +0 -1
  30. package/dist/types/DefaultResourceTimeline/DefaultResourceTimeline.d.ts +0 -1
  31. package/dist/types/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +0 -1
  32. package/dist/types/Document/Document.d.ts +0 -1
  33. package/dist/types/EncounterTimeline/EncounterTimeline.d.ts +0 -1
  34. package/dist/types/ExtensionInput/ExtensionInput.d.ts +0 -1
  35. package/dist/types/FhirPathDisplay/FhirPathDisplay.d.ts +0 -1
  36. package/dist/types/GoogleButton/GoogleButton.d.ts +0 -1
  37. package/dist/types/HumanNameDisplay/HumanNameDisplay.d.ts +0 -1
  38. package/dist/types/HumanNameInput/HumanNameInput.d.ts +0 -1
  39. package/dist/types/IdentifierDisplay/IdentifierDisplay.d.ts +0 -1
  40. package/dist/types/IdentifierInput/IdentifierInput.d.ts +0 -1
  41. package/dist/types/Loading/Loading.d.ts +0 -1
  42. package/dist/types/Logo/Logo.d.ts +0 -1
  43. package/dist/types/MoneyDisplay/MoneyDisplay.d.ts +0 -1
  44. package/dist/types/MoneyInput/MoneyInput.d.ts +0 -1
  45. package/dist/types/NoteDisplay/NoteDisplay.d.ts +0 -1
  46. package/dist/types/OperationOutcomeAlert/OperationOutcomeAlert.d.ts +0 -1
  47. package/dist/types/Panel/Panel.d.ts +0 -1
  48. package/dist/types/PatientTimeline/PatientTimeline.d.ts +0 -1
  49. package/dist/types/PeriodInput/PeriodInput.d.ts +0 -1
  50. package/dist/types/PlanDefinitionBuilder/PlanDefinitionBuilder.d.ts +0 -1
  51. package/dist/types/QuantityDisplay/QuantityDisplay.d.ts +0 -1
  52. package/dist/types/QuantityInput/QuantityInput.d.ts +0 -1
  53. package/dist/types/QuestionnaireBuilder/QuestionnaireBuilder.d.ts +0 -1
  54. package/dist/types/QuestionnaireForm/QuestionnaireForm.d.ts +5 -6
  55. package/dist/types/QuestionnaireForm/QuestionnaireFormItem/QuestionnaireFormItem.d.ts +9 -0
  56. package/dist/types/RangeDisplay/RangeDisplay.d.ts +0 -1
  57. package/dist/types/RangeInput/RangeInput.d.ts +0 -1
  58. package/dist/types/RatioDisplay/RatioDisplay.d.ts +0 -1
  59. package/dist/types/RatioInput/RatioInput.d.ts +0 -1
  60. package/dist/types/ReferenceDisplay/ReferenceDisplay.d.ts +0 -1
  61. package/dist/types/ReferenceInput/ReferenceInput.d.ts +0 -1
  62. package/dist/types/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +0 -1
  63. package/dist/types/RequestGroupDisplay/RequestGroupDisplay.d.ts +0 -1
  64. package/dist/types/ResourceArrayDisplay/ResourceArrayDisplay.d.ts +0 -1
  65. package/dist/types/ResourceArrayInput/ResourceArrayInput.d.ts +0 -1
  66. package/dist/types/ResourceAvatar/ResourceAvatar.d.ts +0 -1
  67. package/dist/types/ResourceBadge/ResourceBadge.d.ts +0 -1
  68. package/dist/types/ResourceBlame/ResourceBlame.d.ts +0 -1
  69. package/dist/types/ResourceDiff/ResourceDiff.d.ts +0 -1
  70. package/dist/types/ResourceDiffTable/ResourceDiffTable.d.ts +0 -1
  71. package/dist/types/ResourceForm/ResourceForm.d.ts +0 -1
  72. package/dist/types/ResourceHistoryTable/ResourceHistoryTable.d.ts +0 -1
  73. package/dist/types/ResourceInput/ResourceInput.d.ts +0 -1
  74. package/dist/types/ResourceName/ResourceName.d.ts +0 -1
  75. package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts +0 -1
  76. package/dist/types/ResourcePropertyInput/ResourcePropertyInput.d.ts +0 -1
  77. package/dist/types/ResourceTable/ResourceTable.d.ts +0 -1
  78. package/dist/types/ResourceTimeline/ResourceTimeline.d.ts +0 -1
  79. package/dist/types/Scheduler/Scheduler.d.ts +0 -1
  80. package/dist/types/SearchControl/SearchUtils.d.ts +0 -1
  81. package/dist/types/SearchExportDialog/SearchExportDialog.d.ts +0 -1
  82. package/dist/types/SearchFieldEditor/SearchFieldEditor.d.ts +0 -1
  83. package/dist/types/SearchFilterEditor/SearchFilterEditor.d.ts +0 -1
  84. package/dist/types/SearchFilterValueDialog/SearchFilterValueDialog.d.ts +0 -1
  85. package/dist/types/SearchFilterValueDisplay/SearchFilterValueDisplay.d.ts +0 -1
  86. package/dist/types/SearchFilterValueInput/SearchFilterValueInput.d.ts +0 -1
  87. package/dist/types/SearchPopupMenu/SearchPopupMenu.d.ts +0 -1
  88. package/dist/types/ServiceRequestTimeline/ServiceRequestTimeline.d.ts +0 -1
  89. package/dist/types/StatusBadge/StatusBadge.d.ts +0 -1
  90. package/dist/types/TimingInput/TimingInput.d.ts +0 -1
  91. package/dist/types/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +0 -1
  92. package/dist/types/auth/ChooseProfileForm.d.ts +0 -1
  93. package/dist/types/auth/ChooseScopeForm.d.ts +0 -1
  94. package/dist/types/auth/MfaForm.d.ts +0 -1
  95. package/dist/types/auth/NewProjectForm.d.ts +0 -1
  96. package/dist/types/stories/healthgorilla.d.ts +6 -0
  97. package/dist/types/utils/questionnaire.d.ts +2 -1
  98. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import{formatAddress as bs}from"@medplum/core";import Wa from"react";function Xa(e){let o=e.value;return o?Wa.createElement(Wa.Fragment,null,bs(o)):null}import{Group as Ds,NativeSelect as Qa,TextInput as qo}from"@mantine/core";import Ve,{useRef as Ts,useState as ks}from"react";function Ja(e,o){return e.line&&e.line.length>o?e.line[o]:""}function $a(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ka(e){let[o,t]=ks(e.defaultValue||{}),r=Ts();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a($a(r.current||{},0,c))}function s(c){a($a(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function m(c){a({...r.current,postalCode:c})}return Ve.createElement(Ds,{spacing:"xs",grow:!0,noWrap:!0},Ve.createElement(Qa,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ve.createElement(Qa,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ve.createElement(qo,{placeholder:"Line 1",defaultValue:Ja(o,0),onChange:c=>l(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Line 2",defaultValue:Ja(o,1),onChange:c=>s(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ve.createElement(qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>m(c.currentTarget.value)}))}import{TextInput as Ls}from"@mantine/core";import{createReference as Rs}from"@medplum/core";import Ns,{useRef as Hs,useState as Vs}from"react";import{showNotification as Bs}from"@mantine/notifications";import As,{createContext as Fs,useContext as Ms,useEffect as ja,useMemo as ws,useState as Os}from"react";var _a=Fs(void 0);function nh(e){let o=e.medplum,t=e.navigate??Es,[r,a]=Os({profile:o.getProfile(),loading:!1});ja(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ja(()=>{function f(){Bs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=ws(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return As.createElement(_a.Provider,{value:n},e.children)}function Uo(){return Ms(_a)}function v(){return Uo().medplum}function qe(){return Uo().navigate}function mt(){return Uo().profile}function Es(e){window.location.assign(e)}function Za(e){let o=mt(),[t,r]=Vs(e.defaultValue||{}),a=Hs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Rs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Ns.createElement(Ls,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Iu,useMantineTheme as gu}from"@mantine/core";import to,{Suspense as hu,useState as Cu}from"react";import{Alert as Qs}from"@mantine/core";import{normalizeErrorString as Js}from"@medplum/core";import{forwardRef as qs,createElement as en}from"react";import eo from"prop-types";var Ya={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Us=Object.defineProperty,Gs=Object.defineProperties,zs=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,on=(e,o,t)=>o in e?Us(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,tn=(e,o)=>{for(var t in o||(o={}))rn.call(o,t)&&on(e,t,o[t]);if(pt)for(var t of pt(o))an.call(o,t)&&on(e,t,o[t]);return e},Ws=(e,o)=>Gs(e,zs(o)),Xs=(e,o)=>{var t={};for(var r in e)rn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&an.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=qs((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,m=Xs(f,["color","size","stroke","children"]);return en("svg",tn(Ws(tn({ref:n},Ya),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),m),[...t.map(([c,h])=>en(c,h)),...u||[]])});return r.propTypes={color:eo.string,size:eo.oneOfType([eo.string,eo.number]),stroke:eo.oneOfType([eo.string,eo.number])},r.displayName=`${o}`,r};var cr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var oo=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var mr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var pr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var xr=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var Ir=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var gr=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var hr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ee=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var Go=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Cr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var yr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ue=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var co=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var zo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var vr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Sr=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Pr=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var br=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Dr=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var mo=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var po=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Tr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var kr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Br=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Ar=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Fr=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var xt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var It=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Mr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var wr=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Or=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Er=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Lr=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Rr=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var xo=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Wo=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Xo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Nr=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Hr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Vr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Qo=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var qr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Ur from"react";var Io=class extends Ur.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Ur.createElement(Qs,{icon:Ur.createElement(oo,{size:16}),title:"Something went wrong",color:"red"},Js(this.state.error)):this.props.children}};import{Center as $s,Loader as Ks}from"@mantine/core";import nn from"react";function Gr(){return nn.createElement($s,{style:{width:"100%",height:"100vh"}},nn.createElement(Ks,null))}import{Avatar as wi,createStyles as Oi,Group as Ct,Header as Ei,Menu as Le,Stack as Li,Text as Jo,UnstyledButton as yn}from"@mantine/core";import{formatHumanName as Ri,getReferenceString as vn}from"@medplum/core";import G,{useState as Ni}from"react";import{formatHumanName as js}from"@medplum/core";import fn from"react";function gt(e){let o=e.value;return o?fn.createElement(fn.Fragment,null,js(o,e.options)):null}import{Avatar as cn}from"@mantine/core";import{getDisplayString as ui,getImageSrc as di}from"@medplum/core";import zr from"react";import{Anchor as _s}from"@mantine/core";import{isReference as Zs,isResource as Ys}from"@medplum/core";import ei from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(ln(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&ln(o[0]))return!0}return!1}function ln(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ne(e){let o=qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=oi(t);return r&&(s+="/"+r),ei.createElement(_s,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function oi(e){if(e){if(typeof e=="string")return ti(e);if(Ys(e))return ri(e);if(Zs(e))return ai(e)}return"#"}function ti(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ri(e){return`/${e.resourceType}/${e.id}`}function ai(e){return`/${e.reference}`}import{deepEquals as ni,isReference as dn,isResource as fi,normalizeOperationOutcome as li}from"@medplum/core";import{useCallback as si,useEffect as sn,useState as ii}from"react";function X(e,o){let t=v(),[r,a]=ii(un(t,e)),n=si(f=>{ni(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return dn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(li(l)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(fi(o))return o;if(dn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?ui(o):e.alt??"",r=(o&&di(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?zr.createElement(ne,{to:o},zr.createElement(cn,{src:r,alt:t,radius:a,...n})):zr.createElement(cn,{src:r,alt:t,radius:a,...n})}import{createStyles as hi,Group as Ci,Text as pn}from"@mantine/core";import{formatHumanName as yi,getDisplayString as hn,getReferenceString as vi,isUUID as Si}from"@medplum/core";import Ge,{forwardRef as Pi,useCallback as xn}from"react";import{Loader as ci,MultiSelect as mi}from"@mantine/core";import mn,{useCallback as go,useEffect as pi,useRef as ho,useState as Co}from"react";import{showNotification as xi}from"@mantine/notifications";import{normalizeErrorString as Ii}from"@medplum/core";function yo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=gi(o),u=ho(null),[m,c]=Co(void 0),[h,P]=Co(),[k,I]=Co(),[b,d]=Co(),[w,y]=Co(i.map(r)),[O,Ie]=Co([]),ge=ho();ge.current=m;let ue=ho();ue.current=h;let Y=ho();Y.current=k;let No=ho();No.current=b;let C=ho();C.current=O;let N=go(()=>{P(void 0);let _=u.current?.value.trim()||"";if(_===ge.current)return;c(_);let ae=new AbortController;I(ae),a(_,ae.signal).then(de=>{ae.signal.aborted||(Ie(de.map(r)),I(void 0),No.current&&(de.length>0&&n(de.slice(0,1)),d(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||xi({color:"red",message:Ii(de)})})},[a,n,r]),Te=go(()=>{Y.current&&(Y.current.abort(),I(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>N(),100);P(_)},[N]),he=go(_=>{let ae=[],de=[];for(let Ho of _){let ct=C.current?.find(Ps=>Ps.value===Ho),Vo=ct?.resource;!Vo&&l!==!1&&f&&(Vo=f(Ho),ct=r(Vo)),Vo&&ae.push(Vo),ct&&de.push(ct)}n(ae),y(de)},[l,n,f,r]),Ye=go(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(H(_),C.current&&C.current.length>0&&(Ie(C.current.slice(0,1)),he([C.current[0].value]))):d(!0))},[he]),D=go(_=>{let ae=r(f(_));return Ie([...C.current,ae]),ae},[f,Ie,r]),W=go((_,ae)=>!ae,[]);return pi(()=>()=>{Y.current&&Y.current.abort()},[]),mn.createElement(mi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:Ye,onSearchChange:Te,data:[...w,...O],onFocus:N,onChange:he,onCreate:D,rightSectionWidth:40,rightSection:k?mn.createElement(ci,{size:16}):null,filter:W,creatable:!0})}function gi(e){return e?Array.isArray(e)?e:[e]:[]}var bi=hi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Di(e){return e.id}function Ti(e){return{value:e.id,label:hn(e),resource:e}}function Cn(e){let{classes:o}=bi(),t=qe(),r=v(),a=xn(async(f,l)=>{let s=Bi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Ai(u,f)},[r]),n=xn(f=>{f.length>0&&t(`/${vi(f[0])}`)},[t]);return Ge.createElement(yo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Ge.createElement(Rr,{size:16}),placeholder:"Search",itemComponent:ki,toKey:Di,toOption:Ti,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var ki=Pi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Ge.createElement("div",{ref:t,...o},Ge.createElement(Ci,{noWrap:!0},Ge.createElement(Ce,{value:e}),Ge.createElement("div",null,Ge.createElement(pn,null,hn(e)),Ge.createElement(pn,{size:"xs",color:"dimmed"},r))))});function Bi(e){let o=JSON.stringify(e);return Si(e)?`{
1
+ import{formatAddress as Fs}from"@medplum/core";import $a from"react";function Ka(e){let o=e.value;return o?$a.createElement($a.Fragment,null,Fs(o)):null}import{Group as Ms,NativeSelect as ja,TextInput as Uo}from"@mantine/core";import Ge,{useRef as ws,useState as Os}from"react";function _a(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Za(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ya(e){let[o,t]=Os(e.defaultValue||{}),r=ws();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a(Za(r.current||{},0,c))}function s(c){a(Za(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(Ms,{spacing:"xs",grow:!0,noWrap:!0},Ge.createElement(ja,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ge.createElement(ja,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ge.createElement(Uo,{placeholder:"Line 1",defaultValue:_a(o,0),onChange:c=>l(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"Line 2",defaultValue:_a(o,1),onChange:c=>s(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Gs}from"@mantine/core";import{createReference as Us}from"@medplum/core";import zs,{useRef as Qs,useState as Ws}from"react";import{showNotification as Es}from"@mantine/notifications";import Ls,{createContext as Rs,useContext as Ns,useEffect as en,useMemo as Hs,useState as Vs}from"react";var on=Rs(void 0);function Ch(e){let o=e.medplum,t=e.navigate??qs,[r,a]=Vs({profile:o.getProfile(),loading:!1});en(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),en(()=>{function f(){Es({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Hs(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ls.createElement(on.Provider,{value:n},e.children)}function zo(){return Ns(on)}function S(){return zo().medplum}function Ue(){return zo().navigate}function pt(){return zo().profile}function qs(e){window.location.assign(e)}function tn(e){let o=pt(),[t,r]=Ws(e.defaultValue||{}),a=Qs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Us(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return zs.createElement(Gs,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Su,useMantineTheme as bu}from"@mantine/core";import ro,{Suspense as Pu,useState as Du}from"react";import{Alert as Zs}from"@mantine/core";import{normalizeErrorString as Ys}from"@medplum/core";import{forwardRef as Xs,createElement as an}from"react";import oo from"prop-types";var rn={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 Js=Object.defineProperty,$s=Object.defineProperties,Ks=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,ln=Object.prototype.hasOwnProperty,sn=Object.prototype.propertyIsEnumerable,nn=(e,o,t)=>o in e?Js(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,fn=(e,o)=>{for(var t in o||(o={}))ln.call(o,t)&&nn(e,t,o[t]);if(xt)for(var t of xt(o))sn.call(o,t)&&nn(e,t,o[t]);return e},js=(e,o)=>$s(e,Ks(o)),_s=(e,o)=>{var t={};for(var r in e)ln.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&&sn.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Xs((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=_s(f,["color","size","stroke","children"]);return an("svg",fn(js(fn({ref:n},rn),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,C])=>an(c,C)),...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 mr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var to=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var pr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var xr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Ir=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var gr=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var hr=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var yr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Le=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var Qo=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Cr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var vr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var Wo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var Sr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var br=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Pr=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Dr=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Tr=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var xo=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var kr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Br=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Ar=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Fr=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Mr=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var It=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var gt=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var wr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Or=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Er=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Lr=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Rr=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Nr=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Xo=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Hr=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Vr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var qr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var $o=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Gr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Ur from"react";var ho=class extends Ur.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Ur.createElement(Zs,{icon:Ur.createElement(to,{size:16}),title:"Something went wrong",color:"red"},Ys(this.state.error)):this.props.children}};import{Center as ei,Loader as oi}from"@mantine/core";import un from"react";function zr(){return un.createElement(ei,{style:{width:"100%",height:"100vh"}},un.createElement(oi,null))}import{Avatar as Hi,createStyles as Vi,Group as Ct,Header as qi,Menu as Re,Stack as Gi,Text as Ko,UnstyledButton as Pn}from"@mantine/core";import{formatHumanName as Ui,getReferenceString as Dn}from"@medplum/core";import U,{useState as zi}from"react";import{formatHumanName as ti}from"@medplum/core";import dn from"react";function ht(e){let o=e.value;return o?dn.createElement(dn.Fragment,null,ti(o,e.options)):null}import{Avatar as In}from"@mantine/core";import{getDisplayString as Ii,getImageSrc as gi}from"@medplum/core";import Qr from"react";import{Anchor as ri}from"@mantine/core";import{isReference as ai,isResource as ni}from"@medplum/core";import fi from"react";function H(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(cn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&cn(o[0]))return!0}return!1}function cn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function fe(e){let o=Ue(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=li(t);return r&&(s+="/"+r),fi.createElement(ri,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function li(e){if(e){if(typeof e=="string")return si(e);if(ni(e))return ii(e);if(ai(e))return ui(e)}return"#"}function si(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ii(e){return`/${e.resourceType}/${e.id}`}function ui(e){return`/${e.reference}`}import{deepEquals as di,isReference as xn,isResource as ci,normalizeOperationOutcome as mi}from"@medplum/core";import{useCallback as pi,useEffect as mn,useState as xi}from"react";function W(e,o){let t=S(),[r,a]=xi(pn(t,e)),n=pi(f=>{di(f,r)||a(f)},[r,a]);return mn(()=>{n(pn(t,e))},[t,e,n]),mn(()=>{let f=!0;return xn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(mi(l)))}),()=>f=!1},[t,r,e,n,o]),r}function pn(e,o){if(o){if(ci(o))return o;if(xn(o))return e.getCachedReference(o)}}function Ce(e){let o=W(e.value),t=o?Ii(o):e.alt??"",r=(o&&gi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Qr.createElement(fe,{to:o},Qr.createElement(In,{src:r,alt:t,radius:a,...n})):Qr.createElement(In,{src:r,alt:t,radius:a,...n})}import{createStyles as Pi,Group as Di,Text as hn}from"@mantine/core";import{formatHumanName as Ti,getDisplayString as Sn,getReferenceString as ki,isUUID as Bi}from"@medplum/core";import Qe,{forwardRef as Ai,useCallback as yn}from"react";import{Loader as hi,MultiSelect as yi}from"@mantine/core";import gn,{useCallback as yo,useEffect as Ci,useRef as Co,useState as vo}from"react";import{showNotification as vi}from"@mantine/notifications";import{normalizeErrorString as Si}from"@medplum/core";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=bi(o),u=Co(null),[d,c]=vo(void 0),[C,P]=vo(),[B,g]=vo(),[D,p]=vo(),[h,y]=vo(i.map(r)),[w,ge]=vo([]),he=Co();he.current=d;let de=Co();de.current=C;let Y=Co();Y.current=B;let Vo=Co();Vo.current=D;let v=Co();v.current=w;let N=yo(()=>{P(void 0);let _=u.current?.value.trim()||"";if(_===he.current)return;c(_);let ne=new AbortController;g(ne),a(_,ne.signal).then(ce=>{ne.signal.aborted||(ge(ce.map(r)),g(void 0),Vo.current&&(ce.length>0&&n(ce.slice(0,1)),p(!1)))}).catch(ce=>{ne.signal.aborted||ce.message.includes("aborted")||vi({color:"red",message:Si(ce)})})},[a,n,r]),ke=yo(()=>{Y.current&&(Y.current.abort(),g(void 0)),de.current!==void 0&&window.clearTimeout(de.current);let _=window.setTimeout(()=>N(),100);P(_)},[N]),ye=yo(_=>{let ne=[],ce=[];for(let qo of _){let mt=v.current?.find(As=>As.value===qo),Go=mt?.resource;!Go&&l!==!1&&f&&(Go=f(qo),mt=r(Go)),Go&&ne.push(Go),mt&&ce.push(mt)}n(ne),y(ce)},[l,n,f,r]),eo=yo(_=>{_.key==="Enter"&&(!de.current&&!Y.current?(H(_),v.current&&v.current.length>0&&(ge(v.current.slice(0,1)),ye([v.current[0].value]))):p(!0))},[ye]),T=yo(_=>{let ne=r(f(_));return ge([...v.current,ne]),ne},[f,ge,r]),Q=yo((_,ne)=>!ne,[]);return Ci(()=>()=>{Y.current&&Y.current.abort()},[]),gn.createElement(yi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:eo,onSearchChange:ke,data:[...h,...w],onFocus:N,onChange:ye,onCreate:T,rightSectionWidth:40,rightSection:B?gn.createElement(hi,{size:16}):null,filter:Q,creatable:!0})}function bi(e){return e?Array.isArray(e)?e:[e]:[]}var Fi=Pi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Mi(e){return e.id}function wi(e){return{value:e.id,label:Sn(e),resource:e}}function bn(e){let{classes:o}=Fi(),t=Ue(),r=S(),a=yn(async(f,l)=>{let s=Ei(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Li(u,f)},[r]),n=yn(f=>{f.length>0&&t(`/${ki(f[0])}`)},[t]);return Qe.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Qe.createElement(Nr,{size:16}),placeholder:"Search",itemComponent:Oi,toKey:Mi,toOption:wi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Oi=Ai(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Qe.createElement("div",{ref:t,...o},Qe.createElement(Di,{noWrap:!0},Qe.createElement(Ce,{value:e}),Qe.createElement("div",null,Qe.createElement(hn,null,Sn(e)),Qe.createElement(hn,{size:"xs",color:"dimmed"},r))))});function Ei(e){let o=JSON.stringify(e);return Bi(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import{formatAddress as bs}from"@medplum/core";import Wa from"react";function Xa
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function Ai(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Mi(Fi(t),o).slice(0,5)}function Fi(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Mi(e,o){return e.sort((t,r)=>In(r,o)-In(t,o))}function In(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,gn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,gn(yi(r),o));return t}function gn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Hi=Oi(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Sn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Hi(),[s,i]=Ni(!1);return G.createElement(Ei,{height:60,p:8,style:{zIndex:101}},G.createElement(Ct,{position:"apart"},G.createElement(Ct,{spacing:"xs"},G.createElement(yn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),G.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams})),G.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},G.createElement(Le.Target,null,G.createElement(yn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},G.createElement(Ct,{spacing:7},G.createElement(Ce,{value:r,radius:"xl",size:24}),G.createElement(Jo,{size:"sm",className:f.userName},Ri(r?.name?.[0])),G.createElement(yr,{size:12,stroke:1.5})))),G.createElement(Le.Dropdown,null,G.createElement(Li,{align:"center",p:"xl"},G.createElement(Ce,{size:"xl",radius:100,value:o.profile}),G.createElement(gt,{value:o.profile?.name?.[0]}),G.createElement(Jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&G.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==vn(o.profile)&&G.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},G.createElement(Ct,null,G.createElement(wi,{radius:"xl"}),G.createElement("div",{style:{flex:1}},G.createElement(Jo,{size:"sm",weight:500},u.profile.display),G.createElement(Jo,{color:"dimmed",size:"xs"},u.project.display))))),G.createElement(Le.Divider,null),G.createElement(Le.Item,{icon:G.createElement(Hr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),G.createElement(Le.Item,{icon:G.createElement(xo,{size:14,stroke:1.5}),onClick:()=>a(`/${vn(r)}`)},"Account settings"),G.createElement(Le.Item,{icon:G.createElement(Fr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),G.createElement(Jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as fu,createStyles as lu,Navbar as Xr,ScrollArea as su,Space as iu,Text as uu}from"@mantine/core";import re,{useState as du}from"react";import{Button as Gi,Group as zi,Modal as Wi,NativeSelect as Xi,Stack as Qi,TextInput as Ji}from"@mantine/core";import{showNotification as bn}from"@mantine/notifications";import{deepClone as $i,normalizeErrorString as Ki}from"@medplum/core";import ze from"react";import Ui from"react";function Pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Vi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&qi(o,t);return o}function Vi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function qi(e,o){e[o.name]=o.value}function J(e){return Ui.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Pn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Dn(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=$i(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{bn({color:"red",message:Ki(u)})})}return ze.createElement(Wi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},ze.createElement(J,{onSubmit:r},ze.createElement(Qi,null,ze.createElement(ji,{config:t}),ze.createElement(Ji,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),ze.createElement(zi,{position:"right"},ze.createElement(Gi,{mt:"sm",type:"submit"},"OK")))))}function ji(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return ze.createElement(Xi,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import tu,{useState as ru}from"react";import _i,{useCallback as Zi}from"react";function Wr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Yi(e){return typeof e.display=="string"?e.display:Wr(e)}function eu(e){return{value:Wr(e),label:Yi(e),resource:e}}function ou(e){return{code:e,display:e}}function vo(e){let o=v(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=Zi(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,m=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let h of m)h.code&&!c.some(P=>P.code===h.code)&&c.push(h);return c},[o,t]);return _i.createElement(yo,{...n,creatable:r??!0,clearable:a??!0,toKey:Wr,toOption:eu,loadOptions:f,onCreate:ou,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function yt(e){let[o,t]=ru(e.defaultValue);function r(a){let n=a[0],f=nu(n);t(f),e.onChange&&e.onChange(f)}return tu.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:au(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function au(e){return e?{code:e}:void 0}function nu(e){return e?.code}var Tn=lu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function kn(e){let{classes:o}=Tn(),t=qe(),r=pu(e.pathname,e.searchParams,e.menus),[a,n]=du(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return re.createElement(re.Fragment,null,re.createElement(Xr,{width:{sm:250},p:"xs"},re.createElement(su,null,re.createElement(Xr.Section,{mb:"sm"},re.createElement(yt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Xr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(uu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(cu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(mu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(fu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Er,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(Dn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function cu(e){let{classes:o,cx:t}=Tn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function mu(e){return e.icon?e.icon:re.createElement(iu,{w:30})}function pu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=xu(e,o,f.href);l>a&&(a=l,r=f)}return r}function xu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function AS(e){let o=gu(),[t,r]=Cu(localStorage.navbarOpen==="true"),a=v(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?to.createElement(Gr,null):to.createElement(Iu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&to.createElement(Sn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?to.createElement(kn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},to.createElement(Io,{key:`${e.pathname}?${e.searchParams?.toString()}`},to.createElement(hu,{fallback:to.createElement(Gr,null)},e.children)))}import Qr from"react";import{Anchor as yu}from"@mantine/core";import We from"react";function we(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?We.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&We.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&We.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},We.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&We.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},We.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),We.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},We.createElement(yu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Bn(e){return Qr.createElement("div",null,e.values?.map((o,t)=>Qr.createElement("div",{key:"attatchment-"+t},Qr.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as An}from"@mantine/core";import fe,{useRef as Su,useState as Pu}from"react";import Jr,{useRef as vu}from"react";function So(e){let o=v(),t=vu(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Jr.createElement(Jr.Fragment,null,Jr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Fn(e){let[o,t]=Pu(e.defaultValue??[]),r=Su();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return fe.createElement("table",{style:{width:"100%"}},fe.createElement("colgroup",null,fe.createElement("col",{width:"97%"}),fe.createElement("col",{width:"3%"})),fe.createElement("tbody",null,o.map((n,f)=>fe.createElement("tr",{key:`${f}-${o.length}`},fe.createElement("td",null,fe.createElement(we,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(An,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ue,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(So,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(An,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(zo,{size:16})))))))}import{Button as Mn}from"@mantine/core";import Po,{useState as bu}from"react";function vt(e){let[o,t]=bu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Po.createElement(Po.Fragment,null,Po.createElement(we,{value:o,maxWidth:200}),Po.createElement(Mn,{onClick:a=>{H(a),r(void 0)}},"Remove")):Po.createElement(So,{onUpload:r},a=>Po.createElement(Mn,{...a},"Upload..."))}import{getPropertyDisplayName as zu,globalSchema as Wu}from"@medplum/core";import _o from"react";var St=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Du}from"@mantine/core";import $o from"react";var Tu=Du(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function wn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Tu();return $o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function On(e){return $o.createElement($o.Fragment,null,$o.createElement("dt",null,e.term),$o.createElement("dd",null,e.children))}import{formatDateTime as Eu,formatPeriod as Lu,formatTiming as Ru,getElementDefinitionTypeName as Nu,getTypedPropertyValue as Hu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as ku}from"@medplum/core";import En from"react";function bo(e){return En.createElement(En.Fragment,null,ku(e.value))}import{formatCoding as Bu}from"@medplum/core";import Ln from"react";function Rn(e){return Ln.createElement(Ln.Fragment,null,Bu(e.value))}import $r from"react";import Nn from"react";function Pt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Nn.createElement(Nn.Fragment,null,t.join("").trim())}function Hn(e){let o=e.value;return o?$r.createElement($r.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>$r.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Au from"react";function Vn(e){return Au.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Fu}from"@medplum/core";import qn from"react";function Un(e){return qn.createElement(qn.Fragment,null,Fu(e.value))}import{formatQuantity as Mu}from"@medplum/core";import Gn from"react";function Ko(e){return Gn.createElement(Gn.Fragment,null,Mu(e.value))}import{formatRange as wu}from"@medplum/core";import zn from"react";function bt(e){return zn.createElement(zn.Fragment,null,wu(e.value))}import Dt from"react";function Wn(e){let o=e.value;return o?Dt.createElement(Dt.Fragment,null,Dt.createElement(Ko,{value:o.numerator}),"\xA0/\xA0",Dt.createElement(Ko,{value:o.denominator})):null}import{stringify as Ou}from"@medplum/core";import Kr from"react";function ro(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Ou(e.value);return e.link!==!1&&e.value.reference?Kr.createElement(ne,{to:e.value},o):Kr.createElement(Kr.Fragment,null,o)}import Tt from"react";function Xn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Tt.createElement(Tt.Fragment,null,t.map((a,n)=>Tt.createElement("div",{key:`${n}-${t.length}`},Tt.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Vu,Box as qu,CopyButton as Uu,Tooltip as Gu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(qu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Uu,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(Gu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Vu,{color:n?"teal":"gray",onClick:f},n?E.createElement(Go,{size:"1rem"}):E.createElement(Sr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(Bn,{values:r,maxWidth:e.maxWidth}):E.createElement(Xn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ro,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,Eu(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Xa,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(we,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(bo,{value:r});case V.Coding:return E.createElement(Rn,{value:r});case V.ContactDetail:return E.createElement(Hn,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Vn,{value:r});case V.Money:return E.createElement(Un,{value:r});case V.Period:return E.createElement(E.Fragment,null,Lu(r));case V.Quantity:case V.Duration:return E.createElement(Ko,{value:r});case V.Range:return E.createElement(bt,{value:r});case V.Ratio:return E.createElement(Wn,{value:r});case V.Reference:return E.createElement(ro,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Ru(r));case V.Dosage:case V.UsageContext:return E.createElement(jo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return E.createElement(jo,{value:{type:Nu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=Hu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function jo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Wu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?_o.createElement("div",null,t.name):_o.createElement(wn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(St.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Se(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:_o.createElement(On,{key:f,term:zu(f)},_o.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):_o.createElement("div",null,r,"\xA0not implemented")}import{Stack as bc}from"@mantine/core";import{getPropertyDisplayName as Pf,globalSchema as Dc}from"@medplum/core";import ko,{useState as Tc}from"react";import{Group as Xu,Input as Qu}from"@mantine/core";import kt from"react";function Bt(e){return kt.createElement(Xu,{noWrap:!0},kt.createElement("div",null,e.children),kt.createElement("div",null,kt.createElement(Qu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ju}from"@mantine/core";import $u from"react";function me(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function At(e,o){return e?.issue?.filter(t=>Qn(t.expression?.[0],o))}function Qn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Pe(e){return $u.createElement(Ju.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as Jn,Group as Ku,Stack as ju,TextInput as $n}from"@mantine/core";import{capitalize as _u,deepClone as Zu}from"@medplum/core";import ke,{useEffect as Yu,useState as Kn}from"react";function kb(e){let o=v(),t=X(e.defaultValue),[r,a]=Kn(),[n,f]=Kn();return Yu(()=>{t&&(f(Zu(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?ke.createElement("div",null,"Loading..."):ke.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},ke.createElement(ju,{mb:"xl"},ke.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},ke.createElement($n,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),ke.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},ke.createElement($n,{name:"id",defaultValue:n.id,disabled:!0}))),ke.createElement(Yo,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(Ku,{position:"right",mt:"xl"},ke.createElement(Jn,{type:"submit"},"OK"),e.onDelete&&ke.createElement(Jn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function Zo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",_u(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as xc,Group as Ic,NativeSelect as gc,Textarea as hc,TextInput as aa}from"@mantine/core";import{capitalize as Cc,getElementDefinitionTypeName as yc,PropertyType as L}from"@medplum/core";import U,{useState as vc}from"react";import ed,{useState as od}from"react";function jn(e){let[o,t]=od(e.defaultValue);function r(a){let n=rd(a);t(n),e.onChange&&e.onChange(n)}return ed.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&td(o),maxSelectedValues:1,onChange:r})}function td(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function rd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import ad,{useState as nd}from"react";function _n(e){let[o,t]=nd(e.defaultValue);function r(a){let n=a[0],f=n&&ld(n);t(f),e.onChange&&e.onChange(f)}return ad.createElement(vo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&fd(o),maxSelectedValues:1,onChange:r})}function fd(e){return{system:e.system,code:e.code,display:e.display}}function ld(e){return{system:e.system,code:e.code,display:e.display}}import{Group as cd,TextInput as md}from"@mantine/core";import jr,{useRef as pd,useState as xd}from"react";import{Group as sd,NativeSelect as Zn,TextInput as id}from"@mantine/core";import Ft,{useRef as ud,useState as dd}from"react";function Mt(e){let[o,t]=dd(e.defaultValue),r=ud();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Ft.createElement(sd,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(Zn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(Zn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(id,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Yn(e){let[o,t]=xd(e.defaultValue),r=pd();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return jr.createElement(cd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(md,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),jr.createElement(Mt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Id}from"@mantine/core";import{isValidDate as ef}from"@medplum/core";import gd from"react";function Be(e){return gd.createElement(Id,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:yd(),defaultValue:hd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Cd(t))}}})}function hd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Cd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toISOString():""}function yd(){return"datetime-local"}import{JsonInput as vd}from"@mantine/core";import{stringify as Sd}from"@medplum/core";import Pd from"react";function of(e){return Pd.createElement(vd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Sd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as bd,NativeSelect as Dd,TextInput as wt}from"@mantine/core";import Do,{useRef as Td,useState as kd}from"react";function tf(e){let[o,t]=kd(e.defaultValue),r=Td();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Do.createElement(bd,{spacing:"xs",grow:!0,noWrap:!0},Do.createElement(Dd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Do.createElement(wt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),Do.createElement(wt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),Do.createElement(wt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Bd,TextInput as rf}from"@mantine/core";import _r,{useState as Ad}from"react";function af(e){let[o,t]=Ad(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return _r.createElement(Bd,{spacing:"xs",grow:!0,noWrap:!0},_r.createElement(rf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),_r.createElement(rf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Fd,TextInput as Md}from"@mantine/core";import Zr,{useCallback as Yr,useState as wd}from"react";var Od=["USD","EUR","CAD","GBP","AUD"];function nf(e){let{onChange:o}=e,[t,r]=wd(e.defaultValue),a=Yr(s=>{r(s),o&&o(s)},[o]),n=Yr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Yr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Zr.createElement(Fd,{defaultValue:t?.currency,data:Od,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Zr.createElement(Md,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Zr.createElement(Pr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Ed}from"@mantine/core";import ea,{useState as Ld}from"react";function ff(e){let[o,t]=Ld(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),ea.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Rd,NativeSelect as Nd,TextInput as lf}from"@mantine/core";import Ot,{useState as Hd}from"react";function be(e){let[o,t]=Hd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ot.createElement(Rd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(Nd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ot.createElement(lf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Vd(a.currentTarget.value)})}}),Ot.createElement(lf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Vd(e){if(e)return parseFloat(e)}import{Group as qd}from"@mantine/core";import oa,{useState as Ud}from"react";function et(e){let[o,t]=Ud(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(qd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),oa.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Gd}from"@mantine/core";import ta,{useState as zd}from"react";function sf(e){let[o,t]=zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Gd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ta.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Yd,NativeSelect as ec,TextInput as oc}from"@mantine/core";import{createReference as tc}from"@medplum/core";import Lt,{useRef as mf,useState as pf}from"react";import{Group as Wd,Text as uf}from"@mantine/core";import{getDisplayString as Xd,getReferenceString as cf}from"@medplum/core";import ao,{forwardRef as Qd,useCallback as df,useState as Jd}from"react";var $d={Observation:"code",User:"email:contains"},Kd=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function jd(e){return{value:cf(e),label:Xd(e),resource:e}}function Et(e){let o=v(),t=e.resourceType,[r,a]=Jd(),n=X(e.defaultValue,a),f=e.onChange,l=df(async(i,u)=>{let m=Zd(t),c=new URLSearchParams({[m]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=df(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:ao.createElement(yo,{name:e.name,itemComponent:_d,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:cf,toOption:jd,loadOptions:l,onChange:s,clearable:!0})}var _d=Qd(({label:e,resource:o,...t},r)=>ao.createElement("div",{ref:r,...t},ao.createElement(Wd,{noWrap:!0},ao.createElement(Ce,{value:o}),ao.createElement("div",null,ao.createElement(uf,null,e),ao.createElement(uf,{size:"xs",color:"dimmed"},o.birthDate)))));function Zd(e){return $d[e]??(Kd.includes(e)?"name":"_id")}function To(e){let o=rc(e.targetTypes),t=ac(e.defaultValue,o),[r,a]=pf(e.defaultValue),[n,f]=pf(t),l=mf();l.current=r;let s=mf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Lt.createElement(Yd,{spacing:"xs",grow:!0,noWrap:!0},o?Lt.createElement(ec,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Lt.createElement(oc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Lt.createElement(Et,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?tc(u):void 0)}}))}function rc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function ac(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as xf}from"@mantine/core";import pe,{useRef as nc,useState as fc}from"react";function If(e){let[o,t]=fc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=nc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return pe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},pe.createElement("colgroup",null,pe.createElement("col",{width:"97%"}),pe.createElement("col",{width:"3%"})),pe.createElement("tbody",null,o.map((n,f)=>pe.createElement("tr",{key:`${f}-${o.length}`},pe.createElement("td",null,pe.createElement(Re,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ue,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(co,null))))))}import{Button as Cf,Chip as gf,Group as Rt,Modal as lc,NativeSelect as sc,Stack as ic,Switch as uc,TextInput as dc}from"@mantine/core";import{formatTiming as cc}from"@medplum/core";import $,{useRef as yf,useState as ra}from"react";var mc=["sun","mon","tue","wed","thu","fri","sat"];function vf(e){let[o,t]=ra(e.defaultValue),[r,a]=ra(!1),n=yf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,cc(n.current)||"No repeat"),$.createElement(Cf,{onClick:()=>a(!0)},"Edit")),$.createElement(pc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var hf={repeat:{period:1,periodUnit:"d"}};function pc(e){let[o,t]=ra(e.defaultValue||hf),r=yf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(lc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(ic,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(uc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?hf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(dc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(sc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Pe,{title:"Repeat on"},$.createElement(gf.Group,{multiple:!0,onChange:s},$.createElement(Rt,{position:"apart",mt:"md",spacing:"xs"},mc.map(i=>$.createElement(gf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Rt,{position:"right"},$.createElement(Cf,{onClick:()=>e.onOk(o)},"OK"))))}function Re(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===L.Attachment?U.createElement(Fn,{name:r,defaultValue:a,onChange:e.onChange}):U.createElement(If,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?U.createElement(Sc,{elementDefinitionTypes:n,...e}):U.createElement(Sf,{elementDefinitionType:n[0],...e})}function Sc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=vc(t);return U.createElement(Ic,{spacing:"xs",grow:!0,noWrap:!0},U.createElement(gc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),U.createElement(Sf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Cc(r.code)))}}))}function Sf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return U.createElement(aa,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.date:return U.createElement(aa,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.dateTime:case L.instant:return U.createElement(Be,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return U.createElement(aa,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return U.createElement(yt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return U.createElement(xc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return U.createElement(hc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return U.createElement(Ka,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return U.createElement(Za,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return U.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return U.createElement(jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return U.createElement(_n,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return U.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return U.createElement(Mt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return U.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return U.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return U.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return U.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return U.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return U.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return U.createElement(et,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return U.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return U.createElement(To,{name:r,defaultValue:a,targetTypes:Pc(o),onChange:e.onChange});case L.Timing:return U.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return U.createElement(Yo,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return U.createElement(Yo,{typeName:yc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Pc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function Yo(e){let[o,t]=Tc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Dc.types[a];if(!n)return ko.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return ko.createElement(bc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||St.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,m]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?ko.createElement(Bt,{key:s,title:Pf(s),description:i.definition,htmlFor:s},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,outcome:e.outcome,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}})):ko.createElement(Pe,{key:s,title:Pf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},ko.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:m,onChange:(h,P)=>{r(Zo(o,s,P??s,l[1],h))}}))}))}import{Button as na,createStyles as kc,Group as bf}from"@mantine/core";import ee,{useMemo as Bc,useState as Ac}from"react";var Fc=kc(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Mc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Df(e){let{classes:o}=Fc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Ac(fa);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Bc(()=>wc(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Mc(a)),ee.createElement(bf,{position:"right",spacing:"xs"},ee.createElement(na,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(na,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,m)=>ee.createElement("td",{key:"day-"+m},u&&ee.createElement(na,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function fa(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function wc(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Oc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Oc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as Ec,createStyles as Lc}from"@mantine/core";import Rc from"react";var Nc=Lc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Nc();return Rc.createElement(Ec,{className:r.root,...t},o)}import Qm from"react";import{ActionIcon as Gf,Center as Am,createStyles as Fm,Group as Mm,Loader as wm,Menu as Ne,ScrollArea as Om,TextInput as Em}from"@mantine/core";import{showNotification as Lm,updateNotification as ma}from"@mantine/notifications";import{getReferenceString as ot,normalizeErrorString as Rm}from"@medplum/core";import T,{useCallback as Vt,useEffect as Nm,useRef as zf,useState as Wf}from"react";import{createStyles as _c,Group as Ht,List as Bf,Stack as Af,Text as De,Title as Ff}from"@mantine/core";import{capitalize as Zc,formatCodeableConcept as Yc,formatDateTime as ia,formatObservationValue as em,isReference as om}from"@medplum/core";import g,{useEffect as tm,useState as rm}from"react";import{Blockquote as Hc,createStyles as Vc,Stack as qc}from"@mantine/core";import Tf from"react";var Uc=Vc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function la({value:e}){let{classes:o}=Uc();return e?Tf.createElement(qc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Tf.createElement(Hc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Jc}from"@mantine/core";import sa from"react";import{Text as Gc}from"@mantine/core";import{getDisplayString as zc,isOk as Wc,normalizeErrorString as Xc}from"@medplum/core";import kf,{useState as Qc}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=Qc(),f=X(o,n),l;if(a&&!Wc(a))l=`[${Xc(a)}]`;else if(f)l=zc(f);else return null;return t?kf.createElement(ne,{to:o,...r},l):kf.createElement(Gc,{component:"span",...r},l)}function Qe(e){return sa.createElement(Jc,{spacing:"xs"},sa.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),sa.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as $c}from"@mantine/core";import Kc from"react";var jc={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Nt(e){return Kc.createElement($c,{color:jc[e.status]},e.status)}var Mf=_c(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));ua.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ua(e){let o=v(),t=X(e.value),[r,a]=rm();if(tm(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return g.createElement(Af,null,g.createElement(Ff,null,"Diagnostic Report"),g.createElement(am,{value:t}),!e.hideSpecimenInfo&&nm(r),t.result&&g.createElement(fm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&g.createElement(la,{value:n}))}function am({value:e}){return g.createElement(Ht,{mt:"md",spacing:30},e.subject&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),g.createElement(De,null,g.createElement(Qe,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.performer?.map(o=>g.createElement("div",{key:o.reference},g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),g.createElement(De,null,g.createElement(Qe,{value:o,link:!0})))),e.issued&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),g.createElement(De,null,ia(e.issued))),e.status&&g.createElement("div",null,g.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),g.createElement(De,null,Zc(e.status))))}function nm(e){return g.createElement(Af,{spacing:"xs"},g.createElement(Ff,{order:2,size:"h6"},"Specimens"),g.createElement(Bf,{type:"ordered"},e?.map(o=>g.createElement(Bf.Item,{ml:"sm",key:`specimen-${o.id}`},g.createElement(Ht,{spacing:20},g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Collected:")," ",ia(o.collection?.collectedDateTime)),g.createElement(Ht,{spacing:5},g.createElement(De,{fw:500},"Received:")," ",ia(o.receivedTime)))))))}function fm(e){let{classes:o}=Mf();return g.createElement("table",{className:o.table},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",null,"Test"),g.createElement("th",null,"Value"),g.createElement("th",null,"Reference Range"),g.createElement("th",null,"Interpretation"),g.createElement("th",null,"Category"),g.createElement("th",null,"Performer"),g.createElement("th",null,"Status"))),g.createElement("tbody",null,e.value?.map(t=>g.createElement(lm,{key:`obs-${om(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function lm(e){let{classes:o,cx:t}=Mf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=um(r);return g.createElement(g.Fragment,null,g.createElement("tr",{className:t({[o.criticalRow]:n})},g.createElement("td",{rowSpan:a?2:1},g.createElement(ne,{to:r},g.createElement(bo,{value:r.code}))),g.createElement("td",null,g.createElement(sm,{value:r})),g.createElement("td",null,g.createElement(im,{value:r.referenceRange})),g.createElement("td",null,r.interpretation&&r.interpretation.length>0&&g.createElement(bo,{value:r.interpretation[0]})),g.createElement("td",null,r.category&&r.category.length>0&&g.createElement("ul",null,r.category.map(f=>g.createElement("li",{key:`category-${Yc(f)}`},g.createElement(bo,{value:f}))))),g.createElement("td",null,r.performer?.map(f=>g.createElement(ro,{key:f.reference,value:f}))),g.createElement("td",null,r.status&&g.createElement(Nt,{status:r.status}))),a&&g.createElement("tr",null,g.createElement("td",{colSpan:6},g.createElement(la,{value:r.note}))))}function sm(e){let o=e.value;return g.createElement(g.Fragment,null,em(o))}function im(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?g.createElement(g.Fragment,null,o.text):g.createElement(bt,{value:o}):null}function um(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as dm,Paper as cm,useComponentDefaultProps as mm}from"@mantine/core";import pm from"react";var xm=dm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Im={shadow:"xs",radius:"md",withBorder:!0};function Bo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=mm("Panel",Im,e),{classes:l,cx:s}=xm({width:r,fill:a},{name:"Panel",unstyled:n});return pm.createElement(cm,{className:s(l.paper,o),...f},t)}import{createStyles as gm}from"@mantine/core";import{getPropertyDisplayName as hm,stringify as wf,toTypedValue as Of}from"@medplum/core";import le,{useEffect as Cm,useState as ym}from"react";var vm=gm(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Lf(e){let{classes:o}=vm(),t=v(),[r,a]=ym();if(Cm(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?le.createElement("table",{className:o.root},le.createElement("colgroup",null,le.createElement("col",{style:{width:"30%"}}),le.createElement("col",{style:{width:"35%"}}),le.createElement("col",{style:{width:"35%"}})),le.createElement("thead",null,le.createElement("tr",null,le.createElement("th",null,"Property"),le.createElement("th",null,"Before"),le.createElement("th",null,"After"))),le.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Se(Of(e.original),l),[m,c]=Se(Of(e.revised),l);return Ef(i)&&Ef(m)||wf(i)===wf(m)?null:le.createElement("tr",{key:l},le.createElement("td",null,hm(l)),le.createElement("td",{className:o.removed},le.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(ce,{property:s,propertyType:c,value:m,ignoreMissingValues:!0})))}))):null}function Ef(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Sm,{useEffect as Pm,useState as bm}from"react";function da(e){let o=v(),t=X(e.value),[r,a]=bm();return Pm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Sm.createElement(jo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Dm,Group as Tm,Menu as Rf,Text as ca}from"@mantine/core";import{formatDateTime as km,getReferenceString as Bm}from"@medplum/core";import oe from"react";function Nf(e){return oe.createElement(Xe,null,e.children)}function Je(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(Bo,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Tm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(ca,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(ca,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},km(l)),oe.createElement(ca,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Rf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Rf.Target,null,oe.createElement(Dm,{radius:"xl","aria-label":`Actions for ${Bm(e.resource)}`},oe.createElement(br,null))),a)),oe.createElement(Io,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function qf(e,o){e.sort((t,r)=>{let a=Hf(t,o),n=Hf(r,o);return a>n?1:a<n?-1:Vf(t,o)-Vf(r,o)})}function Hf(e,o){if(!Uf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Vf(e,o){if(!Uf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Uf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Hm=Fm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function $e(e){let o=v(),t=qe(),r=o.getProfile(),a=zf(null),n=X(e.value),[f,l]=Wf(),[s,i]=Wf([]),u=e.loadTimelineResources,m=zf(s);m.current=s;let c=Vt(C=>{qf(C,n),C.reverse(),i(C)},[n]),h=Vt(C=>{let N=[];for(let Te of C){if(Te.status!=="fulfilled")continue;let he=Te.value;if(he.type==="history"&&l(he),he.entry)for(let Ye of he.entry)N.push(Ye.resource)}c(N)},[c]),P=Vt(C=>c([...m.current,C]),[c]),k=Vt(()=>{let C,N;"resourceType"in e.value?(C=e.value.resourceType,N=e.value.id):[C,N]=e.value.reference?.split("/"),u(o,C,N).then(h).catch(console.log)},[o,e.value,u,h]);Nm(()=>k(),[k]);function I(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(N=>P(N)).catch(console.log)}function b(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(N=>P(N)).then(()=>ma({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(Go,{size:16}),autoClose:2e3})).catch(N=>ma({id:"upload-notification",color:"red",title:"Upload error",message:Rm(N),icon:T.createElement(Tr,{size:16}),autoClose:2e3}))}function d(C,N){return o.updateResource({...C,priority:N})}function w(C){d(C,"stat").then(k).catch(console.log)}function y(C){d(C,"routine").then(k).catch(console.log)}function O(C){t(`/${C.resourceType}/${C.id}`)}function Ie(C){t(`/${C.resourceType}/${C.id}/edit`)}function ge(C){t(`/${C.resourceType}/${C.id}/delete`)}function ue(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Y(){Lm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function No(C){ma({id:"upload-notification",loading:!0,title:"Uploading...",message:Xm(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Nf,null,e.createCommunication&&T.createElement(Bo,null,T.createElement(J,{testid:"timeline-form",onSubmit:C=>{I(C.text);let N=a.current;N&&(N.value="",N.focus())}},T.createElement(Mm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement(Em,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(Gf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Mr,{size:16})),T.createElement(So,{onUpload:b,onUploadStart:Y,onUploadProgress:No},C=>T.createElement(Gf,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(zo,{size:16})))))),s.map(C=>{if(!C)return null;let N=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(Vm,{key:N,history:f,resource:C,onDetails:ue});switch(C.resourceType){case"AuditEvent":return T.createElement(zm,{key:N,resource:C,onDetails:O});case"Communication":return T.createElement(Um,{key:N,resource:C,onPin:C.priority!=="stat"?w:void 0,onUnpin:C.priority==="stat"?y:void 0,onDetails:O,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return T.createElement(Wm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});case"Media":return T.createElement(Gm,{key:N,resource:C,onDetails:O,onEdit:Ie,onDelete:ge});default:return T.createElement(Je,{key:N,resource:C,padding:!0},T.createElement(da,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Am,{style:{width:"100%",height:"100%"}},T.createElement(wm,null))}function Ao(e){return T.createElement(Ne.Dropdown,null,T.createElement(Ne.Label,null,"Resource"),e.onPin&&T.createElement(Ne.Item,{icon:T.createElement(wr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${ot(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Ne.Item,{icon:T.createElement(Or,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${ot(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Ne.Item,{icon:T.createElement(Ar,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${ot(e.resource)}`},"Details"),e.onEdit&&T.createElement(Ne.Item,{icon:T.createElement(Dr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${ot(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(Ne.Divider,null),T.createElement(Ne.Label,null,"Danger zone"),T.createElement(Ne.Item,{color:"red",icon:T.createElement(Qo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${ot(e.resource)}`},"Delete")))}function Vm(e){let o=qm(e.history,e.resource);return o?T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Lf,{original:o,revised:e.resource})):T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("h3",null,"Created"),T.createElement(da,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function qm(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Um(e){let{classes:o}=Hm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(Je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Ao,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Gm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(Je,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(we,{value:e.resource.content}))}function zm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(Om,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function Wm(e){return T.createElement(Je,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Ao,{...e})},T.createElement(ua,{value:e.resource}))}function Xm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${pa(e.loaded)} / ${pa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${pa(e.loaded)}`}function pa(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function pB(e){return Qm.createElement($e,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import Xf from"react";function qt(e){let{children:o,...t}=e;return Xf.createElement(Xe,null,Xf.createElement(Bo,{...t},o))}import{createReference as Ut}from"@medplum/core";import Jm from"react";function TB(e){return Jm.createElement($e,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Ut(o),subject:o.subject,sender:Ut(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Ut(o),subject:o.subject,operator:Ut(t),issued:new Date().toISOString(),content:r})})}import{Button as ex,Loader as ox,Table as tx}from"@mantine/core";import{normalizeOperationOutcome as rx}from"@medplum/core";import te,{useEffect as Pl,useRef as bl,useState as Kt}from"react";import{evalFhirPath as $m}from"@medplum/core";import Km from"react";function Qf(e){let o;try{o=$m(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return Km.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Hp,Button as Oo,Center as Jt,createStyles as Vp,Group as $t,Loader as qp,Menu as yl,Pagination as Up,Table as Gp,Text as Pa,UnstyledButton as zp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as ka,formatSearchQuery as Wp,globalSchema as Xp}from"@medplum/core";import S,{useCallback as vl,useEffect as Sl,useRef as Qp,useState as ba}from"react";import{Box as jm,Button as _m,Modal as Zm,Text as Ym}from"@mantine/core";import Fo from"react";function $f(e){return Fo.createElement(Zm,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Fo.createElement(jm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Fo.createElement(Jf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Fo.createElement(Jf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Fo.createElement(Ym,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Jf(e){return Fo.createElement(_m,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as at,Modal as ip}from"@mantine/core";import{globalSchema as up,stringify as dp}from"@medplum/core";import Q,{useEffect as cp,useRef as il,useState as mp}from"react";import{capitalize as ep,DEFAULT_SEARCH_COUNT as op,evalFhirPathTyped as tp,formatDateTime as rp,Operator as M}from"@medplum/core";import Gt from"react";var ap={string:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],fulltext:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],token:[M.EQUALS,M.NOT],reference:[M.EQUALS,M.NOT],numeric:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],quantity:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],date:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY],datetime:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY]},np={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function tt(e,o){return{...e,filters:o,offset:0,name:void 0}}function GB(e){return tt(e,[])}function zt(e,o){return tt(e,(e.filters??[]).filter(t=>t.code!==o))}function Mo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),tt(e,n)}function zB(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function jf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function _f(e,o){return xa(e,o,-1)}function Zf(e,o){return xa(e,o,0)}function Yf(e,o){return xa(e,o,1)}function xa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),ga(e,o,r,a)}function el(e,o){return Ia(e,o,-1)}function ol(e,o){return Ia(e,o,0)}function tl(e,o){return Ia(e,o,1)}function Ia(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),ga(e,o,r,a)}function rl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),ga(e,o,t,new Date)}function ga(e,o,t,r){return e=zt(e,o),e=Kf(e,o,M.GREATER_THAN_OR_EQUALS,t),e=Kf(e,o,M.LESS_THAN_OR_EQUALS,r),e}function Kf(e,o,t,r){return Mo(e,o,t,r.toISOString())}function ha(e,o,t=!0){return Mo(e,o,M.MISSING,t.toString())}function fp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function al(e,o){let t=e.count??op,r=(o-1)*t;return fp(e,r)}function Ca(e,o,t){return o===nl(e)&&t!==void 0&&t===fl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function WB(e,o){let t=!1;return nl(e)===o&&(t=!fl(e)),Ca(e,o,t)}function nl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function fl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ll(e){return ap[e.type]}function rt(e){return np[e]??""}function ye(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(ep).join(" "))}function sl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?rp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?lp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?sp(e,o.searchParams[0]):null}function lp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Gt.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function sp(e,o){let t=tp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Gt.createElement(Gt.Fragment,null,t.map((r,a)=>Gt.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function ul(e){let[o,t]=mp({search:JSON.parse(dp(e.search))}),r=il(null),a=il(null);cp(()=>{t({search:e.search})},[e.search]);function n(d){d.key==="Enter"&&i()}function f(){i()}function l(d){d.key==="Enter"&&u()}function s(){u()}function i(){let d=o.search.fields??[],w=r.current?.value;if(w){let y=[...d,w];t({search:{...o.search,fields:y}})}}function u(){let d=o.search.fields??[],w=a.current?.value;if(w){let y=[...d];y.splice(y.indexOf(w),1),t({search:{...o.search,fields:y}})}}function m(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O<=0||(h(y,O,O-1),t({search:{...o.search,fields:y}}))}function c(){let d=o.search.fields??[],w=a.current?.value;if(!w)return;let y=[...d],O=y.indexOf(w);O>=y.length-1||(h(y,O,O+1),t({search:{...o.search,fields:y}}))}function h(d,w,y){let O=d[w];d[w]=d[y],d[y]=O}if(!e.visible)return null;let P=e.search.resourceType,k=up.types[P],I=o.search.fields??[],b=pp(k).filter(d=>!I.includes(d)).sort((d,w)=>d.localeCompare(w));return Q.createElement(ip,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Q.createElement("div",null,Q.createElement("table",{style:{margin:"auto"}},Q.createElement("thead",null,Q.createElement("tr",null,Q.createElement("th",{colSpan:2,align:"center"},"Available"),Q.createElement("th",{colSpan:2,align:"center"},"Selected"))),Q.createElement("tbody",null,Q.createElement("tr",null,Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:d=>n(d),onDoubleClick:()=>f(),"data-testid":"available"},b.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))),Q.createElement("td",{colSpan:2,align:"center"},Q.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:d=>l(d),onDoubleClick:()=>s(),"data-testid":"selected"},I.map(d=>Q.createElement("option",{key:d,value:d},ye(d))))))),Q.createElement("tfoot",null,Q.createElement("tr",null,Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:i},"Add")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:u},"Remove")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:m},"Up")),Q.createElement("td",{align:"center"},Q.createElement(at,{compact:!0,variant:"outline",onClick:c},"Down")))))),Q.createElement(at,{onClick:()=>e.onOk(o.search)},"OK"))}function pp(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ye(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ye(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ye(a)))}return o}import{Button as ft,Group as Sp,Modal as Pp,NativeSelect as cl}from"@mantine/core";import{globalSchema as bp,stringify as ml}from"@medplum/core";import R,{useEffect as Dp,useRef as xl,useState as va}from"react";import{formatDateTime as xp,getSearchParameterDetails as Ip,globalSchema as gp,Operator as dl,SearchParameterType as hp}from"@medplum/core";import nt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=gp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===dl.EQUALS||t.operator===dl.NOT_EQUALS))return nt.createElement(Oe,{value:{reference:t.value}});let a=Ip(o,r);if(t.code==="_lastUpdated"||a.type===hp.DATETIME)return nt.createElement(nt.Fragment,null,xp(t.value))}return nt.createElement(nt.Fragment,null,t.value)}import{Checkbox as Cp,TextInput as ya}from"@mantine/core";import{getSearchParameterDetails as yp,SearchParameterType as wo}from"@medplum/core";import no from"react";function Xt(e){let o=yp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case wo.REFERENCE:return no.createElement(To,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case wo.BOOLEAN:return no.createElement(Cp,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case wo.DATE:return no.createElement(ya,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case wo.DATETIME:return no.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case wo.NUMBER:return no.createElement(ya,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case wo.QUANTITY:return no.createElement(be,{name:t,defaultValue:vp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return no.createElement(ya,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function vp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Il(e){let[o,t]=va(JSON.parse(ml(e.search))),[r,a]=va(-1),n=xl(o);n.current=o,Dp(()=>{t(JSON.parse(ml(e.search)))},[e.search]);function f(u){t(Mo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=bp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Pp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,m)=>m===r?R.createElement(pl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let h=[...i];h[m]=c,t(tt(n.current,h)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Tp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(m),onDelete:()=>t(jf(n.current,m))})),R.createElement(pl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(Sp,{position:"right",mt:"xl"},R.createElement(ft,{onClick:()=>e.onOk(n.current)},"OK")))}function Tp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,rt(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function pl(e){let[o,t]=va(e.defaultValue??{}),r=xl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&ll(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(cl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),R.createElement("td",null,s&&R.createElement(cl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:rt(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Xt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(ft,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(ft,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as kp,Grid as Sa,Modal as Bp}from"@mantine/core";import fo,{useState as Ap}from"react";function gl(e){let[o,t]=Ap(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return fo.createElement(Bp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},fo.createElement(J,{onSubmit:r},fo.createElement(Sa,null,fo.createElement(Sa.Col,{span:10},fo.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),fo.createElement(Sa.Col,{span:2},fo.createElement(kp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as B}from"@mantine/core";import{Operator as se}from"@medplum/core";import p from"react";function hl(e){if(!e.searchParams)return null;function o(n,f){a(Ca(e.search,n.code,f))}function t(n){a(zt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?p.createElement(Fp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(B.Dropdown,null,e.searchParams.map(n=>p.createElement(B.Item,{key:n.code},ye(n.code))))}function Fp(e){switch(e.searchParam.type){case"date":return p.createElement(Mp,{...e});case"number":case"quantity":return p.createElement(wp,{...e});case"reference":return p.createElement(Op,{...e});case"string":case"token":case"uri":return p.createElement(Ep,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Mp(e){let{searchParam:o}=e,t=o.code;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),p.createElement(B.Item,{icon:p.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),p.createElement(B.Item,{icon:p.createElement(Ir,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Between..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Yf(e.search,t))},"Tomorrow"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Today"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Yesterday"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Next Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(ol(e.search,t))},"This Month"),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(el(e.search,t))},"Last Month"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(Ee,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Year to date"),p.createElement(Qt,{...e}))}function wp(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(B.Item,{icon:p.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),p.createElement(B.Item,{icon:p.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement(Qt,{...e}))}function Op(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(Qt,{...e}))}function Ep(e){let{searchParam:o}=e;return p.createElement(B.Dropdown,null,p.createElement(B.Item,{icon:p.createElement(Wo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(B.Item,{icon:p.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),p.createElement(B.Item,{icon:p.createElement(mo,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(hr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),p.createElement(B.Item,{icon:p.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),p.createElement(Qt,{...e}))}function Qt(e){let{searchParam:o}=e,t=o.code;return p.createElement(p.Fragment,null,p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(pr,{size:14}),onClick:()=>e.onChange(ha(e.search,t))},"Missing"),p.createElement(B.Item,{icon:p.createElement(mr,{size:14}),onClick:()=>e.onChange(ha(e.search,t,!1))},"Not missing"),p.createElement(B.Divider,null),p.createElement(B.Item,{icon:p.createElement(qr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Lp,globalSchema as Rp}from"@medplum/core";function Cl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Np(o,r));return t}function Np(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=Rp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Lp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Da=class extends Event{constructor(t){super("change");this.definition=t}},Ta=class extends Event{constructor(t){super("load");this.response=t}},lo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Jp=Vp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function $p(e){let{classes:o}=Jp(),t=v(),[r,a]=ba(!1),[n,f]=ba(),{search:l,onLoad:s}=e,[i,u]=ba({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),m=Qp(i);m.current=i;let c=l.total??"accurate",h=vl(D=>{f(void 0),t.search(l.resourceType,Wp({...l,total:c,fields:void 0}),D).then(W=>{u({...m.current,searchResponse:W}),s&&s(new Ta(W))}).catch(W=>{u({...m.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),P=vl(()=>{u({...m.current,searchResponse:void 0}),h({cache:"reload"})},[h]);Sl(()=>{h()},[h]);function k(D,W){D.stopPropagation();let ae=D.target.checked,de={...m.current.selected};ae?de[W]=!0:delete de[W],u({...m.current,selected:de})}function I(D){D.stopPropagation();let _=D.target.checked,ae={},de=m.current.searchResponse;_&&de?.entry&&de.entry.forEach(Ho=>{Ho.resource?.id&&(ae[Ho.resource.id]=!0)}),u({...m.current,selected:ae})}function b(){let D=m.current;if(!D.searchResponse?.entry||D.searchResponse.entry.length===0)return!1;for(let W of D.searchResponse.entry)if(W.resource?.id&&!D.selected[W.resource.id])return!1;return!0}function d(D){e.onChange&&e.onChange(new Da(D))}function w(D,W){if(ht(D.target)||D.button===2)return;H(D);let _=D.button===1||D.ctrlKey||D.metaKey;!_&&e.onClick&&e.onClick(new lo(W,D)),_&&e.onAuxClick&&e.onAuxClick(new lo(W,D))}function y(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Sl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Xp.types[e.search.resourceType]))return S.createElement(Jt,{style:{width:"100%",height:"100%"}},S.createElement(qp,null));let Ie=e.checkboxesEnabled,ge=Cl(l),ue=l.resourceType,Y=i.searchResponse,C=Y?.entry?.map(D=>D.resource),N="subtle",Te="gray",he=16,Ye=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement($t,{position:"apart",mb:"xl"},S.createElement($t,{spacing:2},S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(vr,{size:he}),onClick:()=>u({...m.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Br,{size:he}),onClick:()=>u({...m.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(kr,{size:he}),onClick:e.onNew},"New..."),!Ye&&y()&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Vr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...m.current,exportDialogVisible:!0})},"Export..."),!Ye&&e.onDelete&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(Qo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Ye&&e.onBulk&&S.createElement(Oo,{compact:!0,variant:N,color:Te,leftIcon:S.createElement(xr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement($t,{spacing:2},Y&&S.createElement(Pa,{size:"xs",color:"dimmed"},Zp(l,Y.total),"-",Yp(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),S.createElement(Hp,{title:"Refresh",onClick:P},S.createElement(Lr,{size:"1.125rem"})))),S.createElement(Gp,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,Ie&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:b(),onChange:D=>I(D)})),ge.map(D=>S.createElement("th",{key:D.name},S.createElement(yl,{shadow:"md",width:240,position:"bottom-end"},S.createElement(yl.Target,null,S.createElement(zp,{className:o.control},S.createElement($t,{position:"apart",noWrap:!0},S.createElement(Pa,{weight:500,size:"sm"},ye(D.name)),S.createElement(Jt,{className:o.icon},S.createElement(cr,{size:14,stroke:1.5}))))),S.createElement(hl,{search:e.search,searchParams:D.searchParams,onPrompt:(W,_)=>{u({...m.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:_})},onChange:W=>{d(W)}}))))),!e.hideFilters&&S.createElement("tr",null,Ie&&S.createElement("th",null),ge.map(D=>S.createElement("th",{key:D.name},D.searchParams&&S.createElement(Kp,{resourceType:ue,searchParams:D.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,C?.map(D=>D&&S.createElement("tr",{key:D.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>w(W,D),onAuxClick:W=>w(W,D)},Ie&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${D.id}`,checked:!!i.selected[D.id],onChange:W=>k(W,D.id)})),ge.map(W=>S.createElement("td",{key:W.name},sl(D,W))))))),C?.length===0&&S.createElement(Xe,null,S.createElement(Jt,{style:{height:150}},S.createElement(Pa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&S.createElement(Jt,{m:"md",p:"md"},S.createElement(Up,{value:jp(l),total:_p(l,Y.total),onChange:D=>d(al(l,D)),getControlProps:D=>{switch(D){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(ul,{search:e.search,visible:m.current.fieldEditorVisible,onOk:D=>{d(D),u({...m.current,fieldEditorVisible:!1})},onCancel:()=>{u({...m.current,fieldEditorVisible:!1})}}),S.createElement(Il,{search:e.search,visible:m.current.filterEditorVisible,onOk:D=>{d(D),u({...m.current,filterEditorVisible:!1})},onCancel:()=>{u({...m.current,filterEditorVisible:!1})}}),S.createElement($f,{visible:m.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...m.current,exportDialogVisible:!1})}}),S.createElement(gl,{key:i.filterDialogSearchParam?.code,visible:m.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:ue,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:D=>{d(Mo(e.search,D.code,D.operator,D.value)),u({...m.current,filterDialogVisible:!1})},onCancel:()=>{u({...m.current,filterDialogVisible:!1})}}))}var eF=S.memo($p);function Kp(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},rt(t.operator),"\xA0",S.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function jp(e){return Math.floor((e.offset??0)/(e.count??ka))+1}function _p(e,o){let t=e.count??ka;return Math.ceil(o/t)}function Zp(e,o){return Math.min(o,(e.offset??0)+1)}function Yp(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??ka))}function ax(e){let o=v(),[t,r]=Kt(),[a,n]=Kt(),{query:f,fields:l}=e,[s,i]=Kt(),[u,m]=Kt({}),c=bl();c.current=s;let h=bl({});h.current=u,Pl(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(rx(y)))},[o,f]);function P(y,O){y.stopPropagation();let ge=y.target.checked,ue={...h.current};ge?ue[O]=!0:delete ue[O],m(ue)}function k(y){y.stopPropagation();let Ie=y.target.checked,ge={},ue=c.current?.data.ResourceList;Ie&&ue&&ue.forEach(Y=>{Y.id&&(ge[Y.id]=!0)}),m(ge)}function I(){let y=c.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let O of y)if(O.id&&!h.current[O.id])return!1;return!0}function b(y,O){ht(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new lo(O,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new lo(O,y)))}if(Pl(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(ox,null);let w=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(tx,null,te.createElement("thead",null,te.createElement("tr",null,w&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:I(),onChange:y=>k(y)})),l.map(y=>te.createElement("th",{key:y.name},y.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(y=>y&&te.createElement("tr",{key:y.id,"data-testid":"search-control-row",onClick:O=>b(O,y),onAuxClick:O=>b(O,y)},w&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${y.id}`,checked:!!u[y.id],onChange:O=>P(O,y.id)})),l.map(O=>te.createElement("td",{key:O.name},te.createElement(Qf,{propertyType:O.propertyType,path:O.fhirPath,resource:y}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(ex,{onClick:()=>e.onBulk(Object.keys(h.current))},"Bulk..."))}var dF=te.memo(ax);import so from"react";function Ke(e){return so.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},so.createElement("title",null,"Medplum Logo"),so.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),so.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),so.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),so.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),so.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as nx}from"@mantine/core";import Ba from"react";function Eo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Ba.createElement(nx,{icon:Ba.createElement(oo,{size:16}),color:"red"},o.map(t=>Ba.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as jt}from"@medplum/core";import fx,{useCallback as lx}from"react";function bF(e){let o=lx((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return fx.createElement($e,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:jt(t),sender:jt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:jt(t),operator:jt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Tl,Button as sx,createStyles as ix,NativeSelect as ux,Stack as dx,TextInput as Fa}from"@mantine/core";import{getReferenceString as cx}from"@medplum/core";import q,{useEffect as Dl,useRef as kl,useState as lt}from"react";var Bl=ix(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function UF(e){let o=v(),t=X(e.value),[r,a]=lt(void 0),[n,f]=lt(),[l,s]=lt(),[i,u]=lt();function m(){s(void 0)}function c(){f(void 0)}let h=kl();if(h.current=i,Dl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Dl(()=>(u(hx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function P(k,I){u({...h.current,[k]:I})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Fa,{label:"Plan Title",defaultValue:i.title,onChange:k=>P("title",k.currentTarget.value)}),q.createElement(Al,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:k=>P("action",k)}),q.createElement(sx,{type:"submit"},"Save")))}function Al(e){let{classes:o}=Bl(),t=kl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(mx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:f=>{H(f),a({id:Ml()})}},"Add action")))}function mx(e){let{classes:o,cx:t}=Bl(),{action:r}=e,a=gx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(xx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(px,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ma={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function px(e){let{action:o,actionType:t}=e,[r,a]=Fl(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ro,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(ce,{property:Ma,propertyType:a,value:r})))}function xx(e){let{action:o}=e,[t,r]=lt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(dx,{spacing:"xl"},q.createElement(Fa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Fa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(ux,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(Al,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(_t,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(_t,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(_t,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(_t,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(Ix,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function _t(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Et,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:cx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Ix(e){let o=e.action,t="timing",[r,a]=Fl(o);return q.createElement(Re,{property:Ma,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Zo(o,t,f??t,Ma,n))}})}function gx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Fl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Aa=1;function Ml(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Aa=Math.max(Aa,o+1))}return e}return"id-"+Aa++}function hx(e){return{...e,action:wl(e.action)}}function wl(e){if(e)return e.map(o=>({...o,id:Ml(o.id),action:wl(o.action)}))}import{Anchor as je,Button as Vx,createStyles as qx,NativeSelect as Ux,Textarea as Gx,TextInput as Oa,Title as zx}from"@mantine/core";import{globalSchema as Wx,isResource as Xx}from"@medplum/core";import F,{useEffect as Ql,useRef as Qx,useState as Yt}from"react";import{Button as Lo,Checkbox as Ul,Group as Cx,NativeSelect as yx,Radio as Ll,Stack as vx,Stepper as Rl,Textarea as Sx,TextInput as st,Title as Px}from"@mantine/core";import{capitalize as Gl,createReference as bx,getExtension as Dx,getQuestionnaireAnswers as Tx,getReferenceString as zl,getTypedPropertyValue as io,globalSchema as kx,stringify as Nl,evalFhirPathTyped as Bx}from"@medplum/core";import A,{useEffect as Hl,useState as it}from"react";var Ol=(b=>(b.group="group",b.display="display",b.question="question",b.boolean="boolean",b.decimal="decimal",b.integer="integer",b.date="date",b.dateTime="dateTime",b.time="time",b.string="string",b.text="text",b.url="url",b.choice="choice",b.openChoice="open-choice",b.attachment="attachment",b.reference="reference",b.quantity="quantity",b))(Ol||{});function El(e){return e.type==="choice"||e.type==="open-choice"}function Wl(e){let o=v(),t=o.getProfile(),[r,a]=it(),n=X(e.questionnaire),[f,l]=it(),[s,i]=it({}),[u,m]=it(0),c=Nx(n?.item??[]),h=()=>m(I=>I>=c?I:I+1),P=()=>m(I=>I<=0?I:I-1);Hl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Hl(()=>{l(n?wx(n):void 0)},[n]);function k(I){let b={resourceType:"QuestionnaireResponse",item:I};l(b),i(Tx(b))}return!r||!n?null:A.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:zl(n),subject:e.subject,source:bx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&A.createElement(Px,null,n.title),n.item&&A.createElement(Xl,{items:n.item,answers:s,onChange:k,activePage:u,renderPages:c>0}),A.createElement(Cx,{position:"right",mt:"xl"},A.createElement(Mx,{activePage:u,numberOfPages:c,nextStep:h,prevStep:P,submitButtonText:e.submitButtonText})))}function Xl(e){let[o,t]=it(wa(e.items));function r(n,f){let l=o.slice();l[n]=f,t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?A.createElement(Rl.Step,{label:n.text,key:n.linkId},A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r})):A.createElement(Vl,{key:n.linkId,item:n,index:f,answers:e.answers,setResponseItem:r}));return e.renderPages?A.createElement(Rl,{active:e.activePage??0,allowNextStepsSelect:!1},a):A.createElement(vx,null,a)}function Vl(e){if(!Rx(e.item,e.answers))return null;if(e.item.type==="display")return A.createElement("p",{key:e.item.linkId},e.item.text);if(e.item.type==="group")return A.createElement(Zt,{key:e.item.linkId,item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)});if(e.item.type==="boolean"){let o=e.item.initial&&e.item.initial.length>0?e.item.initial[0]:void 0;return A.createElement(Bt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},A.createElement(Ul,{id:e.item.linkId,name:e.item.linkId,defaultChecked:o?.valueBoolean,onChange:t=>e.setResponseItem(e.index,{linkId:e.item.linkId,text:e.item.text,answer:[{valueBoolean:t.currentTarget.checked}]})}))}return A.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},A.createElement(Zt,{item:e.item,answers:e.answers,onChange:o=>e.setResponseItem(e.index,o)}))}function Zt(e){let o=e.item,t=o.type;if(!t)return null;let r=o.linkId;if(!r)return null;let a=o.initial&&o.initial.length>0?o.initial[0]:void 0;function n(l){e.onChange({linkId:o.linkId,text:o.text,item:l})}function f(l){e.onChange({linkId:o.linkId,text:o.text,answer:[l]})}switch(t){case"group":return A.createElement("div",null,A.createElement("h3",null,o.text),o.item&&A.createElement(Xl,{items:o.item,answers:e.answers,onChange:n}));case"boolean":return A.createElement(Ul,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:l=>f({valueBoolean:l.currentTarget.checked})});case"decimal":return A.createElement(st,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:l=>f({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return A.createElement(st,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:l=>f({valueInteger:l.currentTarget.valueAsNumber})});case"date":return A.createElement(st,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:l=>f({valueDate:l.currentTarget.value})});case"dateTime":return A.createElement(Be,{name:r,defaultValue:a?.valueDateTime,onChange:l=>f({valueDateTime:l})});case"time":return A.createElement(st,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:l=>f({valueTime:l.currentTarget.value})});case"string":case"url":return A.createElement(st,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"text":return A.createElement(Sx,{id:r,name:r,defaultValue:a?.valueString,onChange:l=>f({valueString:l.currentTarget.value})});case"attachment":return A.createElement(vt,{name:r,defaultValue:a?.valueAttachment,onChange:l=>f({valueAttachment:l})});case"reference":return A.createElement(To,{name:r,targetTypes:Hx(o),defaultValue:a?.valueReference,onChange:l=>f({valueReference:l})});case"quantity":return A.createElement(be,{name:r,defaultValue:a?.valueQuantity,onChange:l=>f({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return Lx(o)?A.createElement(Ax,{name:r,item:o,initial:a,onChangeAnswer:f}):A.createElement(Fx,{name:r,item:o,initial:a,onChangeAnswer:f});default:return null}}function Ax(e){let{name:o,item:t,initial:r}=e,a=io({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=io({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(ql(l))}return A.createElement(yx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=io({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Gl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:ql(a),data:n})}function ql(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Fx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=kx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=io({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],m=`${o}-option-${i}`,c=io({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Nl(c)===Nl(f)&&(s=m),l.push([m,c])}return A.createElement(Ll.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(m=>m[0]===i);if(u){let m=u[1],c="value"+Gl(m.type);a({[c]:m.value})}}},l.map(([i,u])=>A.createElement(Ll,{key:i,id:i,value:i,label:A.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Mx(e){return e.activePage===0&&e.numberOfPages<=0?A.createElement(Lo,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.nextStep},"Next")):A.createElement(A.Fragment,null,A.createElement(Lo,{onClick:e.prevStep},"Back"),A.createElement(Lo,{onClick:e.nextStep},"Next"))}function wx(e){return{resourceType:"QuestionnaireResponse",questionnaire:zl(e),item:wa(e.item)}}function wa(e){return e?.map(Ox)??[]}function Ox(e){return{linkId:e.linkId,text:e.text,item:wa(e.item),answer:e.initial?.map(Ex)??[]}}function Ex(e){return{...e}}function Lx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Rx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=io({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),n=io({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),f,{operator:l}=r;if(l==="exists")f=!!a===n.value;else if(a===void 0)f=!1;else{let s=l==="="||l==="!="?l?.replace("=","~"):l,[{value:i}]=Bx(`%actualAnswer ${s} %expectedAnswer`,[a],{actualAnswer:a,expectedAnswer:n});f=i}if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Nx(e){return e.filter(t=>Dx(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function Hx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}var Jx=qx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function vM(e){let o=v(),t=X(e.questionnaire),[r,a]=Yt(),[n,f]=Yt(),[l,s]=Yt(),[i,u]=Yt();function m(){u(void 0)}function c(){s(void 0)}return Ql(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Ql(()=>(f(jx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",m),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",c)}),[t]),!r||!n?null:F.createElement("div",null,F.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},F.createElement(Jl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),F.createElement(Vx,{type:"submit"},"Save")))}function Jl(e){let{classes:o,cx:t}=Jx(),r=e.item,a=e.item,n=Xx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Qx();u.current=e.item;function m(d){H(d),e.setSelectedKey(e.item.id)}function c(d){H(d),e.setHoverKey(e.item.id)}function h(d){let w=u.current;e.onChange({...w,item:w.item?.map(y=>y.id===d.id?d:y)})}function P(d){e.onChange({...e.item,item:[...e.item.item??[],d]})}function k(d){e.onChange({...e.item,item:e.item.item?.filter(w=>w!==d)})}function I(d,w){e.onChange({...u.current,[d]:w})}let b=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return F.createElement("div",{"data-testid":a.linkId,className:b,onClick:m,onMouseOver:c},F.createElement("div",{className:o.questionBody},s?F.createElement(F.Fragment,null,n&&F.createElement(Oa,{size:"xl",defaultValue:r.title,onChange:d=>I("title",d.currentTarget.value)}),!n&&F.createElement(Gx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:d=>I("text",d.currentTarget.value)}),a.type==="reference"&&F.createElement(Kx,{item:a,onChange:d=>I("extension",d)}),El(a)&&F.createElement($x,{options:a.answerOption,onChange:d=>I("answerOption",d)})):F.createElement(F.Fragment,null,r.title&&F.createElement(zx,null,r.title),a.text&&F.createElement("div",null,a.text),!f&&F.createElement(Zt,{item:a,answers:{},onChange:()=>{}}))),a.item?.map(d=>F.createElement("div",{key:d.id},F.createElement(Jl,{item:d,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:h,onRemove:()=>k(d)}))),!f&&F.createElement("div",{className:o.topActions},s?F.createElement(F.Fragment,null,F.createElement(Oa,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:d=>I("linkId",d.currentTarget.value)}),!f&&F.createElement(Ux,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:d=>I("type",d.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):F.createElement("div",null,l)),F.createElement("div",{className:o.bottomActions},f&&F.createElement(F.Fragment,null,F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("q"),type:"string",text:"Question"})}},"Add item"),F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P({id:_e(),linkId:Ra("g"),type:"group",text:"Group"})}},"Add group")),n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),P(Zx())}},"Add Page"),s&&!n&&F.createElement(je,{href:"#",onClick:d=>{d.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function $x(e){let o=Wx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return F.createElement("div",null,t.map(r=>{let[a,n]=Se({type:"QuestionnaireItemAnswerOption",value:r},"value");return F.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Re,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),F.createElement("div",null,F.createElement(je,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),F.createElement(je,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:_e()}])}},"Add choice"))}function Kx(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return F.createElement(F.Fragment,null,t.map(r=>F.createElement("div",{key:r.id},F.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Oa,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),F.createElement("div",null,F.createElement(je,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),F.createElement(je,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:_e(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ea=1,La=1;function Ra(e){return e+Ea++}function _e(){return"id-"+La++}function jx(e){return{...e,id:e.id||_e(),item:$l(e.item)}}function $l(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(La=Math.max(La,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ea=Math.max(Ea,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||_e(),item:$l(o.item),answerOption:_x(o.answerOption)}))}function _x(e){if(e)return e.map(o=>({...o,id:o.id||_e()}))}function Zx(){return{id:_e(),linkId:Ra("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{ActionIcon as er,Button as Yx,createStyles as eI,Divider as oI,Group as ut,NativeSelect as Na,Stack as or,Text as tI,TextInput as rI}from"@mantine/core";import{formatRange as Kl,getCodeBySystem as aI}from"@medplum/core";import z,{useEffect as nI,useState as Ha}from"react";var fI=eI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),lI=["gender","age","gestationalAge","context","appliesTo","category"],sI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function MM(e){e=Object.assign(sI,e);let o=e.definition,[t,r]=Ha([]),[a,n]=Ha(1),[f,l]=Ha(1);return nI(()=>{let P=dI(o,l);r(cI(P.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(or,null,t.map(P=>z.createElement(iI,{unit:pI(o.quantitativeDetails?.unit),onChange:m,onAdd:c,onRemove:h,onRemoveGroup:u,key:`group-${P.id}`,intervalGroup:P}))),z.createElement(er,{title:"Add Group",size:"sm",onClick:P=>{H(P),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},z.createElement(co,null)),z.createElement(ut,{position:"right"},z.createElement(Yx,{type:"submit"},"Save")));function s(){let P=t.flatMap(k=>k.intervals).filter(k=>!xI(k));e.onSubmit({...o,qualifiedInterval:P})}function i(P){r(k=>[...k,P])}function u(P){r(k=>k.filter(I=>I.id!==P.id))}function m(P,k){r(I=>{I=[...I];let b=I.find(w=>w.id===P),d=b?.intervals.findIndex(w=>w.id===k.id);return d!==void 0&&b?.intervals[d]&&(b.intervals[d]=k),I})}function c(P,k){k.id===void 0&&(k.id=`id-${f}`,l(I=>I+1)),r(I=>{I=[...I];let b=I.findIndex(d=>d.id===P);if(b!==-1){let d={...I[b]};k={...k,...d.filters},d.intervals=[...d.intervals,k],I[b]=d}return I})}function h(P,k){r(I=>{I=[...I];let b=I.find(d=>d.id===P);return b&&(b.intervals=b.intervals.filter(d=>d.id!==k.id)),I})}}function iI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=fI();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(or,{spacing:"lg"},z.createElement(ut,{position:"right"},z.createElement(er,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ue,null))),z.createElement(uI,{intervalGroup:o,onChange:e.onChange}),z.createElement(oI,null),o.intervals.map(a=>z.createElement(or,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ut,null,z.createElement(rI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(er,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ue,null))),z.createElement(et,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(er,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(co,null))))}function uI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(or,{style:{maxWidth:"50%"}},z.createElement(ut,null,z.createElement(Na,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(ut,{spacing:"xs"},z.createElement(tI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(et,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Na,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(Na,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function dI(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function cI(e,o){let t=1,r={};for(let a of e){let n=mI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(lI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function mI(e){return[`gender=${e.gender}`,`age=${Kl(e.age)}`,`gestationalAge=${Kl(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function pI(e){return e&&(aI(e,"http://unitsofmeasure.org")||e.text)}function xI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as jl,Grid as tr,Text as II}from"@mantine/core";import{formatDateTime as gI,getReferenceString as hI}from"@medplum/core";import xe,{useEffect as CI,useState as _l}from"react";function UM(e){let o=v(),t=X(e.value),[r,a]=_l(!1),[n,f]=_l();if(CI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(tr,null,t.action?.map((i,u)=>{let m=i.resource&&s(i.resource),c=m?.input?.[0]?.valueReference,h=m?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(tr.Col,{span:1,p:"md"},m?.status==="completed"?xe.createElement(Cr,null):xe.createElement(Nr,{color:"gray"})),xe.createElement(tr.Col,{span:9,p:"xs"},xe.createElement(II,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:m?.meta?.author}),"\xA0on\xA0",gI(m?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Nt,{status:m?.status||"unknown"}))),xe.createElement(tr.Col,{span:2,p:"md"},c&&!h&&xe.createElement(jl,{onClick:()=>e.onStart(m,c)},"Start"),c&&h&&xe.createElement(jl,{onClick:()=>e.onEdit(m,c,h)},"Edit")))}));function l(i){let u=[];if(i.action)for(let m of i.action)m.resource?.reference&&u.push({request:{method:"GET",url:m.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===hI(u.resource))return u.resource}}import{createStyles as TI}from"@mantine/core";import ve,{useEffect as kI,useState as BI}from"react";import{stringify as PI}from"@medplum/core";function rr(e,o){let t=yI(e,o);return vI(t,e,o)}function yI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,m=u+1,c=u-1,h=l[m],P=l[c],k,I=0;i===-s||i!==s&&P.i<h.i?(I=h.i,k=h):(I=P.i+1,k=P),l[c]=void 0;let b=I-i,d={i:I,j:b,prev:SI(k),snake:!1};for(;I<t&&b<r&&e[I]===o[b];)I++,b++;if(I>d.i&&(d={i:I,j:b,prev:d,snake:!0}),l[u]=d,I>=t&&b>=r)return l[u]}l[f+s-1]=void 0}}function vI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},m;i.lines.length===0&&u.lines.length>0?m="insert":i.lines.length>0&&u.lines.length===0?m="delete":m="change",r.push({original:i,revised:u,type:m}),a.snake&&(a=a.prev)}return r}function SI(e){return e&&!e.snake&&e.prev?e.prev:e}function Zl(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:PI(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return bI(t,o),DI(t),t}function bI(e,o){for(let t=1;t<o.length;t++){let r=rr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function DI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var AI=TI(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function YM(e){let{classes:o}=AI(),t=v(),[r,a]=BI(e.history);if(kI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Zl(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((l,s)=>ve.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:l.span},ve.createElement(Qe,{value:l.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:l.span},ve.createElement(ne,{to:FI(n,l.meta.versionId)},MI(l.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},s+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},l.value)))))))}function FI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function MI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Ro(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Ro(r,"month");let a=Math.floor(o/86400);if(a>0)return Ro(a,"day");let n=Math.floor(o/3600);if(n>0)return Ro(n,"hour");let f=Math.floor(o/60);return f>0?Ro(f,"minute"):Ro(o,"second")}function Ro(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as wI}from"@mantine/core";import{stringify as Yl}from"@medplum/core";import Ze from"react";var OI=wI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function fw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Yl(o,!0).match(/[^\r\n]+/g),a=Yl(t,!0).match(/[^\r\n]+/g),n=rr(r,a);return Ze.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ze.createElement(EI,{key:"delta"+l,delta:f})))}function EI(e){let{classes:o}=OI();return Ze.createElement(Ze.Fragment,null,"...",Ze.createElement("br",null),e.delta.original.lines.length>0&&Ze.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
- `)),e.delta.revised.lines.length>0&&Ze.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
- `)),"...",Ze.createElement("br",null))}import{Table as LI}from"@mantine/core";import{formatDateTime as RI,normalizeErrorString as NI}from"@medplum/core";import ie,{useEffect as HI,useState as VI}from"react";function pw(e){let o=v(),[t,r]=VI(e.history);return HI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ie.createElement(LI,{withBorder:!0,withColumnBorders:!0},ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Author"),ie.createElement("th",null,"Date"),ie.createElement("th",null,"Version"))),ie.createElement("tbody",null,t.entry?.map((a,n)=>ie.createElement(qI,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function qI(e){let{response:o,resource:t}=e.entry;return t?ie.createElement("tr",null,ie.createElement("td",null,ie.createElement(Qe,{value:t.meta?.author,link:!0})),ie.createElement("td",null,RI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:UI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},NI(o?.outcome)))}function UI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as GI,createStyles as zI,Stack as WI,Text as XI}from"@mantine/core";import{getReferenceString as QI}from"@medplum/core";import Z,{useEffect as JI,useRef as $I,useState as dt}from"react";var KI=zI(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function Dw(e){let{classes:o}=KI(),t=v(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=dt(),l=$I();l.current=n;let[s,i]=dt(fa()),[u,m]=dt(),[c,h]=dt(),[P,k]=dt();if(JI(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",QI(r)],["start","gt"+jI(s)],["start","lt"+_I(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let I=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},I&&Z.createElement(Ce,{value:I,size:"xl"}),I&&Z.createElement(XI,{size:"xl",weight:500},Z.createElement(Oe,{value:I})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,es(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Df,{slots:n,onChangeMonth:i,onClick:m})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(WI,null,n.map(b=>{let d=new Date(b.start);return d.getTime()>u.getTime()&&d.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:b.id},Z.createElement(GI,{variant:"outline",style:{width:150},onClick:()=>h(b)},es(d)))}))),u&&c&&!P&&Z.createElement(Wl,{questionnaire:a,submitButtonText:"Next",onSubmit:k}),u&&c&&P&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function jI(e){return os(e.getTime())}function _I(e){return os(e.getTime()+31*24*60*60*1e3)}function os(e){return new Date(Math.max(Date.now(),e)).toISOString()}function es(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as ar}from"@medplum/core";import ZI from"react";function ww(e){return ZI.createElement($e,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[ar(o)],subject:o.subject,sender:ar(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[ar(o)],subject:o.subject,operator:ar(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Cg}from"@medplum/core";import ur,{useEffect as yg,useState as is}from"react";import{Anchor as ts,Button as YI,Center as eg,Group as og,Stack as tg,Text as rg,TextInput as ag,Title as ng}from"@mantine/core";import{normalizeOperationOutcome as fg}from"@medplum/core";import Ae,{useState as lg}from"react";function nr(e){let o=v(),[t,r]=lg();return Ae.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(fg(n))}}},Ae.createElement(eg,{sx:{flexDirection:"column"}},Ae.createElement(Ke,{size:32}),Ae.createElement(ng,null,"Create project")),Ae.createElement(tg,{spacing:"xl"},Ae.createElement(ag,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(rg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(ts,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(ts,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(og,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(YI,{type:"submit"},"Create project")))}import{Anchor as ir,Button as dg,Center as cg,Checkbox as mg,Divider as pg,Group as ns,PasswordInput as xg,Stack as Ig,Text as fs,TextInput as qa}from"@mantine/core";import{normalizeOperationOutcome as ls}from"@medplum/core";import j,{useEffect as gg,useState as hg}from"react";import sg,{useEffect as ig,useRef as ug,useState as Va}from"react";function fr(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function lr(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=ug(null),[n,f]=Va(typeof google<"u"),[l,s]=Va(!1),[i,u]=Va(!1);return ig(()=>{if(typeof google>"u"){fr("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?sg.createElement("div",{ref:a}):null}function sr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function rs(e){typeof grecaptcha>"u"&&fr("https://www.google.com/recaptcha/api.js?render="+e)}function as(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ss(e){let o=sr(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=hg(),f=At(a,void 0);return gg(()=>{t&&rs(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await as(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(ls(s))}}},j.createElement(cg,{sx:{flexDirection:"column"}},e.children),j.createElement(Eo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ns,{position:"center",p:"xl",style:{height:70}},j.createElement(lr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(ls(s))}}})),j.createElement(pg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Ig,{spacing:"xl"},j.createElement(qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(xg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(fs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(ir,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(fs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(ir,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ir,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ns,{position:"apart",mt:"xl",noWrap:!0},j.createElement(mg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(dg,{type:"submit"},"Create account")))}function xO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=v(),[s,i]=is(void 0),[u,m]=is();yg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(h=>l.processCode(h.code)).then(()=>f()).catch(h=>m(Cg(h)))},[l,o,t,s,f]);function c(h){h.code?l.processCode(h.code).then(()=>f()).catch(console.log):h.login&&i(h.login)}return ur.createElement(qt,{width:450},u&&ur.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ur.createElement(ss,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ur.createElement(nr,{login:s,handleAuthResponse:c}))}import{showNotification as vs}from"@mantine/notifications";import{normalizeErrorString as Ss}from"@medplum/core";import uo,{useCallback as Ga,useEffect as jg,useState as za}from"react";import{Anchor as us,Button as ds,Center as cs,Checkbox as vg,Divider as Sg,Group as Ua,PasswordInput as Pg,Stack as bg,TextInput as Dg}from"@mantine/core";import{normalizeOperationOutcome as Tg}from"@medplum/core";import K,{useCallback as dr,useState as ms}from"react";function ps(e){let[o,t]=ms();return o?K.createElement(Bg,{email:o,...e}):K.createElement(kg,{setEmail:t,...e})}function kg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=v(),s=!e.disableGoogleAuth&&sr(e.googleClientId),i=dr(async c=>{if(!c.authorizeUrl)return!1;let h=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),P=new URL(c.authorizeUrl);return P.searchParams.set("state",h),window.location.assign(P.toString()),!0},[l,f]),u=dr(async c=>{let h=await l.post("auth/method",{email:c.email});await i(h)||o(c.email)},[l,i,o]),m=dr(async c=>{let h=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(h)||r(h)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(cs,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Ua,{position:"center",p:"xl",style:{height:70}},K.createElement(lr,{googleClientId:s,handleGoogleCredential:m})),!n&&K.createElement(Sg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Dg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ds,{type:"submit"},"Next")))}function Bg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,l]=ms(),s=At(f,void 0),i=dr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(m=>l(Tg(m)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(cs,{sx:{flexDirection:"column"}},r),K.createElement(Eo,{issues:s}),K.createElement(bg,{spacing:"xl"},K.createElement(Pg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Ua,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(us,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(vg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ds,{type:"submit"},"Sign in")))}import{Avatar as Ag,Center as Fg,Group as Mg,Stack as wg,Text as xs,Title as Og,UnstyledButton as Eg}from"@mantine/core";import{normalizeOperationOutcome as Lg}from"@medplum/core";import Fe,{useState as Rg}from"react";function Is(e){let o=v(),[t,r]=Rg();return Fe.createElement(wg,null,Fe.createElement(Fg,{sx:{flexDirection:"column"}},Fe.createElement(Ke,{size:32}),Fe.createElement(Og,{order:3},"Choose profile")),Fe.createElement(Eo,{outcome:t}),e.memberships.map(a=>Fe.createElement(Eg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Lg(n)))}},Fe.createElement(Mg,null,Fe.createElement(Ag,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(xs,{size:"sm",weight:500},a.profile?.display),Fe.createElement(xs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Ng,Center as Hg,Checkbox as Vg,Group as qg,Stack as gs,Title as Ug}from"@mantine/core";import He from"react";function hs(e){let o=v();return He.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},He.createElement(gs,null,He.createElement(Hg,{sx:{flexDirection:"column"}},He.createElement(Ke,{size:32}),He.createElement(Ug,null,"Choose scope")),He.createElement(gs,null,(e.scope??"openid").split(" ").map(t=>He.createElement(Vg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),He.createElement(qg,{position:"right",mt:"xl"},He.createElement(Ng,{type:"submit"},"Set scope"))))}import{Alert as Gg,Button as zg,Center as Wg,Group as Xg,Stack as Cs,TextInput as Qg,Title as Jg}from"@mantine/core";import{normalizeErrorString as $g}from"@medplum/core";import Me,{useState as Kg}from"react";function ys(e){let o=v(),[t,r]=Kg(void 0);return Me.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r($g(n)))}},Me.createElement(Cs,null,Me.createElement(Wg,{sx:{flexDirection:"column"}},Me.createElement(Ke,{size:32}),Me.createElement(Jg,null,"Enter MFA code")),t&&Me.createElement(Gg,{icon:Me.createElement(oo,{size:16}),title:"Error",color:"red"},t),Me.createElement(Cs,null,Me.createElement(Qg,{name:"token",label:"MFA code",required:!0})),Me.createElement(Xg,{position:"right",mt:"xl"},Me.createElement(zg,{type:"submit"},"Submit code"))))}function d0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=v(),[i,u]=za(void 0),[m,c]=za(!1),[h,P]=za(void 0),k=Ga(d=>{f?f(d):s.processCode(d).then(()=>{r&&r()}).catch(w=>vs({color:"red",message:Ss(w)}))},[s,f,r]),I=Ga(d=>{c(!!d.mfaRequired),d.login&&u(d.login),d.memberships&&P(d.memberships),d.code&&(t?P(void 0):k(d.code))},[t,k]),b=Ga(d=>{k(d.code)},[k]);return jg(()=>{o&&!i&&s.get("auth/login/"+o).then(I).catch(d=>vs({color:"red",message:Ss(d)}))},[s,o,i,I]),uo.createElement(qt,{width:450},(()=>i?m?uo.createElement(ys,{login:i,handleAuthResponse:I}):h?uo.createElement(Is,{login:i,memberships:h,handleAuthResponse:I}):e.projectId==="new"?uo.createElement(nr,{login:i,handleAuthResponse:I}):e.chooseScopes?uo.createElement(hs,{login:i,scope:e.scope,handleAuthResponse:b}):uo.createElement("div",null,"Success"):uo.createElement(ps,{onForgotPassword:a,onRegister:n,handleAuthResponse:I,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Xa as AddressDisplay,Ka as AddressInput,Za as AnnotationInput,AS as AppShell,yo as AsyncAutocomplete,Bn as AttachmentArrayDisplay,Fn as AttachmentArrayInput,So as AttachmentButton,we as AttachmentDisplay,vt as AttachmentInput,jo as BackboneElementDisplay,Yo as BackboneElementInput,Df as CalendarInput,Bt as CheckboxFormSection,yt as CodeInput,bo as CodeableConceptDisplay,jn as CodeableConceptInput,Rn as CodingDisplay,_n as CodingInput,Hn as ContactDetailDisplay,Yn as ContactDetailInput,Pt as ContactPointDisplay,Mt as ContactPointInput,Xe as Container,Be as DateTimeInput,pB as DefaultResourceTimeline,wn as DescriptionList,On as DescriptionListEntry,ua as DiagnosticReportDisplay,qt as Document,Sc as ElementDefinitionInputSelector,Sf as ElementDefinitionTypeInput,TB as EncounterTimeline,Io as ErrorBoundary,ax as FhirPathTable,J as Form,Pe as FormSection,Sn as Header,gt as HumanNameDisplay,tf as HumanNameInput,Vn as IdentifierDisplay,af as IdentifierInput,Gr as Loading,Ke as Logo,ne as MedplumLink,nh as MedplumProvider,dF as MemoizedFhirPathTable,eF as MemoizedSearchControl,Un as MoneyDisplay,nf as MoneyInput,kn as Navbar,fm as ObservationTable,Eo as OperationOutcomeAlert,Bo as Panel,bF as PatientTimeline,UF as PlanDefinitionBuilder,Ko as QuantityDisplay,be as QuantityInput,vM as QuestionnaireBuilder,Wl as QuestionnaireForm,Zt as QuestionnaireFormItem,Ol as QuestionnaireItemType,bt as RangeDisplay,et as RangeInput,ro as ReferenceDisplay,To as ReferenceInput,MM as ReferenceRangeEditor,iI as ReferenceRangeGroupEditor,xO as RegisterForm,UM as RequestGroupDisplay,Xn as ResourceArrayDisplay,If as ResourceArrayInput,Ce as ResourceAvatar,Qe as ResourceBadge,YM as ResourceBlame,fw as ResourceDiff,kb as ResourceForm,pw as ResourceHistoryTable,Et as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,da as ResourceTable,$e as ResourceTimeline,Dw as Scheduler,Da as SearchChangeEvent,lo as SearchClickEvent,$p as SearchControl,ul as SearchFieldEditor,Il as SearchFilterEditor,Ta as SearchLoadEvent,ww as ServiceRequestTimeline,d0 as SignInForm,Nt as StatusBadge,Nf as Timeline,Je as TimelineItem,vf as TimingInput,ga as addDateFilterBetween,zB as addField,Mo as addFilter,el as addLastMonthFilter,ha as addMissingFilter,tl as addNextMonthFilter,ol as addThisMonthFilter,Zf as addTodayFilter,Yf as addTomorrowFilter,rl as addYearToDateFilter,_f as addYesterdayFilter,ye as buildFieldNameString,GB as clearFilters,zt as clearFiltersOnField,hd as convertIsoToLocal,Cd as convertLocalToIso,fr as createScriptTag,jf as deleteFilter,me as getErrorsForInput,At as getIssuesForExpression,Mc as getMonthString,rt as getOpString,as as getRecaptcha,ll as getSearchOperators,nl as getSortField,fa as getStartMonth,MI as getTimeString,Se as getValueAndType,rs as initRecaptcha,El as isChoiceQuestion,Rx as isQuestionEnabled,fl as isSortDescending,Pn as parseForm,sl as renderValue,tt as setFilters,fp as setOffset,al as setPage,Zo as setPropertyValue,Ca as setSort,qf as sortByDateAndPriority,WB as toggleSort,v as useMedplum,Uo as useMedplumContext,qe as useMedplumNavigate,mt as useMedplumProfile,X as useResource};
64
+ }`.replace(/\s+/g," ")}function Li(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),Ni(Ri(t),o).slice(0,5)}function Ri(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 Ni(e,o){return e.sort((t,r)=>Cn(r,o)-Cn(t,o))}function Cn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,vn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,vn(Ti(r),o));return t}function vn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Qi=Vi(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 Tn(e){let o=zo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Qi(),[s,i]=zi(!1);return U.createElement(qi,{height:60,p:8,style:{zIndex:101}},U.createElement(Ct,{position:"apart"},U.createElement(Ct,{spacing:"xs"},U.createElement(Pn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),U.createElement(bn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(Re,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},U.createElement(Re.Target,null,U.createElement(Pn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},U.createElement(Ct,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement(Ko,{size:"sm",className:f.userName},Ui(r?.name?.[0])),U.createElement(vr,{size:12,stroke:1.5})))),U.createElement(Re.Dropdown,null,U.createElement(Gi,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(ht,{value:o.profile?.name?.[0]}),U.createElement(Ko,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(Re.Divider,null),n.map(u=>u.profile.reference!==Dn(o.profile)&&U.createElement(Re.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(Ct,null,U.createElement(Hi,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(Ko,{size:"sm",weight:500},u.profile.display),U.createElement(Ko,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(Re.Divider,null),U.createElement(Re.Item,{icon:U.createElement(Vr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(Re.Item,{icon:U.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Dn(r)}`)},"Account settings"),U.createElement(Re.Item,{icon:U.createElement(Mr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(Ko,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as cu,createStyles as mu,Navbar as Xr,ScrollArea as pu,Space as xu,Text as Iu}from"@mantine/core";import ae,{useState as gu}from"react";import{Button as $i,Group as Ki,Modal as ji,NativeSelect as _i,Stack as Zi,TextInput as Yi}from"@mantine/core";import{showNotification as Bn}from"@mantine/notifications";import{deepClone as eu,normalizeErrorString as ou}from"@medplum/core";import We from"react";import Ji from"react";function kn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Wi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Xi(o,t);return o}function Wi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Xi(e,o){e[o.name]=o.value}function J(e){return Ji.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=kn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function An(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=eu(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Bn({color:"red",message:ou(u)})})}return We.createElement(ji,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},We.createElement(J,{onSubmit:r},We.createElement(Zi,null,We.createElement(tu,{config:t}),We.createElement(Yi,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),We.createElement(Ki,{position:"right"},We.createElement($i,{mt:"sm",type:"submit"},"OK")))))}function tu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return We.createElement(_i,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import su,{useState as iu}from"react";import ru,{useCallback as au}from"react";function Wr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function nu(e){return typeof e.display=="string"?e.display:Wr(e)}function fu(e){return{value:Wr(e),label:nu(e),resource:e}}function lu(e){return{code:e,display:e}}function bo(e){let o=S(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=au(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let C of d)C.code&&!c.some(P=>P.code===C.code)&&c.push(C);return c},[o,t]);return ru.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:Wr,toOption:fu,loadOptions:f,onCreate:lu,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function vt(e){let[o,t]=iu(e.defaultValue);function r(a){let n=a[0],f=du(n);t(f),e.onChange&&e.onChange(f)}return su.createElement(bo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:uu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function uu(e){return e?{code:e}:void 0}function du(e){return e?.code}var Fn=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 Mn(e){let{classes:o}=Fn(),t=Ue(),r=Cu(e.pathname,e.searchParams,e.menus),[a,n]=gu(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return ae.createElement(ae.Fragment,null,ae.createElement(Xr,{width:{sm:250},p:"xs"},ae.createElement(pu,null,ae.createElement(Xr.Section,{mb:"sm"},ae.createElement(vt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),ae.createElement(Xr.Section,{grow:!0},e.menus?.map(s=>ae.createElement(ae.Fragment,{key:`menu-${s.title}`},ae.createElement(Iu,{className:o.menuTitle},s.title),s.links?.map(i=>ae.createElement(hu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},ae.createElement(yu,{to:i.href,icon:i.icon}),ae.createElement("span",null,i.label))))),e.displayAddBookmark&&ae.createElement(cu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:ae.createElement(Lr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&ae.createElement(An,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function hu(e){let{classes:o,cx:t}=Fn();return ae.createElement(fe,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function yu(e){return e.icon?e.icon:ae.createElement(xu,{w:30})}function Cu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=vu(e,o,f.href);l>a&&(a=l,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,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function QS(e){let o=bu(),[t,r]=Du(localStorage.navbarOpen==="true"),a=S(),n=pt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?ro.createElement(zr,null):ro.createElement(Su,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ro.createElement(Tn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?ro.createElement(Mn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},ro.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},ro.createElement(Pu,{fallback:ro.createElement(zr,null)},e.children)))}import Jr from"react";import{Anchor as Tu}from"@mantine/core";import Xe from"react";function Oe(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?Xe.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&Xe.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&Xe.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Xe.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&Xe.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Xe.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Xe.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Xe.createElement(Tu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function wn(e){return Jr.createElement("div",null,e.values?.map((o,t)=>Jr.createElement("div",{key:"attatchment-"+t},Jr.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as On}from"@mantine/core";import le,{useRef as Bu,useState as Au}from"react";import $r,{useRef as ku}from"react";function Po(e){let o=S(),t=ku(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return $r.createElement($r.Fragment,null,$r.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function En(e){let[o,t]=Au(e.defaultValue??[]),r=Bu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return le.createElement("table",{style:{width:"100%"}},le.createElement("colgroup",null,le.createElement("col",{width:"97%"}),le.createElement("col",{width:"3%"})),le.createElement("tbody",null,o.map((n,f)=>le.createElement("tr",{key:`${f}-${o.length}`},le.createElement("td",null,le.createElement(Oe,{value:n,maxWidth:200})),le.createElement("td",null,le.createElement(On,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},le.createElement(ze,null))))),le.createElement("tr",null,le.createElement("td",null),le.createElement("td",null,le.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>le.createElement(On,{...n,title:"Add",size:"sm",color:"green"},le.createElement(Wo,{size:16})))))))}import{Button as Ln}from"@mantine/core";import Do,{useState as Fu}from"react";function St(e){let[o,t]=Fu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Oe,{value:o,maxWidth:200}),Do.createElement(Ln,{onClick:a=>{H(a),r(void 0)}},"Remove")):Do.createElement(Po,{onUpload:r},a=>Do.createElement(Ln,{...a},"Upload..."))}import{getPropertyDisplayName as Ku,globalSchema as ju}from"@medplum/core";import Yo from"react";var bt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Mu}from"@mantine/core";import jo from"react";var wu=Mu(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 Rn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=wu();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Nn(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{formatDateTime as qu,formatPeriod as Gu,formatTiming as Uu,getElementDefinitionTypeName as zu,getTypedPropertyValue as Qu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as Ou}from"@medplum/core";import Hn from"react";function To(e){return Hn.createElement(Hn.Fragment,null,Ou(e.value))}import{formatCoding as Eu}from"@medplum/core";import Vn from"react";function qn(e){return Vn.createElement(Vn.Fragment,null,Eu(e.value))}import Kr from"react";import Gn 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("]")),Gn.createElement(Gn.Fragment,null,t.join("").trim())}function Un(e){let o=e.value;return o?Kr.createElement(Kr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Kr.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Lu from"react";function zn(e){return Lu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Ru}from"@medplum/core";import Qn from"react";function Wn(e){return Qn.createElement(Qn.Fragment,null,Ru(e.value))}import{formatQuantity as Nu}from"@medplum/core";import Xn from"react";function _o(e){return Xn.createElement(Xn.Fragment,null,Nu(e.value))}import{formatRange as Hu}from"@medplum/core";import Jn from"react";function Dt(e){return Jn.createElement(Jn.Fragment,null,Hu(e.value))}import Tt from"react";function $n(e){let o=e.value;return o?Tt.createElement(Tt.Fragment,null,Tt.createElement(_o,{value:o.numerator}),"\xA0/\xA0",Tt.createElement(_o,{value:o.denominator})):null}import{stringify as Vu}from"@medplum/core";import jr from"react";function ao(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Vu(e.value);return e.link!==!1&&e.value.reference?jr.createElement(fe,{to:e.value},o):jr.createElement(jr.Fragment,null,o)}import kt from"react";function Kn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return kt.createElement(kt.Fragment,null,t.map((a,n)=>kt.createElement("div",{key:`${n}-${t.length}`},kt.createElement(me,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Wu,Box as Xu,CopyButton as Ju,Tooltip as $u}from"@mantine/core";function me(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Xu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Ju,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement($u,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Wu,{color:n?"teal":"gray",onClick:f},n?E.createElement(Qo,{size:"1rem"}):E.createElement(br,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(wn,{values:r,maxWidth:e.maxWidth}):E.createElement(Kn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ao,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,qu(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Ka,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(Oe,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(To,{value:r});case V.Coding:return E.createElement(qn,{value:r});case V.ContactDetail:return E.createElement(Un,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(ht,{value:r});case V.Identifier:return E.createElement(zn,{value:r});case V.Money:return E.createElement(Wn,{value:r});case V.Period:return E.createElement(E.Fragment,null,Gu(r));case V.Quantity:case V.Duration:return E.createElement(_o,{value:r});case V.Range:return E.createElement(Dt,{value:r});case V.Ratio:return E.createElement($n,{value:r});case V.Reference:return E.createElement(ao,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Uu(r));case V.Dosage:case V.UsageContext:return E.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 E.createElement(Zo,{value:{type:zu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function be(e,o){let t=Qu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=ju.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(Rn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(bt.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=be(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Yo.createElement(Nn,{key:f,term:Ku(f)},Yo.createElement(me,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Fc}from"@mantine/core";import{getPropertyDisplayName as kf,globalSchema as Mc}from"@medplum/core";import Ao,{useState as wc}from"react";import{Group as _u,Input as Zu}from"@mantine/core";import Bt from"react";function At(e){return Bt.createElement(_u,{noWrap:!0},Bt.createElement("div",null,e.children),Bt.createElement("div",null,Bt.createElement(Zu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Yu}from"@mantine/core";import ed from"react";function pe(e,o){return e?.issue?.filter(t=>jn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function Ft(e,o){return e?.issue?.filter(t=>jn(t.expression?.[0],o))}function jn(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 ed.createElement(Yu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:pe(e.outcome,e.htmlFor)},e.children)}import{Button as _n,Group as od,Stack as td,TextInput as Zn}from"@mantine/core";import{capitalize as rd,deepClone as ad}from"@medplum/core";import Be,{useEffect as nd,useState as Yn}from"react";function UP(e){let o=S(),t=W(e.defaultValue),[r,a]=Yn(),[n,f]=Yn();return nd(()=>{t&&(f(ad(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Be.createElement("div",null,"Loading..."):Be.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Be.createElement(td,{mb:"xl"},Be.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Be.createElement(Zn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Be.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},Be.createElement(Zn,{name:"id",defaultValue:n.id,disabled:!0}))),Be.createElement(ot,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Be.createElement(od,{position:"right",mt:"xl"},Be.createElement(_n,{type:"submit"},"OK"),e.onDelete&&Be.createElement(_n,{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 l=o.replace("[x]",rd(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as vc,Group as Sc,NativeSelect as bc,Textarea as Pc,TextInput as na}from"@mantine/core";import{capitalize as Dc,getElementDefinitionTypeName as Tc,PropertyType as L}from"@medplum/core";import G,{useState as kc}from"react";import fd,{useState as ld}from"react";function ef(e){let[o,t]=ld(e.defaultValue);function r(a){let n=id(a);t(n),e.onChange&&e.onChange(n)}return fd.createElement(bo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&sd(o),maxSelectedValues:1,onChange:r})}function sd(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function id(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import ud,{useState as dd}from"react";function of(e){let[o,t]=dd(e.defaultValue);function r(a){let n=a[0],f=n&&md(n);t(f),e.onChange&&e.onChange(f)}return ud.createElement(bo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&cd(o),maxSelectedValues:1,onChange:r})}function cd(e){return{system:e.system,code:e.code,display:e.display}}function md(e){return{system:e.system,code:e.code,display:e.display}}import{Group as hd,TextInput as yd}from"@mantine/core";import _r,{useRef as Cd,useState as vd}from"react";import{Group as pd,NativeSelect as tf,TextInput as xd}from"@mantine/core";import Mt,{useRef as Id,useState as gd}from"react";function wt(e){let[o,t]=gd(e.defaultValue),r=Id();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Mt.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},Mt.createElement(tf,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Mt.createElement(tf,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Mt.createElement(xd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function rf(e){let[o,t]=vd(e.defaultValue),r=Cd();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return _r.createElement(hd,{spacing:"xs",grow:!0,noWrap:!0},_r.createElement(yd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),_r.createElement(wt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Sd}from"@mantine/core";import{isValidDate as af}from"@medplum/core";import bd from"react";function Ae(e){return bd.createElement(Sd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Td(),defaultValue:Pd(e.defaultValue),autoFocus:e.autoFocus,error:pe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Dd(t))}}})}function Pd(e){if(!e)return"";let o=new Date(e);return af(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Dd(e){if(!e)return"";let o=new Date(e);return af(o)?o.toISOString():""}function Td(){return"datetime-local"}import{JsonInput as kd}from"@mantine/core";import{stringify as Bd}from"@medplum/core";import Ad from"react";function nf(e){return Ad.createElement(kd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Bd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Fd,NativeSelect as Md,TextInput as Ot}from"@mantine/core";import ko,{useRef as wd,useState as Od}from"react";function ff(e){let[o,t]=Od(e.defaultValue),r=wd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return ko.createElement(Fd,{spacing:"xs",grow:!0,noWrap:!0},ko.createElement(Md,{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=>l(u.currentTarget.value)}),ko.createElement(Ot,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(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 Ed,TextInput as lf}from"@mantine/core";import Zr,{useState as Ld}from"react";function sf(e){let[o,t]=Ld(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Zr.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},Zr.createElement(lf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),Zr.createElement(lf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Rd,TextInput as Nd}from"@mantine/core";import Yr,{useCallback as ea,useState as Hd}from"react";var Vd=["USD","EUR","CAD","GBP","AUD"];function uf(e){let{onChange:o}=e,[t,r]=Hd(e.defaultValue),a=ea(s=>{r(s),o&&o(s)},[o]),n=ea(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=ea(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Yr.createElement(Rd,{defaultValue:t?.currency,data:Vd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Yr.createElement(Nd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Yr.createElement(Pr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as qd}from"@mantine/core";import oa,{useState as Gd}from"react";function df(e){let[o,t]=Gd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(qd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(Ae,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),oa.createElement(Ae,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Ud,NativeSelect as zd,TextInput as cf}from"@mantine/core";import Et,{useState as Qd}from"react";function De(e){let[o,t]=Qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Et.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},Et.createElement(zd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Et.createElement(cf,{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:Wd(a.currentTarget.value)})}}),Et.createElement(cf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Wd(e){if(e)return parseFloat(e)}import{Group as Xd}from"@mantine/core";import ta,{useState as Jd}from"react";function tt(e){let[o,t]=Jd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Xd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(De,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ta.createElement(De,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as $d}from"@mantine/core";import ra,{useState as Kd}from"react";function mf(e){let[o,t]=Kd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ra.createElement($d,{spacing:"xs",grow:!0,noWrap:!0},ra.createElement(De,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ra.createElement(De,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as nc,NativeSelect as fc,TextInput as lc}from"@mantine/core";import{createReference as sc}from"@medplum/core";import Rt,{useRef as gf,useState as hf}from"react";import{Group as jd,Text as pf}from"@mantine/core";import{getDisplayString as _d,getReferenceString as If}from"@medplum/core";import no,{forwardRef as Zd,useCallback as xf,useState as Yd}from"react";var ec={Observation:"code",User:"email:contains"},oc=["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 tc(e){return{value:If(e),label:_d(e),resource:e}}function Lt(e){let o=S(),t=e.resourceType,[r,a]=Yd(),n=W(e.defaultValue,a),f=e.onChange,l=xf(async(i,u)=>{let d=ac(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=xf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:no.createElement(So,{name:e.name,itemComponent:rc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:If,toOption:tc,loadOptions:l,onChange:s,clearable:!0})}var rc=Zd(({label:e,resource:o,...t},r)=>no.createElement("div",{ref:r,...t},no.createElement(jd,{noWrap:!0},no.createElement(Ce,{value:o}),no.createElement("div",null,no.createElement(pf,null,e),no.createElement(pf,{size:"xs",color:"dimmed"},o.birthDate)))));function ac(e){return ec[e]??(oc.includes(e)?"name":"_id")}function Bo(e){let o=ic(e.targetTypes),t=uc(e.defaultValue,o),[r,a]=hf(e.defaultValue),[n,f]=hf(t),l=gf();l.current=r;let s=gf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Rt.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},o?Rt.createElement(fc,{"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(lc,{"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?sc(u):void 0)}}))}function ic(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function uc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as yf}from"@mantine/core";import xe,{useRef as dc,useState as cc}from"react";function Cf(e){let[o,t]=cc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=dc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return xe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},xe.createElement("colgroup",null,xe.createElement("col",{width:"97%"}),xe.createElement("col",{width:"3%"})),xe.createElement("tbody",null,o.map((n,f)=>xe.createElement("tr",{key:`${f}-${o.length}`},xe.createElement("td",null,xe.createElement(Ne,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(yf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},xe.createElement(ze,null))))),xe.createElement("tr",null,xe.createElement("td",null),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(yf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},xe.createElement(po,null))))))}import{Button as bf,Chip as vf,Group as Nt,Modal as mc,NativeSelect as pc,Stack as xc,Switch as Ic,TextInput as gc}from"@mantine/core";import{formatTiming as hc}from"@medplum/core";import $,{useRef as Pf,useState as aa}from"react";var yc=["sun","mon","tue","wed","thu","fri","sat"];function Df(e){let[o,t]=aa(e.defaultValue),[r,a]=aa(!1),n=Pf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,hc(n.current)||"No repeat"),$.createElement(bf,{onClick:()=>a(!0)},"Edit")),$.createElement(Cc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var Sf={repeat:{period:1,periodUnit:"d"}};function Cc(e){let[o,t]=aa(e.defaultValue||Sf),r=Pf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(mc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(xc,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Ae,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(Ic,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?Sf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(gc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(pc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Pe,{title:"Repeat on"},$.createElement(vf.Group,{multiple:!0,onChange:s},$.createElement(Nt,{position:"apart",mt:"md",spacing:"xs"},yc.map(i=>$.createElement(vf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Nt,{position:"right"},$.createElement(bf,{onClick:()=>e.onOk(o)},"OK"))))}function Ne(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===L.Attachment?G.createElement(En,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Cf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(Bc,{elementDefinitionTypes:n,...e}):G.createElement(Tf,{elementDefinitionType:n[0],...e})}function Bc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=kc(t);return G.createElement(Sc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(bc,{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(Tf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Dc(r.code)))}}))}function Tf(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(na,{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(na,{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(Ae,{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(na,{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(vt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(vc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(Pc,{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(Ya,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(tn,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(St,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(ef,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(of,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(rf,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(wt,{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(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(uf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(df,{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(mf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(Bo,{name:r,defaultValue:a,targetTypes:Ac(o),onChange:e.onChange});case L.Timing:return G.createElement(Df,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(ot,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(ot,{typeName:Tc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Ac(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function ot(e){let[o,t]=wc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Mc.types[a];if(!n)return Ao.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Ao.createElement(Fc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||bt.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=be(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Ao.createElement(At,{key:s,title:kf(s),description:i.definition,htmlFor:s},Ao.createElement(Ne,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(C,P)=>{r(et(o,s,P??s,l[1],C))}})):Ao.createElement(Pe,{key:s,title:kf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Ao.createElement(Ne,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(C,P)=>{r(et(o,s,P??s,l[1],C))}}))}))}import{Button as fa,createStyles as Oc,Group as Bf}from"@mantine/core";import ee,{useMemo as Ec,useState as Lc}from"react";var Rc=Oc(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 Nc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Af(e){let{classes:o}=Rc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Lc(la);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Ec(()=>Hc(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(Bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Nc(a)),ee.createElement(Bf,{position:"right",spacing:"xs"},ee.createElement(fa,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(fa,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,d)=>ee.createElement("td",{key:"day-"+d},u&&ee.createElement(fa,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function la(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Hc(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:Vc(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 Vc(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 qc,createStyles as Gc}from"@mantine/core";import Uc from"react";var zc=Gc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Je(e){let{children:o,...t}=e,{classes:r}=zc();return Uc.createElement(qc,{className:r.root,...t},o)}import Zm from"react";import{ActionIcon as Jf,Center as Lm,createStyles as Rm,Group as Nm,Loader as Hm,Menu as He,ScrollArea as Vm,TextInput as qm}from"@mantine/core";import{showNotification as Gm,updateNotification as pa}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as Um}from"@medplum/core";import k,{useCallback as qt,useEffect as zm,useRef as $f,useState as Kf}from"react";import{createStyles as rm,Group as Vt,List as wf,Stack as Of,Text as Te,Title as Ef}from"@mantine/core";import{capitalize as am,formatCodeableConcept as nm,formatDateTime as ua,formatObservationValue as fm,isReference as lm}from"@medplum/core";import I,{useEffect as sm,useState as im}from"react";import{Blockquote as Qc,createStyles as Wc,Stack as Xc}from"@mantine/core";import Ff from"react";var Jc=Wc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function sa({value:e}){let{classes:o}=Jc();return e?Ff.createElement(Xc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Ff.createElement(Qc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Yc}from"@mantine/core";import ia from"react";import{Text as $c}from"@mantine/core";import{getDisplayString as Kc,isOk as jc,normalizeErrorString as _c}from"@medplum/core";import Mf,{useState as Zc}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=Zc(),f=W(o,n),l;if(a&&!jc(a))l=`[${_c(a)}]`;else if(f)l=Kc(f);else return null;return t?Mf.createElement(fe,{to:o,...r},l):Mf.createElement($c,{component:"span",...r},l)}function $e(e){return ia.createElement(Yc,{spacing:"xs"},ia.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),ia.createElement(Ee,{value:e.value,link:e.link}))}import{Badge as em}from"@mantine/core";import om from"react";var tm={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 om.createElement(em,{color:tm[e.status]},e.status)}var Lf=rm(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}}));da.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function da(e){let o=S(),t=W(e.value),[r,a]=im();if(sm(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(Of,null,I.createElement(Ef,null,"Diagnostic Report"),I.createElement(um,{value:t}),!e.hideSpecimenInfo&&dm(r),t.result&&I.createElement(cm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(sa,{value:n}))}function um({value:e}){return I.createElement(Vt,{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($e,{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($e,{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($e,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(Te,null,ua(e.issued))),e.status&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(Te,null,am(e.status))))}function dm(e){return I.createElement(Of,{spacing:"xs"},I.createElement(Ef,{order:2,size:"h6"},"Specimens"),I.createElement(wf,{type:"ordered"},e?.map(o=>I.createElement(wf.Item,{ml:"sm",key:`specimen-${o.id}`},I.createElement(Vt,{spacing:20},I.createElement(Vt,{spacing:5},I.createElement(Te,{fw:500},"Collected:")," ",ua(o.collection?.collectedDateTime)),I.createElement(Vt,{spacing:5},I.createElement(Te,{fw:500},"Received:")," ",ua(o.receivedTime)))))))}function cm(e){let{classes:o}=Lf();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(Rf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function Rf(e){return I.createElement(I.Fragment,null,e.value?.map(o=>I.createElement(mm,{key:`obs-${lm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function mm(e){let{classes:o,cx:t}=Lf(),r=W(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Im(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(fe,{to:r},I.createElement(To,{value:r.code}))),I.createElement("td",null,I.createElement(pm,{value:r})),I.createElement("td",null,I.createElement(xm,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(To,{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-${nm(f)}`},I.createElement(To,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(ao,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Ht,{status:r.status}))),r.hasMember&&I.createElement(Rf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(sa,{value:r.note}))))}function pm(e){let o=e.value;return I.createElement(I.Fragment,null,fm(o))}function xm(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(Dt,{value:o}):null}function Im(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as gm,Paper as hm,useComponentDefaultProps as ym}from"@mantine/core";import Cm from"react";var vm=gm((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%"}}})),Sm={shadow:"xs",radius:"md",withBorder:!0};function Fo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=ym("Panel",Sm,e),{classes:l,cx:s}=vm({width:r,fill:a},{name:"Panel",unstyled:n});return Cm.createElement(hm,{className:s(l.paper,o),...f},t)}import{createStyles as bm}from"@mantine/core";import{getPropertyDisplayName as Pm,stringify as Nf,toTypedValue as Hf}from"@medplum/core";import se,{useEffect as Dm,useState as Tm}from"react";var km=bm(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 qf(e){let{classes:o}=km(),t=S(),[r,a]=Tm();if(Dm(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?se.createElement("table",{className:o.root},se.createElement("colgroup",null,se.createElement("col",{style:{width:"30%"}}),se.createElement("col",{style:{width:"35%"}}),se.createElement("col",{style:{width:"35%"}})),se.createElement("thead",null,se.createElement("tr",null,se.createElement("th",null,"Property"),se.createElement("th",null,"Before"),se.createElement("th",null,"After"))),se.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=be(Hf(e.original),l),[d,c]=be(Hf(e.revised),l);return Vf(i)&&Vf(d)||Nf(i)===Nf(d)?null:se.createElement("tr",{key:l},se.createElement("td",null,Pm(l)),se.createElement("td",{className:o.removed},se.createElement(me,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),se.createElement("td",{className:o.added},se.createElement(me,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Vf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Bm,{useEffect as Am,useState as Fm}from"react";function ca(e){let o=S(),t=W(e.value),[r,a]=Fm();return Am(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Bm.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Mm,Group as wm,Menu as Gf,Text as ma}from"@mantine/core";import{formatDateTime as Om,getReferenceString as Em}from"@medplum/core";import oe from"react";function Uf(e){return oe.createElement(Je,null,e.children)}function Ke(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(Fo,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(wm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(ma,{size:"sm"},oe.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(ma,{size:"xs"},oe.createElement(fe,{color:"dimmed",to:e.resource},Om(l)),oe.createElement(ma,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(fe,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Gf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Gf.Target,null,oe.createElement(Mm,{radius:"xl","aria-label":`Actions for ${Em(e.resource)}`},oe.createElement(Dr,null))),a)),oe.createElement(ho,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function Wf(e,o){e.sort((t,r)=>{let a=zf(t,o),n=zf(r,o);return a>n?1:a<n?-1:Qf(t,o)-Qf(r,o)})}function zf(e,o){if(!Xf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Qf(e,o){if(!Xf(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 Xf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Qm=Rm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function je(e){let o=S(),t=Ue(),r=o.getProfile(),a=$f(null),n=W(e.value),[f,l]=Kf(),[s,i]=Kf([]),u=e.loadTimelineResources,d=$f(s);d.current=s;let c=qt(v=>{Wf(v,n),v.reverse(),i(v)},[n]),C=qt(v=>{let N=[];for(let ke of v){if(ke.status!=="fulfilled")continue;let ye=ke.value;if(ye.type==="history"&&l(ye),ye.entry)for(let eo of ye.entry)N.push(eo.resource)}c(N)},[c]),P=qt(v=>c([...d.current,v]),[c]),B=qt(()=>{let v,N;"resourceType"in e.value?(v=e.value.resourceType,N=e.value.id):[v,N]=e.value.reference?.split("/"),u(o,v,N).then(C).catch(console.log)},[o,e.value,u,C]);zm(()=>B(),[B]);function g(v){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,v)).then(N=>P(N)).catch(console.log)}function D(v){!n||!e.createMedia||o.createResource(e.createMedia(n,r,v)).then(N=>P(N)).then(()=>pa({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:k.createElement(Qo,{size:16}),autoClose:2e3})).catch(N=>pa({id:"upload-notification",color:"red",title:"Upload error",message:Um(N),icon:k.createElement(kr,{size:16}),autoClose:2e3}))}function p(v,N){return o.updateResource({...v,priority:N})}function h(v){p(v,"stat").then(B).catch(console.log)}function y(v){p(v,"routine").then(B).catch(console.log)}function w(v){t(`/${v.resourceType}/${v.id}`)}function ge(v){t(`/${v.resourceType}/${v.id}/edit`)}function he(v){t(`/${v.resourceType}/${v.id}/delete`)}function de(v){t(`/${v.resourceType}/${v.id}/_history/${v.meta?.versionId}`)}function Y(){Gm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Vo(v){pa({id:"upload-notification",loading:!0,title:"Uploading...",message:_m(v),autoClose:!1,withCloseButton:!1})}return n?k.createElement(Uf,null,e.createCommunication&&k.createElement(Fo,null,k.createElement(J,{testid:"timeline-form",onSubmit:v=>{g(v.text);let N=a.current;N&&(N.value="",N.focus())}},k.createElement(Nm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},k.createElement(Ce,{value:r}),k.createElement(qm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),k.createElement(Jf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},k.createElement(wr,{size:16})),k.createElement(Po,{onUpload:D,onUploadStart:Y,onUploadProgress:Vo},v=>k.createElement(Jf,{...v,radius:"xl",color:"blue",variant:"filled"},k.createElement(Wo,{size:16})))))),s.map(v=>{if(!v)return null;let N=`${v.resourceType}/${v.id}/${v.meta?.versionId}`;if(v.resourceType===n.resourceType&&v.id===n.id)return k.createElement(Wm,{key:N,history:f,resource:v,onDetails:de});switch(v.resourceType){case"AuditEvent":return k.createElement(Km,{key:N,resource:v,onDetails:w});case"Communication":return k.createElement(Jm,{key:N,resource:v,onPin:v.priority!=="stat"?h:void 0,onUnpin:v.priority==="stat"?y:void 0,onDetails:w,onEdit:ge,onDelete:he});case"DiagnosticReport":return k.createElement(jm,{key:N,resource:v,onDetails:w,onEdit:ge,onDelete:he});case"Media":return k.createElement($m,{key:N,resource:v,onDetails:w,onEdit:ge,onDelete:he});default:return k.createElement(Ke,{key:N,resource:v,padding:!0},k.createElement(ca,{value:v,ignoreMissingValues:!0}))}})):k.createElement(Lm,{style:{width:"100%",height:"100%"}},k.createElement(Hm,null))}function Mo(e){return k.createElement(He.Dropdown,null,k.createElement(He.Label,null,"Resource"),e.onPin&&k.createElement(He.Item,{icon:k.createElement(Or,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&k.createElement(He.Item,{icon:k.createElement(Er,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&k.createElement(He.Item,{icon:k.createElement(Fr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&k.createElement(He.Item,{icon:k.createElement(Tr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&k.createElement(k.Fragment,null,k.createElement(He.Divider,null),k.createElement(He.Label,null,"Danger zone"),k.createElement(He.Item,{color:"red",icon:k.createElement($o,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function Wm(e){let o=Xm(e.history,e.resource);return o?k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(qf,{original:o,revised:e.resource})):k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement("h3",null,"Created"),k.createElement(ca,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Xm(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 Jm(e){let{classes:o}=Qm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return k.createElement(Ke,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:k.createElement(Mo,{...e})},k.createElement("p",null,e.resource.payload?.[0]?.contentString))}function $m(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return k.createElement(Ke,{resource:e.resource,padding:!!t,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(Oe,{value:e.resource.content}))}function Km(e){return k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(Vm,null,k.createElement("pre",null,e.resource.outcomeDesc)))}function jm(e){return k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(da,{value:e.resource}))}function _m(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${xa(e.loaded)} / ${xa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${xa(e.loaded)}`}function xa(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 AB(e){return Zm.createElement(je,{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 jf from"react";function Gt(e){let{children:o,...t}=e;return jf.createElement(Je,null,jf.createElement(Fo,{...t},o))}import{createReference as Ut}from"@medplum/core";import Ym from"react";function GB(e){return Ym.createElement(je,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Ut(o),subject:o.subject,sender:Ut(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Ut(o),subject:o.subject,operator:Ut(t),issued:new Date().toISOString(),content:r})})}import{Button as fx,Loader as lx,Table as sx}from"@mantine/core";import{normalizeOperationOutcome as ix}from"@medplum/core";import te,{useEffect as Bl,useRef as Al,useState as jt}from"react";import{evalFhirPath as ep}from"@medplum/core";import op from"react";function _f(e){let o;try{o=ep(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 op.createElement(me,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Qp,Button as Lo,Center as $t,createStyles as Wp,Group as Kt,Loader as Xp,Menu as Dl,Pagination as Jp,Table as $p,Text as Pa,UnstyledButton as Kp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ba,formatSearchQuery as jp,globalSchema as _p}from"@medplum/core";import b,{useCallback as Tl,useEffect as kl,useRef as Zp,useState as Da}from"react";import{Box as tp,Button as rp,Modal as ap,Text as np}from"@mantine/core";import wo from"react";function Yf(e){return wo.createElement(ap,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},wo.createElement(tp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&wo.createElement(Zf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&wo.createElement(Zf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),wo.createElement(np,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Zf(e){return wo.createElement(rp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as xp}from"@mantine/core";import{globalSchema as Ip,stringify as gp}from"@medplum/core";import X,{useEffect as hp,useRef as pl,useState as yp}from"react";import{capitalize as fp,DEFAULT_SEARCH_COUNT as lp,evalFhirPathTyped as sp,formatDateTime as ip,Operator as M}from"@medplum/core";import zt from"react";var up={string:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],fulltext:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],token:[M.EQUALS,M.NOT],reference:[M.EQUALS,M.NOT],numeric:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],quantity:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],date:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY],datetime:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY]},dp={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 rA(e){return at(e,[])}function Qt(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function Oo(e,o,t,r,a){a&&(e=Qt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function aA(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 ol(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function tl(e,o){return Ia(e,o,-1)}function rl(e,o){return Ia(e,o,0)}function al(e,o){return Ia(e,o,1)}function Ia(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),ha(e,o,r,a)}function nl(e,o){return ga(e,o,-1)}function fl(e,o){return ga(e,o,0)}function ll(e,o){return ga(e,o,1)}function ga(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),ha(e,o,r,a)}function sl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),ha(e,o,t,new Date)}function ha(e,o,t,r){return e=Qt(e,o),e=el(e,o,M.GREATER_THAN_OR_EQUALS,t),e=el(e,o,M.LESS_THAN_OR_EQUALS,r),e}function el(e,o,t,r){return Oo(e,o,t,r.toISOString())}function ya(e,o,t=!0){return Oo(e,o,M.MISSING,t.toString())}function cp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function il(e,o){let t=e.count??lp,r=(o-1)*t;return cp(e,r)}function Ca(e,o,t){return o===ul(e)&&t!==void 0&&t===dl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function nA(e,o){let t=!1;return ul(e)===o&&(t=!dl(e)),Ca(e,o,t)}function ul(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function dl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function cl(e){return up[e.type]}function nt(e){return dp[e]??""}function ve(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(fp).join(" "))}function ml(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?ip(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?mp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?pp(e,o.searchParams[0]):null}function mp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=be({type:e.resourceType,value:e},t);return r?zt.createElement(me,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function pp(e,o){let t=sp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:zt.createElement(zt.Fragment,null,t.map((r,a)=>zt.createElement(me,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function xl(e){let[o,t]=yp({search:JSON.parse(gp(e.search))}),r=pl(null),a=pl(null);hp(()=>{t({search:e.search})},[e.search]);function n(p){p.key==="Enter"&&i()}function f(){i()}function l(p){p.key==="Enter"&&u()}function s(){u()}function i(){let p=o.search.fields??[],h=r.current?.value;if(h){let y=[...p,h];t({search:{...o.search,fields:y}})}}function u(){let p=o.search.fields??[],h=a.current?.value;if(h){let y=[...p];y.splice(y.indexOf(h),1),t({search:{...o.search,fields:y}})}}function d(){let p=o.search.fields??[],h=a.current?.value;if(!h)return;let y=[...p],w=y.indexOf(h);w<=0||(C(y,w,w-1),t({search:{...o.search,fields:y}}))}function c(){let p=o.search.fields??[],h=a.current?.value;if(!h)return;let y=[...p],w=y.indexOf(h);w>=y.length-1||(C(y,w,w+1),t({search:{...o.search,fields:y}}))}function C(p,h,y){let w=p[h];p[h]=p[y],p[y]=w}if(!e.visible)return null;let P=e.search.resourceType,B=Ip.types[P],g=o.search.fields??[],D=Cp(B).filter(p=>!g.includes(p)).sort((p,h)=>p.localeCompare(h));return X.createElement(xp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},X.createElement("div",null,X.createElement("table",{style:{margin:"auto"}},X.createElement("thead",null,X.createElement("tr",null,X.createElement("th",{colSpan:2,align:"center"},"Available"),X.createElement("th",{colSpan:2,align:"center"},"Selected"))),X.createElement("tbody",null,X.createElement("tr",null,X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:p=>n(p),onDoubleClick:()=>f(),"data-testid":"available"},D.map(p=>X.createElement("option",{key:p,value:p},ve(p))))),X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:p=>l(p),onDoubleClick:()=>s(),"data-testid":"selected"},g.map(p=>X.createElement("option",{key:p,value:p},ve(p))))))),X.createElement("tfoot",null,X.createElement("tr",null,X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),X.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function Cp(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 Bp,Modal as Ap,NativeSelect as gl}from"@mantine/core";import{globalSchema as Fp,stringify as hl}from"@medplum/core";import R,{useEffect as Mp,useRef as Cl,useState as Sa}from"react";import{formatDateTime as vp,getSearchParameterDetails as Sp,globalSchema as bp,Operator as Il,SearchParameterType as Pp}from"@medplum/core";import lt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=bp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Il.EQUALS||t.operator===Il.NOT_EQUALS))return lt.createElement(Ee,{value:{reference:t.value}});let a=Sp(o,r);if(t.code==="_lastUpdated"||a.type===Pp.DATETIME)return lt.createElement(lt.Fragment,null,vp(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Dp,TextInput as va}from"@mantine/core";import{getSearchParameterDetails as Tp,SearchParameterType as Eo}from"@medplum/core";import fo from"react";function Xt(e){let o=Tp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Eo.REFERENCE:return fo.createElement(Bo,{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 Eo.BOOLEAN:return fo.createElement(Dp,{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 Eo.DATE:return fo.createElement(va,{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 Eo.DATETIME:return fo.createElement(Ae,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Eo.NUMBER:return fo.createElement(va,{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 Eo.QUANTITY:return fo.createElement(De,{name:t,defaultValue:kp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return fo.createElement(va,{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 kp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function vl(e){let[o,t]=Sa(JSON.parse(hl(e.search))),[r,a]=Sa(-1),n=Cl(o);n.current=o,Mp(()=>{t(JSON.parse(hl(e.search)))},[e.search]);function f(u){t(Oo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=Fp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Ap,{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(yl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let C=[...i];C[d]=c,t(at(n.current,C)),a(-1)},onCancel:()=>a(-1)}):R.createElement(wp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(ol(n.current,d))})),R.createElement(yl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(Bp,{position:"right",mt:"xl"},R.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function wp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ve(o.code)),R.createElement("td",null,nt(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function yl(e){let[o,t]=Sa(e.defaultValue??{}),r=Cl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&cl(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(gl,{"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)}))]})),R.createElement("td",null,s&&R.createElement(gl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:nt(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Xt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Op,Grid as ba,Modal as Ep}from"@mantine/core";import lo,{useState as Lp}from"react";function Sl(e){let[o,t]=Lp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return lo.createElement(Ep,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},lo.createElement(J,{onSubmit:r},lo.createElement(ba,null,lo.createElement(ba.Col,{span:10},lo.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),lo.createElement(ba.Col,{span:2},lo.createElement(Op,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as ie}from"@medplum/core";import m from"react";function bl(e){if(!e.searchParams)return null;function o(n,f){a(Ca(e.search,n.code,f))}function t(n){a(Qt(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(Rp,{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},ve(n.code))))}function Rp(e){switch(e.searchParam.type){case"date":return m.createElement(Np,{...e});case"number":case"quantity":return m.createElement(Hp,{...e});case"reference":return m.createElement(Vp,{...e});case"string":case"token":case"uri":return m.createElement(qp,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Np(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,ie.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,ie.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(al(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(ll(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(fl(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(nl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(sl(e.search,t))},"Year to date"),m.createElement(Jt,{...e}))}function Hp(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Jt,{...e}))}function Vp(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),m.createElement(Jt,{...e}))}function qp(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(yr,{size:14}),onClick:()=>e.onPrompt(o,ie.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(hr,{size:14}),onClick:()=>e.onPrompt(o,ie.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(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(xr,{size:14}),onClick:()=>e.onChange(ya(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(pr,{size:14}),onClick:()=>e.onChange(ya(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Gr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Gp,globalSchema as Up}from"@medplum/core";function Pl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(zp(o,r));return t}function zp(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=Up.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Gp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ta=class extends Event{constructor(t){super("change");this.definition=t}},ka=class extends Event{constructor(t){super("load");this.response=t}},so=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Yp=Wp(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 ex(e){let{classes:o}=Yp(),t=S(),[r,a]=Da(!1),[n,f]=Da(),{search:l,onLoad:s}=e,[i,u]=Da({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=Zp(i);d.current=i;let c=l.total??"accurate",C=Tl(T=>{f(void 0),t.search(l.resourceType,jp({...l,total:c,fields:void 0}),T).then(Q=>{u({...d.current,searchResponse:Q}),s&&s(new ka(Q))}).catch(Q=>{u({...d.current,searchResponse:void 0}),f(Q)})},[t,l,c,s]),P=Tl(()=>{u({...d.current,searchResponse:void 0}),C({cache:"reload"})},[C]);kl(()=>{C()},[C]);function B(T,Q){T.stopPropagation();let ne=T.target.checked,ce={...d.current.selected};ne?ce[Q]=!0:delete ce[Q],u({...d.current,selected:ce})}function g(T){T.stopPropagation();let _=T.target.checked,ne={},ce=d.current.searchResponse;_&&ce?.entry&&ce.entry.forEach(qo=>{qo.resource?.id&&(ne[qo.resource.id]=!0)}),u({...d.current,selected:ne})}function D(){let T=d.current;if(!T.searchResponse?.entry||T.searchResponse.entry.length===0)return!1;for(let Q of T.searchResponse.entry)if(Q.resource?.id&&!T.selected[Q.resource.id])return!1;return!0}function p(T){e.onChange&&e.onChange(new Ta(T))}function h(T,Q){if(yt(T.target)||T.button===2)return;H(T);let _=T.button===1||T.ctrlKey||T.metaKey;!_&&e.onClick&&e.onClick(new so(Q,T)),_&&e.onAuxClick&&e.onAuxClick(new so(Q,T))}function y(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(kl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&_p.types[e.search.resourceType]))return b.createElement($t,{style:{width:"100%",height:"100%"}},b.createElement(Xp,null));let ge=e.checkboxesEnabled,he=Pl(l),de=l.resourceType,Y=i.searchResponse,v=Y?.entry?.map(T=>T.resource),N="subtle",ke="gray",ye=16,eo=window.innerWidth<768;return b.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&b.createElement(Kt,{position:"apart",mb:"xl"},b.createElement(Kt,{spacing:2},b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Sr,{size:ye}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Ar,{size:ye}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Br,{size:ye}),onClick:e.onNew},"New..."),!eo&&y()&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(qr,{size:ye}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!eo&&e.onDelete&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement($o,{size:ye}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!eo&&e.onBulk&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Ir,{size:ye}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),b.createElement(Kt,{spacing:2},Y&&b.createElement(Pa,{size:"xs",color:"dimmed"},ax(l,Y.total),"-",nx(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),b.createElement(Qp,{title:"Refresh",onClick:P},b.createElement(Rr,{size:"1.125rem"})))),b.createElement($p,{className:o.table},b.createElement("thead",null,b.createElement("tr",null,ge&&b.createElement("th",null,b.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:D(),onChange:T=>g(T)})),he.map(T=>b.createElement("th",{key:T.name},b.createElement(Dl,{shadow:"md",width:240,position:"bottom-end"},b.createElement(Dl.Target,null,b.createElement(Kp,{className:o.control},b.createElement(Kt,{position:"apart",noWrap:!0},b.createElement(Pa,{weight:500,size:"sm"},ve(T.name)),b.createElement($t,{className:o.icon},b.createElement(mr,{size:14,stroke:1.5}))))),b.createElement(bl,{search:e.search,searchParams:T.searchParams,onPrompt:(Q,_)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:Q,filterDialogFilter:_})},onChange:Q=>{p(Q)}}))))),!e.hideFilters&&b.createElement("tr",null,ge&&b.createElement("th",null),he.map(T=>b.createElement("th",{key:T.name},T.searchParams&&b.createElement(ox,{resourceType:de,searchParams:T.searchParams,filters:e.search.filters}))))),b.createElement("tbody",null,v?.map(T=>T&&b.createElement("tr",{key:T.id,className:o.tr,"data-testid":"search-control-row",onClick:Q=>h(Q,T),onAuxClick:Q=>h(Q,T)},ge&&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:Q=>B(Q,T.id)})),he.map(Q=>b.createElement("td",{key:Q.name},ml(T,Q))))))),v?.length===0&&b.createElement(Je,null,b.createElement($t,{style:{height:150}},b.createElement(Pa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&b.createElement($t,{m:"md",p:"md"},b.createElement(Jp,{value:tx(l),total:rx(l,Y.total),onChange:T=>p(il(l,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(xl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:T=>{p(T),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),b.createElement(vl,{search:e.search,visible:d.current.filterEditorVisible,onOk:T=>{p(T),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),b.createElement(Yf,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),b.createElement(Sl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ve(i.filterDialogSearchParam.code):"",resourceType:de,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:T=>{p(Oo(e.search,T.code,T.operator,T.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var xF=b.memo(ex);function ox(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}`},nt(t.operator),"\xA0",b.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function tx(e){return Math.floor((e.offset??0)/(e.count??Ba))+1}function rx(e,o){let t=e.count??Ba;return Math.ceil(o/t)}function ax(e,o){return Math.min(o,(e.offset??0)+1)}function nx(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ba))}function ux(e){let o=S(),[t,r]=jt(),[a,n]=jt(),{query:f,fields:l}=e,[s,i]=jt(),[u,d]=jt({}),c=Al();c.current=s;let C=Al({});C.current=u,Bl(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(ix(y)))},[o,f]);function P(y,w){y.stopPropagation();let he=y.target.checked,de={...C.current};he?de[w]=!0:delete de[w],d(de)}function B(y){y.stopPropagation();let ge=y.target.checked,he={},de=c.current?.data.ResourceList;ge&&de&&de.forEach(Y=>{Y.id&&(he[Y.id]=!0)}),d(he)}function g(){let y=c.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let w of y)if(w.id&&!C.current[w.id])return!1;return!0}function D(y,w){yt(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new so(w,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new so(w,y)))}if(Bl(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(lx,null);let h=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(sx,null,te.createElement("thead",null,te.createElement("tr",null,h&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:g(),onChange:y=>B(y)})),l.map(y=>te.createElement("th",{key:y.name},y.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(y=>y&&te.createElement("tr",{key:y.id,"data-testid":"search-control-row",onClick:w=>D(w,y),onAuxClick:w=>D(w,y)},h&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${y.id}`,checked:!!u[y.id],onChange:w=>P(w,y.id)})),l.map(w=>te.createElement("td",{key:w.name},te.createElement(_f,{propertyType:w.propertyType,path:w.fhirPath,resource:y}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(fx,{onClick:()=>e.onBulk(Object.keys(C.current))},"Bulk..."))}var TF=te.memo(ux);import io from"react";function _e(e){return io.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},io.createElement("title",null,"Medplum Logo"),io.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),io.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"}),io.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"}),io.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),io.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as dx}from"@mantine/core";import Aa from"react";function Ro(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Aa.createElement(dx,{icon:Aa.createElement(to,{size:16}),color:"red"},o.map(t=>Aa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as _t}from"@medplum/core";import cx,{useCallback as mx}from"react";function VF(e){let o=mx((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 cx.createElement(je,{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 Ml,Button as px,createStyles as xx,NativeSelect as Ix,Stack as gx,TextInput as Ma}from"@mantine/core";import{getReferenceString as hx}from"@medplum/core";import q,{useEffect as Fl,useRef as wl,useState as it}from"react";var Ol=xx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function tM(e){let o=S(),t=W(e.value),[r,a]=it(void 0),[n,f]=it(),[l,s]=it(),[i,u]=it();function d(){s(void 0)}function c(){f(void 0)}let C=wl();if(C.current=i,Fl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Fl(()=>(u(Px(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 P(B,g){u({...C.current,[B]:g})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Ma,{label:"Plan Title",defaultValue:i.title,onChange:B=>P("title",B.currentTarget.value)}),q.createElement(El,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:B=>P("action",B)}),q.createElement(px,{type:"submit"},"Save")))}function El(e){let{classes:o}=Ol(),t=wl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(yx,{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(Ml,{href:"#",onClick:f=>{H(f),a({id:Rl()})}},"Add action")))}function yx(e){let{classes:o,cx:t}=Ol(),{action:r}=e,a=bx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(vx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(Cx,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Ml,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var wa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Cx(e){let{action:o,actionType:t}=e,[r,a]=Ll(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ao,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(me,{property:wa,propertyType:a,value:r})))}function vx(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(gx,{spacing:"xl"},q.createElement(Ma,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Ma,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(Ix,{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(El,{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(Zt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(Zt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(Zt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(Zt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(Sx,{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 q.createElement(Lt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:hx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Sx(e){let o=e.action,t="timing",[r,a]=Ll(o);return q.createElement(Ne,{property:wa,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,wa,n))}})}function bx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Ll(e){return be({type:"PlanDefinitionAction",value:e},"timing")}var Fa=1;function Rl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Fa=Math.max(Fa,o+1))}return e}return"id-"+Fa++}function Px(e){return{...e,action:Nl(e.action)}}function Nl(e){if(e)return e.map(o=>({...o,id:Rl(o.id),action:Nl(o.action)}))}import{Anchor as Ve,Button as Vx,createStyles as qx,NativeSelect as Gx,Textarea as Ux,TextInput as Ra,Title as zx}from"@mantine/core";import{globalSchema as Qx,isResource as Wx}from"@medplum/core";import A,{useEffect as zl,useRef as Xx,useState as er}from"react";import{evalFhirPathTyped as Dx,getTypedPropertyValue as Hl}from"@medplum/core";var Oa=(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))(Oa||{});function Vl(e){return e.type==="choice"||e.type==="open-choice"}function ql(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){if(r.operator==="exists"&&!r.answerBoolean&&!o[r.question]?.length){if(t==="any")return!0;continue}let{anyMatch:a,allMatch:n}=kx(r,o,t);if(t==="any"&&a)return!0;if(t==="all"&&!n)return!1}return t!=="any"}function Tx(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Dx(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function kx(e,o,t){let r=o[e.question]||[],a=Hl({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let l of r){let s=Hl({type:"QuestionnaireResponseItemAnswer",value:l},"value[x]"),{operator:i}=e;if(Tx(s,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}import{Checkbox as Bx,MultiSelect as Ax,NativeSelect as Fx,Radio as Gl,TextInput as ut,Textarea as Mx}from"@mantine/core";import{capitalize as La,getTypedPropertyValue as uo,globalSchema as wx,stringify as Ul}from"@medplum/core";import re from"react";function Yt(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.responseItems?.filter(c=>c.linkId===o.linkId)??[],d;Array.isArray(l)?d=l:d=Lx(u[0]?.answer??[],i,l),e.onChange({id:u[0].id,linkId:o.linkId,text:o.text,answer:d})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0;switch(a){case"boolean":return re.createElement(At,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},re.createElement(Bx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return re.createElement(ut,{type:"number",step:"any",id:n,name:n,defaultValue:f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return re.createElement(ut,{type:"number",step:1,id:n,name:n,defaultValue:f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return re.createElement(ut,{type:"date",id:n,name:n,defaultValue:f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return re.createElement(Ae,{name:n,defaultValue:f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return re.createElement(ut,{type:"time",id:n,name:n,defaultValue:f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return re.createElement(ut,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return re.createElement(Mx,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return re.createElement(St,{name:n,defaultValue:f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return re.createElement(Bo,{name:n,targetTypes:Rx(o),defaultValue:f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return re.createElement(De,{name:n,defaultValue:f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return Nx(o)?re.createElement(Ox,{name:n,item:o,initial:f,answers:e.answers,onChangeAnswer:l=>r(l,t)}):re.createElement(Ex,{name:n,item:o,initial:f,answers:e.answers,onChangeAnswer:l=>r(l,t)});default:return null}}function Ox(e){let{name:o,item:t,initial:r}=e,a=uo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=uo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Ea(l))}if(t.repeats){let{propertyName:f,data:l}=Hx(e.item);return re.createElement(Ax,{data:l,placeholder:"Select items",searchable:!0,defaultValue:[Ea(a)??""],onChange:s=>{let i=s.map(u=>{let d=t.answerOption?.find(C=>C[f]===u),c=uo({type:"QuestionnaireItemAnswerOption",value:d},"value");return{[f]:c.value}});e.onChangeAnswer(i)}})}return re.createElement(Fx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=uo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+La(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Ea(a),data:n})}function Ex(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=wx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=uo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],d=`${o}-option-${i}`,c=uo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Ul(c)===Ul(f)&&(s=d),l.push([d,c])}return re.createElement(Gl.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(d=>d[0]===i);if(u){let d=u[1],c="value"+La(d.type);a({[c]:d.value})}}},l.map(([i,u])=>re.createElement(Gl,{key:i,id:i,value:i,label:re.createElement(me,{property:n,propertyType:u.type,value:u.value})})))}function Lx(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 Rx(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 Nx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Hx(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=uo({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+La(t.type),a=(e.answerOption??[]).map(n=>({value:n[r],label:r==="valueCoding"?n.valueCoding?.display:n[r]}));return{propertyName:r,data:a}}function Ea(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}var Jx=qx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function wM(e){let o=S(),t=W(e.questionnaire),[r,a]=er(),[n,f]=er(),[l,s]=er(),[i,u]=er();function d(){u(void 0)}function c(){s(void 0)}return zl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),zl(()=>(f(jx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:A.createElement("div",null,A.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},A.createElement(Ql,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),A.createElement(Vx,{type:"submit"},"Save")))}function Ql(e){let{classes:o,cx:t}=Jx(),r=e.item,a=e.item,n=Wx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Xx();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 C(h){let y=u.current;e.onChange({...y,item:y.item?.map(w=>w.id===h.id?h:w)})}function P(h){e.onChange({...e.item,item:[...e.item.item??[],h]})}function B(h){e.onChange({...e.item,item:e.item.item?.filter(y=>y!==h)})}function g(h,y){e.onChange({...u.current,[h]:y})}function D(h){e.onChange({...e.item,item:e.item.item?.map(y=>y===h?{...y,repeats:!y.repeats}:y)})}let p=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return A.createElement("div",{"data-testid":a.linkId,className:p,onClick:d,onMouseOver:c},A.createElement("div",{className:o.questionBody},s?A.createElement(A.Fragment,null,n&&A.createElement(Ra,{size:"xl",defaultValue:r.title,onChange:h=>g("title",h.currentTarget.value)}),!n&&A.createElement(Ux,{autosize:!0,minRows:2,defaultValue:a.text,onChange:h=>g("text",h.currentTarget.value)}),a.type==="reference"&&A.createElement(Kx,{item:a,onChange:h=>g("extension",h)}),Vl(a)&&A.createElement($x,{options:a.answerOption,onChange:h=>g("answerOption",h)})):A.createElement(A.Fragment,null,r.title&&A.createElement(zx,null,r.title),a.text&&A.createElement("div",null,a.text),!f&&A.createElement(Yt,{item:a,index:0,answers:{},onChange:()=>{}}))),a.item?.map(h=>A.createElement("div",{key:h.id},A.createElement(Ql,{item:h,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:C,onRemove:()=>B(h),onRepeatable:D}))),!f&&A.createElement("div",{className:o.topActions},s?A.createElement(A.Fragment,null,A.createElement(Ra,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:h=>g("linkId",h.currentTarget.value)}),!f&&A.createElement(Gx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:h=>g("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"}]})):A.createElement("div",null,l)),A.createElement("div",{className:o.bottomActions},f&&A.createElement(A.Fragment,null,A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),P({id:Ze(),linkId:Va("q"),type:"string",text:"Question"})}},"Add item"),A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),P({id:Ze(),linkId:Va("g"),type:"group",text:"Group"})}},"Add group")),n&&A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),P(Zx())}},"Add Page"),s&&!n&&A.createElement(A.Fragment,null,A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function $x(e){let o=Qx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return A.createElement("div",null,t.map(r=>{let[a,n]=be({type:"QuestionnaireItemAnswerOption",value:r},"value");return A.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},A.createElement("div",null,A.createElement(Ne,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),A.createElement("div",null,A.createElement(Ve,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),A.createElement(Ve,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:Ze()}])}},"Add choice"))}function Kx(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return A.createElement(A.Fragment,null,t.map(r=>A.createElement("div",{key:r.id},A.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},A.createElement("div",null,A.createElement(Ra,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),A.createElement("div",null,A.createElement(Ve,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),A.createElement(Ve,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:Ze(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Na=1,Ha=1;function Va(e){return e+Na++}function Ze(){return"id-"+Ha++}function jx(e){return{...e,id:e.id||Ze(),item:Wl(e.item)}}function Wl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Ha=Math.max(Ha,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Na=Math.max(Na,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Ze(),item:Wl(o.item),answerOption:_x(o.answerOption)}))}function _x(e){if(e)return e.map(o=>({...o,id:o.id||Ze()}))}function Zx(){return{id:Ze(),linkId:Va("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{Anchor as jl,Button as No,Group as Yx,Stack as eI,Stepper as Xl,Title as oI}from"@mantine/core";import{createReference as tI,getAllQuestionnaireAnswers as rI,getExtension as aI,getReferenceString as _l}from"@medplum/core";import O,{useEffect as Jl,useState as co}from"react";function Zl(e){let o=S(),t=o.getProfile(),[r,a]=co(),n=W(e.questionnaire),[f,l]=co(),[s,i]=co({}),[u,d]=co(0),c=uI(n?.item??[]),C=()=>d(g=>g>=c?g:g+1),P=()=>d(g=>g<=0?g:g-1);Jl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Jl(()=>{l(n?fI(n):void 0)},[n]);function B(g){let D={resourceType:"QuestionnaireResponse",item:g};l(D),i(rI(D))}return!r||!n?null:O.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:_l(n),subject:e.subject,source:tI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&O.createElement(oI,null,n.title),n.item&&O.createElement(Yl,{items:n.item??[],answers:s,onChange:B,renderPages:c>1,activePage:u}),O.createElement(Yx,{position:"right",mt:"xl"},O.createElement(nI,{activePage:u,numberOfPages:c,nextStep:C,prevStep:P,submitButtonText:e.submitButtonText})))}function Yl(e){let[o,t]=co(qa(e.items));function r(n,f){let l=o.some(i=>i.id===n),s;l?s=o.map(i=>i.id===n?f:i):s=[...o,f],t(s),e.onChange(s)}let a=e.items.map((n,f)=>e.renderPages?O.createElement(Xl.Step,{label:n.text,key:n.linkId},O.createElement($l,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r})):O.createElement($l,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r}));return e.renderPages?O.createElement(Xl,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):O.createElement(eI,null,a)}function $l(e){return ql(e.item,e.answers)?e.item.type==="display"?O.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?O.createElement(Kl,{key:e.item.linkId,item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)}):O.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},O.createElement(Kl,{item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)})):null}function Kl(e){let o=e.item;function t(r,a){let n=a??0,f=e.responseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:mI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?O.createElement(dI,{key:e.item.linkId,text:o.text??"",item:o??[],answers:e.answers,onChange:t}):O.createElement(cI,{item:e.item,key:e.item.linkId},({index:r})=>O.createElement(Yt,{...e,index:r}))}function nI(e){return e.activePage===0&&e.numberOfPages<=0?O.createElement(No,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?O.createElement(O.Fragment,null,O.createElement(No,{onClick:e.prevStep},"Back"),O.createElement(No,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?O.createElement(O.Fragment,null,O.createElement(No,{onClick:e.nextStep},"Next")):O.createElement(O.Fragment,null,O.createElement(No,{onClick:e.prevStep},"Back"),O.createElement(No,{onClick:e.nextStep},"Next"))}function fI(e){return{resourceType:"QuestionnaireResponse",questionnaire:_l(e),item:qa(e.item)}}function qa(e){return e?.map(lI)??[]}function lI(e){return{id:es(),linkId:e.linkId,text:e.text,item:qa(e.item),answer:e.initial?.map(iI)??[]}}var sI=1;function es(){return"id-"+sI++}function iI(e){return{...e}}function uI(e){return e.filter(t=>aI(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function dI(e){let[o,t]=co(1),r=e.item;return O.createElement(O.Fragment,null,[...Array(o)].map((a,n)=>O.createElement("div",{key:n},O.createElement("h3",null,e.text),O.createElement(Yl,{items:r.item??[],answers:e.answers,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&O.createElement(jl,{onClick:()=>t(a=>a+1)},"Add Group"))}function cI(e){let[o,t]=co(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return O.createElement(O.Fragment,null,[...Array(o)].map((a,n)=>O.createElement(O.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&O.createElement(jl,{onClick:()=>t(a=>a+1)},"Add Item"))}function mI(e,o){return e.length===0||e.length<o+1?es():e[o].id}import{ActionIcon as or,Button as pI,createStyles as xI,Divider as II,Group as dt,NativeSelect as Ga,Stack as tr,Text as gI,TextInput as hI}from"@mantine/core";import{formatRange as os,getCodeBySystem as yI}from"@medplum/core";import z,{useEffect as CI,useState as Ua}from"react";var vI=xI(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"}})),SI=["gender","age","gestationalAge","context","appliesTo","category"],bI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function ew(e){e=Object.assign(bI,e);let o=e.definition,[t,r]=Ua([]),[a,n]=Ua(1),[f,l]=Ua(1);return CI(()=>{let P=TI(o,l);r(kI(P.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(tr,null,t.map(P=>z.createElement(PI,{unit:AI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:C,onRemoveGroup:u,key:`group-${P.id}`,intervalGroup:P}))),z.createElement(or,{title:"Add Group",size:"sm",onClick:P=>{H(P),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(B=>B+1)}},z.createElement(po,null)),z.createElement(dt,{position:"right"},z.createElement(pI,{type:"submit"},"Save")));function s(){let P=t.flatMap(B=>B.intervals).filter(B=>!FI(B));e.onSubmit({...o,qualifiedInterval:P})}function i(P){r(B=>[...B,P])}function u(P){r(B=>B.filter(g=>g.id!==P.id))}function d(P,B){r(g=>{g=[...g];let D=g.find(h=>h.id===P),p=D?.intervals.findIndex(h=>h.id===B.id);return p!==void 0&&D?.intervals[p]&&(D.intervals[p]=B),g})}function c(P,B){B.id===void 0&&(B.id=`id-${f}`,l(g=>g+1)),r(g=>{g=[...g];let D=g.findIndex(p=>p.id===P);if(D!==-1){let p={...g[D]};B={...B,...p.filters},p.intervals=[...p.intervals,B],g[D]=p}return g})}function C(P,B){r(g=>{g=[...g];let D=g.find(p=>p.id===P);return D&&(D.intervals=D.intervals.filter(p=>p.id!==B.id)),g})}}function PI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=vI();return z.createElement(Je,{"data-testid":o.id,className:r.section},z.createElement(tr,{spacing:"lg"},z.createElement(dt,{position:"right"},z.createElement(or,{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(DI,{intervalGroup:o,onChange:e.onChange}),z.createElement(II,null),o.intervals.map(a=>z.createElement(tr,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(dt,null,z.createElement(hI,{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(or,{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(or,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(po,null))))}function DI(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(tr,{style:{maxWidth:"50%"}},z.createElement(dt,null,z.createElement(Ga,{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(gI,{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(Ga,{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(Ga,{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 TI(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 kI(e,o){let t=1,r={};for(let a of e){let n=BI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(SI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function BI(e){return[`gender=${e.gender}`,`age=${os(e.age)}`,`gestationalAge=${os(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function AI(e){return e&&(yI(e,"http://unitsofmeasure.org")||e.text)}function FI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as ts,Grid as rr,Text as MI}from"@mantine/core";import{formatDateTime as wI,getReferenceString as OI}from"@medplum/core";import Ie,{useEffect as EI,useState as rs}from"react";function uw(e){let o=S(),t=W(e.value),[r,a]=rs(!1),[n,f]=rs();if(EI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return Ie.createElement(rr,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,C=d?.output?.[0]?.valueReference;return Ie.createElement(Ie.Fragment,{key:`action-${u}`},Ie.createElement(rr.Col,{span:1,p:"md"},d?.status==="completed"?Ie.createElement(Cr,null):Ie.createElement(Hr,{color:"gray"})),Ie.createElement(rr.Col,{span:9,p:"xs"},Ie.createElement(MI,{weight:500},i.title),i.description&&Ie.createElement("div",null,i.description),Ie.createElement("div",null,"Last edited by\xA0",Ie.createElement(Ee,{value:d?.meta?.author}),"\xA0on\xA0",wI(d?.meta?.lastUpdated)),Ie.createElement("div",null,"Status: ",Ie.createElement(Ht,{status:d?.status||"unknown"}))),Ie.createElement(rr.Col,{span:2,p:"md"},c&&!C&&Ie.createElement(ts,{onClick:()=>e.onStart(d,c)},"Start"),c&&C&&Ie.createElement(ts,{onClick:()=>e.onEdit(d,c,C)},"Edit")))}));function l(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===OI(u.resource))return u.resource}}import{createStyles as GI}from"@mantine/core";import Se,{useEffect as UI,useState as zI}from"react";import{stringify as HI}from"@medplum/core";function ar(e,o){let t=LI(e,o);return RI(t,e,o)}function LI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,d=u+1,c=u-1,C=l[d],P=l[c],B,g=0;i===-s||i!==s&&P.i<C.i?(g=C.i,B=C):(g=P.i+1,B=P),l[c]=void 0;let D=g-i,p={i:g,j:D,prev:NI(B),snake:!1};for(;g<t&&D<r&&e[g]===o[D];)g++,D++;if(g>p.i&&(p={i:g,j:D,prev:p,snake:!0}),l[u]=p,g>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function RI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function NI(e){return e&&!e.snake&&e.prev?e.prev:e}function as(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:HI(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 VI(t,o),qI(t),t}function VI(e,o){for(let t=1;t<o.length;t++){let r=ar(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function qI(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 QI=GI(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 Sw(e){let{classes:o}=QI(),t=S(),[r,a]=zI(e.history);if(UI(()=>{!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=as(r);return Se.createElement("div",{className:o.container},Se.createElement("table",{className:o.root},Se.createElement("tbody",null,f.map((l,s)=>Se.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&Se.createElement(Se.Fragment,null,Se.createElement("td",{className:o.author,rowSpan:l.span},Se.createElement($e,{value:l.meta.author,link:!0})),Se.createElement("td",{className:o.dateTime,rowSpan:l.span},Se.createElement(fe,{to:WI(n,l.meta.versionId)},XI(l.meta.lastUpdated)))),Se.createElement("td",{className:o.lineNumber},s+1),Se.createElement("td",{className:o.line},Se.createElement("pre",{className:o.pre},l.value)))))))}function WI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function XI(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 JI}from"@mantine/core";import{stringify as ns}from"@medplum/core";import Ye from"react";var $I=JI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Aw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=ns(o,!0).match(/[^\r\n]+/g),a=ns(t,!0).match(/[^\r\n]+/g),n=ar(r,a);return Ye.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ye.createElement(KI,{key:"delta"+l,delta:f})))}function KI(e){let{classes:o}=$I();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{Table as jI}from"@mantine/core";import{formatDateTime as _I,normalizeErrorString as ZI}from"@medplum/core";import ue,{useEffect as YI,useState as eg}from"react";function Nw(e){let o=S(),[t,r]=eg(e.history);return YI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ue.createElement(jI,{withBorder:!0,withColumnBorders:!0},ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Author"),ue.createElement("th",null,"Date"),ue.createElement("th",null,"Version"))),ue.createElement("tbody",null,t.entry?.map((a,n)=>ue.createElement(og,{key:"entry-"+n,entry:a})))):ue.createElement("div",null,"Loading...")}function og(e){let{response:o,resource:t}=e.entry;return t?ue.createElement("tr",null,ue.createElement("td",null,ue.createElement($e,{value:t.meta?.author,link:!0})),ue.createElement("td",null,_I(t.meta?.lastUpdated)),ue.createElement("td",null,ue.createElement(fe,{to:tg(t)},t.meta?.versionId))):ue.createElement("tr",null,ue.createElement("td",{colSpan:3},ZI(o?.outcome)))}function tg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as rg,createStyles as ag,Stack as ng,Text as fg}from"@mantine/core";import{getReferenceString as lg}from"@medplum/core";import Z,{useEffect as sg,useRef as ig,useState as ct}from"react";var ug=ag(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function $w(e){let{classes:o}=ug(),t=S(),r=W(e.schedule),a=W(e.questionnaire),[n,f]=ct(),l=ig();l.current=n;let[s,i]=ct(la()),[u,d]=ct(),[c,C]=ct(),[P,B]=ct();if(sg(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",lg(r)],["start","gt"+dg(s)],["start","lt"+cg(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let g=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},g&&Z.createElement(Ce,{value:g,size:"xl"}),g&&Z.createElement(fg,{size:"xl",weight:500},Z.createElement(Ee,{value:g})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,fs(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Af,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(ng,null,n.map(D=>{let p=new Date(D.start);return p.getTime()>u.getTime()&&p.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:D.id},Z.createElement(rg,{variant:"outline",style:{width:150},onClick:()=>C(D)},fs(p)))}))),u&&c&&!P&&Z.createElement(Zl,{questionnaire:a,submitButtonText:"Next",onSubmit:B}),u&&c&&P&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function dg(e){return ls(e.getTime())}function cg(e){return ls(e.getTime()+31*24*60*60*1e3)}function ls(e){return new Date(Math.max(Date.now(),e)).toISOString()}function fs(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as nr}from"@medplum/core";import mg from"react";function oO(e){return mg.createElement(je,{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:[nr(o)],subject:o.subject,sender:nr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[nr(o)],subject:o.subject,operator:nr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Eg}from"@medplum/core";import dr,{useEffect as Lg,useState as xs}from"react";import{Anchor as ss,Button as pg,Center as xg,Group as Ig,Stack as gg,Text as hg,TextInput as yg,Title as Cg}from"@mantine/core";import{normalizeOperationOutcome as vg}from"@medplum/core";import Fe,{useState as Sg}from"react";function fr(e){let o=S(),[t,r]=Sg();return Fe.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(vg(n))}}},Fe.createElement(xg,{sx:{flexDirection:"column"}},Fe.createElement(_e,{size:32}),Fe.createElement(Cg,null,"Create project")),Fe.createElement(gg,{spacing:"xl"},Fe.createElement(yg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:pe(t,"firstName")}),Fe.createElement(hg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Fe.createElement(ss,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Fe.createElement(ss,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Fe.createElement(Ig,{position:"right",mt:"xl",noWrap:!0},Fe.createElement(pg,{type:"submit"},"Create project")))}import{Anchor as ur,Button as Tg,Center as kg,Checkbox as Bg,Divider as Ag,Group as ds,PasswordInput as Fg,Stack as Mg,Text as cs,TextInput as Qa}from"@mantine/core";import{normalizeOperationOutcome as ms}from"@medplum/core";import j,{useEffect as wg,useState as Og}from"react";import bg,{useEffect as Pg,useRef as Dg,useState as za}from"react";function lr(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 sr(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=Dg(null),[n,f]=za(typeof google<"u"),[l,s]=za(!1),[i,u]=za(!1);return Pg(()=>{if(typeof google>"u"){lr("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?bg.createElement("div",{ref:a}):null}function ir(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 is(e){typeof grecaptcha>"u"&&lr("https://www.google.com/recaptcha/api.js?render="+e)}function us(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ps(e){let o=ir(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=Og(),f=Ft(a,void 0);return wg(()=>{t&&is(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await us(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(ms(s))}}},j.createElement(kg,{sx:{flexDirection:"column"}},e.children),j.createElement(Ro,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ds,{position:"center",p:"xl",style:{height:70}},j.createElement(sr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(ms(s))}}})),j.createElement(Ag,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Mg,{spacing:"xl"},j.createElement(Qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:pe(a,"firstName")}),j.createElement(Qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:pe(a,"lastName")}),j.createElement(Qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:pe(a,"email")}),j.createElement(Fg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:pe(a,"password")}),j.createElement(cs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(ur,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ur,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(cs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(ur,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ur,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ds,{position:"apart",mt:"xl",noWrap:!0},j.createElement(Bg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(Tg,{type:"submit"},"Create account")))}function HO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=S(),[s,i]=xs(void 0),[u,d]=xs();Lg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(C=>l.processCode(C.code)).then(()=>f()).catch(C=>d(Eg(C)))},[l,o,t,s,f]);function c(C){C.code?l.processCode(C.code).then(()=>f()).catch(console.log):C.login&&i(C.login)}return dr.createElement(Gt,{width:450},u&&dr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&dr.createElement(ps,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&dr.createElement(fr,{login:s,handleAuthResponse:c}))}import{showNotification as ks}from"@mantine/notifications";import{normalizeErrorString as Bs}from"@medplum/core";import mo,{useCallback as Xa,useEffect as dh,useState as Ja}from"react";import{Anchor as Is,Button as gs,Center as hs,Checkbox as Rg,Divider as Ng,Group as Wa,PasswordInput as Hg,Stack as Vg,TextInput as qg}from"@mantine/core";import{normalizeOperationOutcome as Gg}from"@medplum/core";import K,{useCallback as cr,useState as ys}from"react";function Cs(e){let[o,t]=ys();return o?K.createElement(zg,{email:o,...e}):K.createElement(Ug,{setEmail:t,...e})}function Ug(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=S(),s=!e.disableGoogleAuth&&ir(e.googleClientId),i=cr(async c=>{if(!c.authorizeUrl)return!1;let C=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),P=new URL(c.authorizeUrl);return P.searchParams.set("state",C),window.location.assign(P.toString()),!0},[l,f]),u=cr(async c=>{let C=await l.post("auth/method",{email:c.email});await i(C)||o(c.email)},[l,i,o]),d=cr(async c=>{let C=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(C)||r(C)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(hs,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Wa,{position:"center",p:"xl",style:{height:70}},K.createElement(sr,{googleClientId:s,handleGoogleCredential:d})),!n&&K.createElement(Ng,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(qg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Wa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(Is,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(gs,{type:"submit"},"Next")))}function zg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,l]=ys(),s=Ft(f,void 0),i=cr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(Gg(d)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(hs,{sx:{flexDirection:"column"}},r),K.createElement(Ro,{issues:s}),K.createElement(Vg,{spacing:"xl"},K.createElement(Hg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:pe(f,"password")})),K.createElement(Wa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(Is,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Rg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(gs,{type:"submit"},"Sign in")))}import{Avatar as Qg,Center as Wg,Group as Xg,Stack as Jg,Text as vs,Title as $g,UnstyledButton as Kg}from"@mantine/core";import{normalizeOperationOutcome as jg}from"@medplum/core";import Me,{useState as _g}from"react";function Ss(e){let o=S(),[t,r]=_g();return Me.createElement(Jg,null,Me.createElement(Wg,{sx:{flexDirection:"column"}},Me.createElement(_e,{size:32}),Me.createElement($g,{order:3},"Choose profile")),Me.createElement(Ro,{outcome:t}),e.memberships.map(a=>Me.createElement(Kg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(jg(n)))}},Me.createElement(Xg,null,Me.createElement(Qg,{radius:"xl"}),Me.createElement("div",{style:{flex:1}},Me.createElement(vs,{size:"sm",weight:500},a.profile?.display),Me.createElement(vs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Zg,Center as Yg,Checkbox as eh,Group as oh,Stack as bs,Title as th}from"@mantine/core";import qe from"react";function Ps(e){let o=S();return qe.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},qe.createElement(bs,null,qe.createElement(Yg,{sx:{flexDirection:"column"}},qe.createElement(_e,{size:32}),qe.createElement(th,null,"Choose scope")),qe.createElement(bs,null,(e.scope??"openid").split(" ").map(t=>qe.createElement(eh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),qe.createElement(oh,{position:"right",mt:"xl"},qe.createElement(Zg,{type:"submit"},"Set scope"))))}import{Alert as rh,Button as ah,Center as nh,Group as fh,Stack as Ds,TextInput as lh,Title as sh}from"@mantine/core";import{normalizeErrorString as ih}from"@medplum/core";import we,{useState as uh}from"react";function Ts(e){let o=S(),[t,r]=uh(void 0);return we.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(ih(n)))}},we.createElement(Ds,null,we.createElement(nh,{sx:{flexDirection:"column"}},we.createElement(_e,{size:32}),we.createElement(sh,null,"Enter MFA code")),t&&we.createElement(rh,{icon:we.createElement(to,{size:16}),title:"Error",color:"red"},t),we.createElement(Ds,null,we.createElement(lh,{name:"token",label:"MFA code",required:!0})),we.createElement(fh,{position:"right",mt:"xl"},we.createElement(ah,{type:"submit"},"Submit code"))))}function E0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=S(),[i,u]=Ja(void 0),[d,c]=Ja(!1),[C,P]=Ja(void 0),B=Xa(p=>{f?f(p):s.processCode(p).then(()=>{r&&r()}).catch(h=>ks({color:"red",message:Bs(h)}))},[s,f,r]),g=Xa(p=>{c(!!p.mfaRequired),p.login&&u(p.login),p.memberships&&P(p.memberships),p.code&&(t?P(void 0):B(p.code))},[t,B]),D=Xa(p=>{B(p.code)},[B]);return dh(()=>{o&&!i&&s.get("auth/login/"+o).then(g).catch(p=>ks({color:"red",message:Bs(p)}))},[s,o,i,g]),mo.createElement(Gt,{width:450},(()=>i?d?mo.createElement(Ts,{login:i,handleAuthResponse:g}):C?mo.createElement(Ss,{login:i,memberships:C,handleAuthResponse:g}):e.projectId==="new"?mo.createElement(fr,{login:i,handleAuthResponse:g}):e.chooseScopes?mo.createElement(Ps,{login:i,scope:e.scope,handleAuthResponse:D}):mo.createElement("div",null,"Success"):mo.createElement(Cs,{onForgotPassword:a,onRegister:n,handleAuthResponse:g,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Ka as AddressDisplay,Ya as AddressInput,tn as AnnotationInput,QS as AppShell,So as AsyncAutocomplete,wn as AttachmentArrayDisplay,En as AttachmentArrayInput,Po as AttachmentButton,Oe as AttachmentDisplay,St as AttachmentInput,Zo as BackboneElementDisplay,ot as BackboneElementInput,Af as CalendarInput,At as CheckboxFormSection,vt as CodeInput,To as CodeableConceptDisplay,ef as CodeableConceptInput,qn as CodingDisplay,of as CodingInput,Un as ContactDetailDisplay,rf as ContactDetailInput,Pt as ContactPointDisplay,wt as ContactPointInput,Je as Container,Ae as DateTimeInput,AB as DefaultResourceTimeline,Rn as DescriptionList,Nn as DescriptionListEntry,da as DiagnosticReportDisplay,Gt as Document,Bc as ElementDefinitionInputSelector,Tf as ElementDefinitionTypeInput,GB as EncounterTimeline,ho as ErrorBoundary,ux as FhirPathTable,J as Form,Pe as FormSection,Tn as Header,ht as HumanNameDisplay,ff as HumanNameInput,zn as IdentifierDisplay,sf as IdentifierInput,zr as Loading,_e as Logo,fe as MedplumLink,Ch as MedplumProvider,TF as MemoizedFhirPathTable,xF as MemoizedSearchControl,Wn as MoneyDisplay,uf as MoneyInput,Mn as Navbar,cm as ObservationTable,Ro as OperationOutcomeAlert,Fo as Panel,VF as PatientTimeline,tM as PlanDefinitionBuilder,_o as QuantityDisplay,De as QuantityInput,wM as QuestionnaireBuilder,Zl as QuestionnaireForm,Oa as QuestionnaireItemType,Kl as QuestionnaireRepeatWrapper,Dt as RangeDisplay,tt as RangeInput,ao as ReferenceDisplay,Bo as ReferenceInput,ew as ReferenceRangeEditor,PI as ReferenceRangeGroupEditor,HO as RegisterForm,uw as RequestGroupDisplay,Kn as ResourceArrayDisplay,Cf as ResourceArrayInput,Ce as ResourceAvatar,$e as ResourceBadge,Sw as ResourceBlame,Aw as ResourceDiff,UP as ResourceForm,Nw as ResourceHistoryTable,Lt as ResourceInput,Ee as ResourceName,me as ResourcePropertyDisplay,Ne as ResourcePropertyInput,ca as ResourceTable,je as ResourceTimeline,$w as Scheduler,Ta as SearchChangeEvent,so as SearchClickEvent,ex as SearchControl,xl as SearchFieldEditor,vl as SearchFilterEditor,ka as SearchLoadEvent,oO as ServiceRequestTimeline,E0 as SignInForm,Ht as StatusBadge,Uf as Timeline,Ke as TimelineItem,Df as TimingInput,ha as addDateFilterBetween,aA as addField,Oo as addFilter,nl as addLastMonthFilter,ya as addMissingFilter,ll as addNextMonthFilter,fl as addThisMonthFilter,rl as addTodayFilter,al as addTomorrowFilter,sl as addYearToDateFilter,tl as addYesterdayFilter,ve as buildFieldNameString,rA as clearFilters,Qt as clearFiltersOnField,Pd as convertIsoToLocal,Dd as convertLocalToIso,lr as createScriptTag,ol as deleteFilter,pe as getErrorsForInput,Ft as getIssuesForExpression,Nc as getMonthString,nt as getOpString,us as getRecaptcha,cl as getSearchOperators,ul as getSortField,la as getStartMonth,XI as getTimeString,be as getValueAndType,is as initRecaptcha,Vl as isChoiceQuestion,ql as isQuestionEnabled,dl as isSortDescending,kn as parseForm,ml as renderValue,at as setFilters,cp as setOffset,il as setPage,et as setPropertyValue,Ca as setSort,Wf as sortByDateAndPriority,nA as toggleSort,S as useMedplum,zo as useMedplumContext,Ue as useMedplumNavigate,pt as useMedplumProfile,W as useResource};
68
68
  //# sourceMappingURL=index.mjs.map