@medplum/react 2.0.32 → 2.1.1

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 +4 -13
  55. package/dist/types/QuestionnaireForm/QuestionnaireFormItem/QuestionnaireFormItem.d.ts +10 -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 Ts}from"@medplum/core";import Wa from"react";function Qa(e){let o=e.value;return o?Wa.createElement(Wa.Fragment,null,Ts(o)):null}import{Group as ks,NativeSelect as Xa,TextInput as Go}from"@mantine/core";import qe,{useRef as Bs,useState as As}from"react";function Ja(e,o){return e.line&&e.line.length>o?e.line[o]:""}function $a(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ka(e){let[o,t]=As(e.defaultValue||{}),r=Bs();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a($a(r.current||{},0,c))}function s(c){a($a(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return qe.createElement(ks,{spacing:"xs",grow:!0,noWrap:!0},qe.createElement(Xa,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),qe.createElement(Xa,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),qe.createElement(Go,{placeholder:"Line 1",defaultValue:Ja(o,0),onChange:c=>l(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"Line 2",defaultValue:Ja(o,1),onChange:c=>s(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),qe.createElement(Go,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Ns}from"@mantine/core";import{createReference as Hs}from"@medplum/core";import Vs,{useRef as qs,useState as Gs}from"react";import{showNotification as Fs}from"@mantine/notifications";import Ms,{createContext as ws,useContext as Os,useEffect as ja,useMemo as Es,useState as Ls}from"react";var _a=ws(void 0);function mh(e){let o=e.medplum,t=e.navigate??Rs,[r,a]=Ls({profile:o.getProfile(),loading:!1});ja(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ja(()=>{function f(){Fs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Es(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ms.createElement(_a.Provider,{value:n},e.children)}function Uo(){return Os(_a)}function S(){return Uo().medplum}function Ge(){return Uo().navigate}function mt(){return Uo().profile}function Rs(e){window.location.assign(e)}function Za(e){let o=mt(),[t,r]=Gs(e.defaultValue||{}),a=qs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Hs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Vs.createElement(Ns,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as hu,useMantineTheme as Cu}from"@mantine/core";import to,{Suspense as yu,useState as vu}from"react";import{Alert as $s}from"@mantine/core";import{normalizeErrorString as Ks}from"@medplum/core";import{forwardRef as Us,createElement as en}from"react";import eo from"prop-types";var Ya={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var zs=Object.defineProperty,Ws=Object.defineProperties,Qs=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,rn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,on=(e,o,t)=>o in e?zs(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,tn=(e,o)=>{for(var t in o||(o={}))rn.call(o,t)&&on(e,t,o[t]);if(pt)for(var t of pt(o))an.call(o,t)&&on(e,t,o[t]);return e},Xs=(e,o)=>Ws(e,Qs(o)),Js=(e,o)=>{var t={};for(var r in e)rn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&an.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Us((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=Js(f,["color","size","stroke","children"]);return en("svg",tn(Xs(tn({ref:n},Ya),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,y])=>en(c,y)),...u||[]])});return r.propTypes={color:eo.string,size:eo.oneOfType([eo.string,eo.number]),stroke:eo.oneOfType([eo.string,eo.number])},r.displayName=`${o}`,r};var dr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var oo=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var cr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var mr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var pr=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var xr=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Ir=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var gr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ee=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var zo=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var hr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Cr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ue=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var mo=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var Wo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var yr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var vr=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Sr=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Pr=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var br=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var po=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var xo=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Dr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Tr=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var kr=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Br=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Ar=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var xt=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var It=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Fr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Mr=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var wr=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Or=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Er=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Lr=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var Io=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Qo=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Xo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Rr=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Nr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Hr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Jo=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Vr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import qr from"react";var go=class extends qr.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?qr.createElement($s,{icon:qr.createElement(oo,{size:16}),title:"Something went wrong",color:"red"},Ks(this.state.error)):this.props.children}};import{Center as js,Loader as _s}from"@mantine/core";import nn from"react";function Gr(){return nn.createElement(js,{style:{width:"100%",height:"100vh"}},nn.createElement(_s,null))}import{Avatar as Ei,createStyles as Li,Group as Ct,Header as Ri,Menu as Le,Stack as Ni,Text as $o,UnstyledButton as yn}from"@mantine/core";import{formatHumanName as Hi,getReferenceString as vn}from"@medplum/core";import U,{useState as Vi}from"react";import{formatHumanName as Zs}from"@medplum/core";import fn from"react";function gt(e){let o=e.value;return o?fn.createElement(fn.Fragment,null,Zs(o,e.options)):null}import{Avatar as cn}from"@mantine/core";import{getDisplayString as ci,getImageSrc as mi}from"@medplum/core";import Ur from"react";import{Anchor as Ys}from"@mantine/core";import{isReference as ei,isResource as oi}from"@medplum/core";import ti from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(ln(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&ln(o[0]))return!0}return!1}function ln(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function ne(e){let o=Ge(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=ri(t);return r&&(s+="/"+r),ti.createElement(Ys,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function ri(e){if(e){if(typeof e=="string")return ai(e);if(oi(e))return ni(e);if(ei(e))return fi(e)}return"#"}function ai(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ni(e){return`/${e.resourceType}/${e.id}`}function fi(e){return`/${e.reference}`}import{deepEquals as li,isReference as dn,isResource as si,normalizeOperationOutcome as ii}from"@medplum/core";import{useCallback as ui,useEffect as sn,useState as di}from"react";function Q(e,o){let t=S(),[r,a]=di(un(t,e)),n=ui(f=>{li(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return dn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(ii(l)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(si(o))return o;if(dn(o))return e.getCachedReference(o)}}function Ce(e){let o=Q(e.value),t=o?ci(o):e.alt??"",r=(o&&mi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Ur.createElement(ne,{to:o},Ur.createElement(cn,{src:r,alt:t,radius:a,...n})):Ur.createElement(cn,{src:r,alt:t,radius:a,...n})}import{createStyles as yi,Group as vi,Text as pn}from"@mantine/core";import{formatHumanName as Si,getDisplayString as hn,getReferenceString as Pi,isUUID as bi}from"@medplum/core";import ze,{forwardRef as Di,useCallback as xn}from"react";import{Loader as pi,MultiSelect as xi}from"@mantine/core";import mn,{useCallback as ho,useEffect as Ii,useRef as Co,useState as yo}from"react";import{showNotification as gi}from"@mantine/notifications";import{normalizeErrorString as hi}from"@medplum/core";function vo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=Ci(o),u=Co(null),[d,c]=yo(void 0),[y,b]=yo(),[A,I]=yo(),[D,p]=yo(),[g,C]=yo(i.map(r)),[O,Ie]=yo([]),ge=Co();ge.current=d;let ue=Co();ue.current=y;let Y=Co();Y.current=A;let Ho=Co();Ho.current=D;let v=Co();v.current=O;let N=ho(()=>{b(void 0);let _=u.current?.value.trim()||"";if(_===ge.current)return;c(_);let ae=new AbortController;I(ae),a(_,ae.signal).then(de=>{ae.signal.aborted||(Ie(de.map(r)),I(void 0),Ho.current&&(de.length>0&&n(de.slice(0,1)),p(!1)))}).catch(de=>{ae.signal.aborted||de.message.includes("aborted")||gi({color:"red",message:hi(de)})})},[a,n,r]),Te=ho(()=>{Y.current&&(Y.current.abort(),I(void 0)),ue.current!==void 0&&window.clearTimeout(ue.current);let _=window.setTimeout(()=>N(),100);b(_)},[N]),he=ho(_=>{let ae=[],de=[];for(let Vo of _){let ct=v.current?.find(Ds=>Ds.value===Vo),qo=ct?.resource;!qo&&l!==!1&&f&&(qo=f(Vo),ct=r(qo)),qo&&ae.push(qo),ct&&de.push(ct)}n(ae),C(de)},[l,n,f,r]),Ye=ho(_=>{_.key==="Enter"&&(!ue.current&&!Y.current?(H(_),v.current&&v.current.length>0&&(Ie(v.current.slice(0,1)),he([v.current[0].value]))):p(!0))},[he]),T=ho(_=>{let ae=r(f(_));return Ie([...v.current,ae]),ae},[f,Ie,r]),W=ho((_,ae)=>!ae,[]);return Ii(()=>()=>{Y.current&&Y.current.abort()},[]),mn.createElement(xi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:Ye,onSearchChange:Te,data:[...g,...O],onFocus:N,onChange:he,onCreate:T,rightSectionWidth:40,rightSection:A?mn.createElement(pi,{size:16}):null,filter:W,creatable:!0})}function Ci(e){return e?Array.isArray(e)?e:[e]:[]}var Ti=yi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function ki(e){return e.id}function Bi(e){return{value:e.id,label:hn(e),resource:e}}function Cn(e){let{classes:o}=Ti(),t=Ge(),r=S(),a=xn(async(f,l)=>{let s=Fi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Mi(u,f)},[r]),n=xn(f=>{f.length>0&&t(`/${Pi(f[0])}`)},[t]);return ze.createElement(vo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:ze.createElement(Lr,{size:16}),placeholder:"Search",itemComponent:Ai,toKey:ki,toOption:Bi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Ai=Di(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),ze.createElement("div",{ref:t,...o},ze.createElement(vi,{noWrap:!0},ze.createElement(Ce,{value:e}),ze.createElement("div",null,ze.createElement(pn,null,hn(e)),ze.createElement(pn,{size:"xs",color:"dimmed"},r))))});function Fi(e){let o=JSON.stringify(e);return bi(e)?`{
1
+ import{formatAddress as Es}from"@medplum/core";import Ka from"react";function ja(e){let o=e.value;return o?Ka.createElement(Ka.Fragment,null,Es(o)):null}import{Group as Ls,NativeSelect as _a,TextInput as zo}from"@mantine/core";import Ue,{useRef as Rs,useState as Ns}from"react";function Za(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Ya(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function en(e){let[o,t]=Ns(e.defaultValue||{}),r=Rs();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(Ya(r.current||{},0,c))}function s(c){a(Ya(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ue.createElement(Ls,{spacing:"xs",grow:!0,noWrap:!0},Ue.createElement(_a,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ue.createElement(_a,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ue.createElement(zo,{placeholder:"Line 1",defaultValue:Za(o,0),onChange:c=>l(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"Line 2",defaultValue:Za(o,1),onChange:c=>s(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Ws}from"@mantine/core";import{createReference as Xs}from"@medplum/core";import Js,{useRef as $s,useState as Ks}from"react";import{showNotification as Hs}from"@mantine/notifications";import Vs,{createContext as qs,useContext as Gs,useEffect as on,useMemo as Us,useState as zs}from"react";var tn=qs(void 0);function Ah(e){let o=e.medplum,t=e.navigate??Qs,[r,a]=zs({profile:o.getProfile(),loading:!1});on(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),on(()=>{function f(){Hs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Us(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Vs.createElement(tn.Provider,{value:n},e.children)}function Qo(){return Gs(tn)}function S(){return Qo().medplum}function ze(){return Qo().navigate}function xt(){return Qo().profile}function Qs(e){window.location.assign(e)}function rn(e){let o=xt(),[t,r]=Ks(e.defaultValue||{}),a=$s();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Xs(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return Js.createElement(Ws,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as ku,useMantineTheme as Tu}from"@mantine/core";import fo,{Suspense as Bu,useState as Au}from"react";import{Alert as ti}from"@mantine/core";import{normalizeErrorString as ri}from"@medplum/core";import{forwardRef as js,createElement as nn}from"react";import ao from"prop-types";var an={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 _s=Object.defineProperty,Zs=Object.defineProperties,Ys=Object.getOwnPropertyDescriptors,It=Object.getOwnPropertySymbols,sn=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable,fn=(e,o,t)=>o in e?_s(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,ln=(e,o)=>{for(var t in o||(o={}))sn.call(o,t)&&fn(e,t,o[t]);if(It)for(var t of It(o))un.call(o,t)&&fn(e,t,o[t]);return e},ei=(e,o)=>Zs(e,Ys(o)),oi=(e,o)=>{var t={};for(var r in e)sn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&It)for(var r of It(e))o.indexOf(r)<0&&un.call(e,r)&&(t[r]=e[r]);return t},I=(e,o,t)=>{let r=js((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=oi(f,["color","size","stroke","children"]);return nn("svg",ln(ei(ln({ref:n},an),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,g])=>nn(c,g)),...u||[]])});return r.propTypes={color:ao.string,size:ao.oneOfType([ao.string,ao.number]),stroke:ao.oneOfType([ao.string,ao.number])},r.displayName=`${o}`,r};var xr=I("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 no=I("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var Ir=I("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 gr=I("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 hr=I("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 yr=I("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 Cr=I("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 vr=I("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 Ne=I("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var Wo=I("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Sr=I("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 br=I("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Qe=I("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 xo=I("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 Xo=I("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 Pr=I("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 Dr=I("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 kr=I("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 Tr=I("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Br=I("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 Io=I("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 go=I("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Ar=I("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 Fr=I("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 Mr=I("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 wr=I("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 Or=I("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var gt=I("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var ht=I("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Er=I("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 Lr=I("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 Rr=I("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 Nr=I("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Hr=I("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 Vr=I("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 ho=I("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Jo=I("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var $o=I("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 qr=I("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 Gr=I("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 Ur=I("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Ko=I("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 zr=I("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Qr from"react";var yo=class extends Qr.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Qr.createElement(ti,{icon:Qr.createElement(no,{size:16}),title:"Something went wrong",color:"red"},ri(this.state.error)):this.props.children}};import{Center as ai,Loader as ni}from"@mantine/core";import dn from"react";function Wr(){return dn.createElement(ai,{style:{width:"100%",height:"100vh"}},dn.createElement(ni,null))}import{Avatar as Ui,createStyles as zi,Group as vt,Header as Qi,Menu as He,Stack as Wi,Text as jo,UnstyledButton as Dn}from"@mantine/core";import{formatHumanName as Xi,getReferenceString as kn}from"@medplum/core";import U,{useState as Ji}from"react";import{formatHumanName as fi}from"@medplum/core";import cn from"react";function yt(e){let o=e.value;return o?cn.createElement(cn.Fragment,null,fi(o,e.options)):null}import{Avatar as gn}from"@mantine/core";import{getDisplayString as Ci,getImageSrc as vi}from"@medplum/core";import Xr from"react";import{Anchor as li}from"@mantine/core";import{isReference as si,isResource as ii}from"@medplum/core";import ui from"react";function N(e){e.preventDefault(),e.stopPropagation()}function Ct(e){if(mn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&mn(o[0]))return!0}return!1}function mn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function le(e){let o=ze(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=di(t);return r&&(s+="/"+r),ui.createElement(li,{href:s,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(s)},...l},f)}function di(e){if(e){if(typeof e=="string")return ci(e);if(ii(e))return mi(e);if(si(e))return pi(e)}return"#"}function ci(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function mi(e){return`/${e.resourceType}/${e.id}`}function pi(e){return`/${e.reference}`}import{deepEquals as xi,isReference as In,isResource as Ii,normalizeOperationOutcome as gi}from"@medplum/core";import{useCallback as hi,useEffect as pn,useState as yi}from"react";function W(e,o){let t=S(),[r,a]=yi(xn(t,e)),n=hi(f=>{xi(f,r)||a(f)},[r,a]);return pn(()=>{n(xn(t,e))},[t,e,n]),pn(()=>{let f=!0;return In(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(gi(l)))}),()=>f=!1},[t,r,e,n,o]),r}function xn(e,o){if(o){if(Ii(o))return o;if(In(o))return e.getCachedReference(o)}}function Ce(e){let o=W(e.value),t=o?Ci(o):e.alt??"",r=(o&&vi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Xr.createElement(le,{to:o},Xr.createElement(gn,{src:r,alt:t,radius:a,...n})):Xr.createElement(gn,{src:r,alt:t,radius:a,...n})}import{createStyles as Bi,Group as Ai,Text as yn}from"@mantine/core";import{formatHumanName as Fi,getDisplayString as bn,getReferenceString as Mi,isUUID as wi}from"@medplum/core";import We,{forwardRef as Oi,useCallback as Cn}from"react";import{Loader as Si,MultiSelect as bi}from"@mantine/core";import hn,{useCallback as Co,useEffect as Pi,useRef as vo,useState as So}from"react";import{showNotification as Di}from"@mantine/notifications";import{normalizeErrorString as ki}from"@medplum/core";function bo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=Ti(o),u=vo(null),[d,c]=So(void 0),[g,y]=So(),[B,v]=So(),[T,x]=So(),[V,m]=So(i.map(r)),[A,ae]=So([]),he=vo();he.current=d;let ce=vo();ce.current=g;let ee=vo();ee.current=B;let qo=vo();qo.current=T;let C=vo();C.current=A;let R=Co(()=>{y(void 0);let _=u.current?.value.trim()||"";if(_===he.current)return;c(_);let fe=new AbortController;v(fe),a(_,fe.signal).then(me=>{fe.signal.aborted||(ae(me.map(r)),v(void 0),qo.current&&(me.length>0&&n(me.slice(0,1)),x(!1)))}).catch(me=>{fe.signal.aborted||me.message.includes("aborted")||Di({color:"red",message:ki(me)})})},[a,n,r]),Be=Co(()=>{ee.current&&(ee.current.abort(),v(void 0)),ce.current!==void 0&&window.clearTimeout(ce.current);let _=window.setTimeout(()=>R(),100);y(_)},[R]),ye=Co(_=>{let fe=[],me=[];for(let Go of _){let pt=C.current?.find(Os=>Os.value===Go),Uo=pt?.resource;!Uo&&l!==!1&&f&&(Uo=f(Go),pt=r(Uo)),Uo&&fe.push(Uo),pt&&me.push(pt)}n(fe),m(me)},[l,n,f,r]),ro=Co(_=>{_.key==="Enter"&&(!ce.current&&!ee.current?(N(_),C.current&&C.current.length>0&&(ae(C.current.slice(0,1)),ye([C.current[0].value]))):x(!0))},[ye]),P=Co(_=>{let fe=r(f(_));return ae([...C.current,fe]),fe},[f,ae,r]),Q=Co((_,fe)=>!fe,[]);return Pi(()=>()=>{ee.current&&ee.current.abort()},[]),hn.createElement(bi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:ro,onSearchChange:Be,data:[...V,...A],onFocus:R,onChange:ye,onCreate:P,rightSectionWidth:40,rightSection:B?hn.createElement(Si,{size:16}):null,filter:Q,creatable:!0})}function Ti(e){return e?Array.isArray(e)?e:[e]:[]}var Ei=Bi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Li(e){return e.id}function Ri(e){return{value:e.id,label:bn(e),resource:e}}function Pn(e){let{classes:o}=Ei(),t=ze(),r=S(),a=Cn(async(f,l)=>{let s=Hi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Vi(u,f)},[r]),n=Cn(f=>{f.length>0&&t(`/${Mi(f[0])}`)},[t]);return We.createElement(bo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement(Vr,{size:16}),placeholder:"Search",itemComponent:Ni,toKey:Li,toOption:Ri,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Ni=Oi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),We.createElement("div",{ref:t,...o},We.createElement(Ai,{noWrap:!0},We.createElement(Ce,{value:e}),We.createElement("div",null,We.createElement(yn,null,bn(e)),We.createElement(yn,{size:"xs",color:"dimmed"},r))))});function Hi(e){let o=JSON.stringify(e);return wi(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import{formatAddress as Ts}from"@medplum/core";import Wa from"react";function Qa
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function Mi(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Oi(wi(t),o).slice(0,5)}function wi(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Oi(e,o){return e.sort((t,r)=>In(r,o)-In(t,o))}function In(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,gn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,gn(Si(r),o));return t}function gn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var qi=Li(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Sn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=qi(),[s,i]=Vi(!1);return U.createElement(Ri,{height:60,p:8,style:{zIndex:101}},U.createElement(Ct,{position:"apart"},U.createElement(Ct,{spacing:"xs"},U.createElement(yn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),U.createElement(Cn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(Le,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},U.createElement(Le.Target,null,U.createElement(yn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},U.createElement(Ct,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement($o,{size:"sm",className:f.userName},Hi(r?.name?.[0])),U.createElement(Cr,{size:12,stroke:1.5})))),U.createElement(Le.Dropdown,null,U.createElement(Ni,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(gt,{value:o.profile?.name?.[0]}),U.createElement($o,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(Le.Divider,null),n.map(u=>u.profile.reference!==vn(o.profile)&&U.createElement(Le.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(Ct,null,U.createElement(Ei,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement($o,{size:"sm",weight:500},u.profile.display),U.createElement($o,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(Le.Divider,null),U.createElement(Le.Item,{icon:U.createElement(Nr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(Le.Item,{icon:U.createElement(Io,{size:14,stroke:1.5}),onClick:()=>a(`/${vn(r)}`)},"Account settings"),U.createElement(Le.Item,{icon:U.createElement(Ar,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement($o,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as su,createStyles as iu,Navbar as Wr,ScrollArea as uu,Space as du,Text as cu}from"@mantine/core";import re,{useState as mu}from"react";import{Button as Wi,Group as Qi,Modal as Xi,NativeSelect as Ji,Stack as $i,TextInput as Ki}from"@mantine/core";import{showNotification as bn}from"@mantine/notifications";import{deepClone as ji,normalizeErrorString as _i}from"@medplum/core";import We from"react";import zi from"react";function Pn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Gi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ui(o,t);return o}function Gi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Ui(e,o){e[o.name]=o.value}function J(e){return zi.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Pn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Dn(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=ji(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{bn({color:"red",message:_i(u)})})}return We.createElement(Xi,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},We.createElement(J,{onSubmit:r},We.createElement($i,null,We.createElement(Zi,{config:t}),We.createElement(Ki,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),We.createElement(Qi,{position:"right"},We.createElement(Wi,{mt:"sm",type:"submit"},"OK")))))}function Zi(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return We.createElement(Ji,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import au,{useState as nu}from"react";import Yi,{useCallback as eu}from"react";function zr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function ou(e){return typeof e.display=="string"?e.display:zr(e)}function tu(e){return{value:zr(e),label:ou(e),resource:e}}function ru(e){return{code:e,display:e}}function So(e){let o=S(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=eu(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let y of d)y.code&&!c.some(b=>b.code===y.code)&&c.push(y);return c},[o,t]);return Yi.createElement(vo,{...n,creatable:r??!0,clearable:a??!0,toKey:zr,toOption:tu,loadOptions:f,onCreate:ru,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function yt(e){let[o,t]=nu(e.defaultValue);function r(a){let n=a[0],f=lu(n);t(f),e.onChange&&e.onChange(f)}return au.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:fu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function fu(e){return e?{code:e}:void 0}function lu(e){return e?.code}var Tn=iu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function kn(e){let{classes:o}=Tn(),t=Ge(),r=Iu(e.pathname,e.searchParams,e.menus),[a,n]=mu(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return re.createElement(re.Fragment,null,re.createElement(Wr,{width:{sm:250},p:"xs"},re.createElement(uu,null,re.createElement(Wr.Section,{mb:"sm"},re.createElement(yt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),re.createElement(Wr.Section,{grow:!0},e.menus?.map(s=>re.createElement(re.Fragment,{key:`menu-${s.title}`},re.createElement(cu,{className:o.menuTitle},s.title),s.links?.map(i=>re.createElement(pu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},re.createElement(xu,{to:i.href,icon:i.icon}),re.createElement("span",null,i.label))))),e.displayAddBookmark&&re.createElement(su,{variant:"subtle",size:"xs",mt:"xl",leftIcon:re.createElement(Or,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&re.createElement(Dn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function pu(e){let{classes:o,cx:t}=Tn();return re.createElement(ne,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function xu(e){return e.icon?e.icon:re.createElement(du,{w:30})}function Iu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=gu(e,o,f.href);l>a&&(a=l,r=f)}return r}function gu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function NS(e){let o=Cu(),[t,r]=vu(localStorage.navbarOpen==="true"),a=S(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?to.createElement(Gr,null):to.createElement(hu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&to.createElement(Sn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?to.createElement(kn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},to.createElement(go,{key:`${e.pathname}?${e.searchParams?.toString()}`},to.createElement(yu,{fallback:to.createElement(Gr,null)},e.children)))}import Qr from"react";import{Anchor as Su}from"@mantine/core";import Qe from"react";function we(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?Qe.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&Qe.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&Qe.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Qe.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&Qe.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Qe.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Qe.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Qe.createElement(Su,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Bn(e){return Qr.createElement("div",null,e.values?.map((o,t)=>Qr.createElement("div",{key:"attatchment-"+t},Qr.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as An}from"@mantine/core";import fe,{useRef as bu,useState as Du}from"react";import Xr,{useRef as Pu}from"react";function Po(e){let o=S(),t=Pu(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Xr.createElement(Xr.Fragment,null,Xr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Fn(e){let[o,t]=Du(e.defaultValue??[]),r=bu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return fe.createElement("table",{style:{width:"100%"}},fe.createElement("colgroup",null,fe.createElement("col",{width:"97%"}),fe.createElement("col",{width:"3%"})),fe.createElement("tbody",null,o.map((n,f)=>fe.createElement("tr",{key:`${f}-${o.length}`},fe.createElement("td",null,fe.createElement(we,{value:n,maxWidth:200})),fe.createElement("td",null,fe.createElement(An,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},fe.createElement(Ue,null))))),fe.createElement("tr",null,fe.createElement("td",null),fe.createElement("td",null,fe.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>fe.createElement(An,{...n,title:"Add",size:"sm",color:"green"},fe.createElement(Wo,{size:16})))))))}import{Button as Mn}from"@mantine/core";import bo,{useState as Tu}from"react";function vt(e){let[o,t]=Tu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?bo.createElement(bo.Fragment,null,bo.createElement(we,{value:o,maxWidth:200}),bo.createElement(Mn,{onClick:a=>{H(a),r(void 0)}},"Remove")):bo.createElement(Po,{onUpload:r},a=>bo.createElement(Mn,{...a},"Upload..."))}import{getPropertyDisplayName as Qu,globalSchema as Xu}from"@medplum/core";import Zo from"react";var St=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as ku}from"@mantine/core";import Ko from"react";var Bu=ku(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function wn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Bu();return Ko.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function On(e){return Ko.createElement(Ko.Fragment,null,Ko.createElement("dt",null,e.term),Ko.createElement("dd",null,e.children))}import{formatDateTime as Ru,formatPeriod as Nu,formatTiming as Hu,getElementDefinitionTypeName as Vu,getTypedPropertyValue as qu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as Au}from"@medplum/core";import En from"react";function Do(e){return En.createElement(En.Fragment,null,Au(e.value))}import{formatCoding as Fu}from"@medplum/core";import Ln from"react";function Rn(e){return Ln.createElement(Ln.Fragment,null,Fu(e.value))}import Jr from"react";import Nn from"react";function Pt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Nn.createElement(Nn.Fragment,null,t.join("").trim())}function Hn(e){let o=e.value;return o?Jr.createElement(Jr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Jr.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Mu from"react";function Vn(e){return Mu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as wu}from"@medplum/core";import qn from"react";function Gn(e){return qn.createElement(qn.Fragment,null,wu(e.value))}import{formatQuantity as Ou}from"@medplum/core";import Un from"react";function jo(e){return Un.createElement(Un.Fragment,null,Ou(e.value))}import{formatRange as Eu}from"@medplum/core";import zn from"react";function bt(e){return zn.createElement(zn.Fragment,null,Eu(e.value))}import Dt from"react";function Wn(e){let o=e.value;return o?Dt.createElement(Dt.Fragment,null,Dt.createElement(jo,{value:o.numerator}),"\xA0/\xA0",Dt.createElement(jo,{value:o.denominator})):null}import{stringify as Lu}from"@medplum/core";import $r from"react";function ro(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Lu(e.value);return e.link!==!1&&e.value.reference?$r.createElement(ne,{to:e.value},o):$r.createElement($r.Fragment,null,o)}import Tt from"react";function Qn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Tt.createElement(Tt.Fragment,null,t.map((a,n)=>Tt.createElement("div",{key:`${n}-${t.length}`},Tt.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Gu,Box as Uu,CopyButton as zu,Tooltip as Wu}from"@mantine/core";function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Uu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(zu,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(Wu,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Gu,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(vr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(Bn,{values:r,maxWidth:e.maxWidth}):E.createElement(Qn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ro,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,Ru(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Qa,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(we,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(Do,{value:r});case V.Coding:return E.createElement(Rn,{value:r});case V.ContactDetail:return E.createElement(Hn,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Vn,{value:r});case V.Money:return E.createElement(Gn,{value:r});case V.Period:return E.createElement(E.Fragment,null,Nu(r));case V.Quantity:case V.Duration:return E.createElement(jo,{value:r});case V.Range:return E.createElement(bt,{value:r});case V.Ratio:return E.createElement(Wn,{value:r});case V.Reference:return E.createElement(ro,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Hu(r));case V.Dosage:case V.UsageContext:return E.createElement(_o,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return E.createElement(_o,{value:{type:Vu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=qu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function _o(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Xu.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Zo.createElement("div",null,t.name):Zo.createElement(wn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(St.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Se(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Zo.createElement(On,{key:f,term:Qu(f)},Zo.createElement(ce,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Zo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Tc}from"@mantine/core";import{getPropertyDisplayName as Pf,globalSchema as kc}from"@medplum/core";import Bo,{useState as Bc}from"react";import{Group as Ju,Input as $u}from"@mantine/core";import kt from"react";function Bt(e){return kt.createElement(Ju,{noWrap:!0},kt.createElement("div",null,e.children),kt.createElement("div",null,kt.createElement($u.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ku}from"@mantine/core";import ju from"react";function me(e,o){return e?.issue?.filter(t=>Xn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function At(e,o){return e?.issue?.filter(t=>Xn(t.expression?.[0],o))}function Xn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Pe(e){return ju.createElement(Ku.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{Button as Jn,Group as _u,Stack as Zu,TextInput as $n}from"@mantine/core";import{capitalize as Yu,deepClone as ed}from"@medplum/core";import ke,{useEffect as od,useState as Kn}from"react";function Lb(e){let o=S(),t=Q(e.defaultValue),[r,a]=Kn(),[n,f]=Kn();return od(()=>{t&&(f(ed(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?ke.createElement("div",null,"Loading..."):ke.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},ke.createElement(Zu,{mb:"xl"},ke.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},ke.createElement($n,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),ke.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},ke.createElement($n,{name:"id",defaultValue:n.id,disabled:!0}))),ke.createElement(et,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),ke.createElement(_u,{position:"right",mt:"xl"},ke.createElement(Jn,{type:"submit"},"OK"),e.onDelete&&ke.createElement(Jn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function Yo(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",Yu(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as gc,Group as hc,NativeSelect as Cc,Textarea as yc,TextInput as ra}from"@mantine/core";import{capitalize as vc,getElementDefinitionTypeName as Sc,PropertyType as L}from"@medplum/core";import G,{useState as Pc}from"react";import td,{useState as rd}from"react";function jn(e){let[o,t]=rd(e.defaultValue);function r(a){let n=nd(a);t(n),e.onChange&&e.onChange(n)}return td.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&ad(o),maxSelectedValues:1,onChange:r})}function ad(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function nd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import fd,{useState as ld}from"react";function _n(e){let[o,t]=ld(e.defaultValue);function r(a){let n=a[0],f=n&&id(n);t(f),e.onChange&&e.onChange(f)}return fd.createElement(So,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&sd(o),maxSelectedValues:1,onChange:r})}function sd(e){return{system:e.system,code:e.code,display:e.display}}function id(e){return{system:e.system,code:e.code,display:e.display}}import{Group as pd,TextInput as xd}from"@mantine/core";import Kr,{useRef as Id,useState as gd}from"react";import{Group as ud,NativeSelect as Zn,TextInput as dd}from"@mantine/core";import Ft,{useRef as cd,useState as md}from"react";function Mt(e){let[o,t]=md(e.defaultValue),r=cd();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Ft.createElement(ud,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(Zn,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(Zn,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(dd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function Yn(e){let[o,t]=gd(e.defaultValue),r=Id();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return Kr.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},Kr.createElement(xd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Kr.createElement(Mt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as hd}from"@mantine/core";import{isValidDate as ef}from"@medplum/core";import Cd from"react";function Be(e){return Cd.createElement(hd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Sd(),defaultValue:yd(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(vd(t))}}})}function yd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function vd(e){if(!e)return"";let o=new Date(e);return ef(o)?o.toISOString():""}function Sd(){return"datetime-local"}import{JsonInput as Pd}from"@mantine/core";import{stringify as bd}from"@medplum/core";import Dd from"react";function of(e){return Dd.createElement(Pd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:bd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Td,NativeSelect as kd,TextInput as wt}from"@mantine/core";import To,{useRef as Bd,useState as Ad}from"react";function tf(e){let[o,t]=Ad(e.defaultValue),r=Bd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return To.createElement(Td,{spacing:"xs",grow:!0,noWrap:!0},To.createElement(kd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),To.createElement(wt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),To.createElement(wt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),To.createElement(wt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),To.createElement(wt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Fd,TextInput as rf}from"@mantine/core";import jr,{useState as Md}from"react";function af(e){let[o,t]=Md(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return jr.createElement(Fd,{spacing:"xs",grow:!0,noWrap:!0},jr.createElement(rf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),jr.createElement(rf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as wd,TextInput as Od}from"@mantine/core";import _r,{useCallback as Zr,useState as Ed}from"react";var Ld=["USD","EUR","CAD","GBP","AUD"];function nf(e){let{onChange:o}=e,[t,r]=Ed(e.defaultValue),a=Zr(s=>{r(s),o&&o(s)},[o]),n=Zr(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=Zr(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=_r.createElement(wd,{defaultValue:t?.currency,data:Ld,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return _r.createElement(Od,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:_r.createElement(Sr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Rd}from"@mantine/core";import Yr,{useState as Nd}from"react";function ff(e){let[o,t]=Nd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Yr.createElement(Rd,{spacing:"xs",grow:!0,noWrap:!0},Yr.createElement(Be,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Yr.createElement(Be,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Hd,NativeSelect as Vd,TextInput as lf}from"@mantine/core";import Ot,{useState as qd}from"react";function be(e){let[o,t]=qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ot.createElement(Hd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(Vd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ot.createElement(lf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Gd(a.currentTarget.value)})}}),Ot.createElement(lf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Gd(e){if(e)return parseFloat(e)}import{Group as Ud}from"@mantine/core";import ea,{useState as zd}from"react";function ot(e){let[o,t]=zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(be,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ea.createElement(be,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Wd}from"@mantine/core";import oa,{useState as Qd}from"react";function sf(e){let[o,t]=Qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(Wd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(be,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),oa.createElement(be,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as oc,NativeSelect as tc,TextInput as rc}from"@mantine/core";import{createReference as ac}from"@medplum/core";import Lt,{useRef as mf,useState as pf}from"react";import{Group as Xd,Text as uf}from"@mantine/core";import{getDisplayString as Jd,getReferenceString as cf}from"@medplum/core";import ao,{forwardRef as $d,useCallback as df,useState as Kd}from"react";var jd={Observation:"code",User:"email:contains"},_d=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function Zd(e){return{value:cf(e),label:Jd(e),resource:e}}function Et(e){let o=S(),t=e.resourceType,[r,a]=Kd(),n=Q(e.defaultValue,a),f=e.onChange,l=df(async(i,u)=>{let d=ec(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=df(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:ao.createElement(vo,{name:e.name,itemComponent:Yd,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:cf,toOption:Zd,loadOptions:l,onChange:s,clearable:!0})}var Yd=$d(({label:e,resource:o,...t},r)=>ao.createElement("div",{ref:r,...t},ao.createElement(Xd,{noWrap:!0},ao.createElement(Ce,{value:o}),ao.createElement("div",null,ao.createElement(uf,null,e),ao.createElement(uf,{size:"xs",color:"dimmed"},o.birthDate)))));function ec(e){return jd[e]??(_d.includes(e)?"name":"_id")}function ko(e){let o=nc(e.targetTypes),t=fc(e.defaultValue,o),[r,a]=pf(e.defaultValue),[n,f]=pf(t),l=mf();l.current=r;let s=mf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Lt.createElement(oc,{spacing:"xs",grow:!0,noWrap:!0},o?Lt.createElement(tc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Lt.createElement(rc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Lt.createElement(Et,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?ac(u):void 0)}}))}function nc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function fc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as xf}from"@mantine/core";import pe,{useRef as lc,useState as sc}from"react";function If(e){let[o,t]=sc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=lc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return pe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},pe.createElement("colgroup",null,pe.createElement("col",{width:"97%"}),pe.createElement("col",{width:"3%"})),pe.createElement("tbody",null,o.map((n,f)=>pe.createElement("tr",{key:`${f}-${o.length}`},pe.createElement("td",null,pe.createElement(Re,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},pe.createElement(Ue,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(xf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(mo,null))))))}import{Button as Cf,Chip as gf,Group as Rt,Modal as ic,NativeSelect as uc,Stack as dc,Switch as cc,TextInput as mc}from"@mantine/core";import{formatTiming as pc}from"@medplum/core";import $,{useRef as yf,useState as ta}from"react";var xc=["sun","mon","tue","wed","thu","fri","sat"];function vf(e){let[o,t]=ta(e.defaultValue),[r,a]=ta(!1),n=yf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,pc(n.current)||"No repeat"),$.createElement(Cf,{onClick:()=>a(!0)},"Edit")),$.createElement(Ic,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var hf={repeat:{period:1,periodUnit:"d"}};function Ic(e){let[o,t]=ta(e.defaultValue||hf),r=yf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(ic,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(dc,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Be,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(cc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?hf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Rt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(mc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(uc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Pe,{title:"Repeat on"},$.createElement(gf.Group,{multiple:!0,onChange:s},$.createElement(Rt,{position:"apart",mt:"md",spacing:"xs"},xc.map(i=>$.createElement(gf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Rt,{position:"right"},$.createElement(Cf,{onClick:()=>e.onOk(o)},"OK"))))}function Re(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===L.Attachment?G.createElement(Fn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(If,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(bc,{elementDefinitionTypes:n,...e}):G.createElement(Sf,{elementDefinitionType:n[0],...e})}function bc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Pc(t);return G.createElement(hc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Cc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(Sf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",vc(r.code)))}}))}function Sf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(ra,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.date:return G.createElement(ra,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Be,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(ra,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(yt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(gc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(yc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return G.createElement(Ka,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(Za,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(jn,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(_n,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Yn,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Mt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(of,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(be,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(ot,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(ko,{name:r,defaultValue:a,targetTypes:Dc(o),onChange:e.onChange});case L.Timing:return G.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(et,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(et,{typeName:Sc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Dc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function et(e){let[o,t]=Bc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=kc.types[a];if(!n)return Bo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Bo.createElement(Tc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||St.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=Se(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Bo.createElement(Bt,{key:s,title:Pf(s),description:i.definition,htmlFor:s},Bo.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(y,b)=>{r(Yo(o,s,b??s,l[1],y))}})):Bo.createElement(Pe,{key:s,title:Pf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Bo.createElement(Re,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(y,b)=>{r(Yo(o,s,b??s,l[1],y))}}))}))}import{Button as aa,createStyles as Ac,Group as bf}from"@mantine/core";import ee,{useMemo as Fc,useState as Mc}from"react";var wc=Ac(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Oc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Df(e){let{classes:o}=wc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Mc(na);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Fc(()=>Ec(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Oc(a)),ee.createElement(bf,{position:"right",spacing:"xs"},ee.createElement(aa,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(aa,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,d)=>ee.createElement("td",{key:"day-"+d},u&&ee.createElement(aa,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function na(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Ec(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Lc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Lc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as Rc,createStyles as Nc}from"@mantine/core";import Hc from"react";var Vc=Nc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Xe(e){let{children:o,...t}=e,{classes:r}=Vc();return Hc.createElement(Rc,{className:r.root,...t},o)}import $m from"react";import{ActionIcon as Uf,Center as Mm,createStyles as wm,Group as Om,Loader as Em,Menu as Ne,ScrollArea as Lm,TextInput as Rm}from"@mantine/core";import{showNotification as Nm,updateNotification as ca}from"@mantine/notifications";import{getReferenceString as tt,normalizeErrorString as Hm}from"@medplum/core";import k,{useCallback as Vt,useEffect as Vm,useRef as zf,useState as Wf}from"react";import{createStyles as Yc,Group as Ht,List as Bf,Stack as Af,Text as De,Title as Ff}from"@mantine/core";import{capitalize as em,formatCodeableConcept as om,formatDateTime as sa,formatObservationValue as tm,isReference as rm}from"@medplum/core";import h,{useEffect as am,useState as nm}from"react";import{Blockquote as qc,createStyles as Gc,Stack as Uc}from"@mantine/core";import Tf from"react";var zc=Gc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function fa({value:e}){let{classes:o}=zc();return e?Tf.createElement(Uc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Tf.createElement(qc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Kc}from"@mantine/core";import la from"react";import{Text as Wc}from"@mantine/core";import{getDisplayString as Qc,isOk as Xc,normalizeErrorString as Jc}from"@medplum/core";import kf,{useState as $c}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=$c(),f=Q(o,n),l;if(a&&!Xc(a))l=`[${Jc(a)}]`;else if(f)l=Qc(f);else return null;return t?kf.createElement(ne,{to:o,...r},l):kf.createElement(Wc,{component:"span",...r},l)}function Je(e){return la.createElement(Kc,{spacing:"xs"},la.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),la.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as jc}from"@mantine/core";import _c from"react";var Zc={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Nt(e){return _c.createElement(jc,{color:Zc[e.status]},e.status)}var Mf=Yc(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));ia.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ia(e){let o=S(),t=Q(e.value),[r,a]=nm();if(am(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(Af,null,h.createElement(Ff,null,"Diagnostic Report"),h.createElement(fm,{value:t}),!e.hideSpecimenInfo&&lm(r),t.result&&h.createElement(sm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(fa,{value:n}))}function fm({value:e}){return h.createElement(Ht,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(De,null,h.createElement(Je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(De,null,h.createElement(Je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(De,null,h.createElement(Je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(De,null,sa(e.issued))),e.status&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(De,null,em(e.status))))}function lm(e){return h.createElement(Af,{spacing:"xs"},h.createElement(Ff,{order:2,size:"h6"},"Specimens"),h.createElement(Bf,{type:"ordered"},e?.map(o=>h.createElement(Bf.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Ht,{spacing:20},h.createElement(Ht,{spacing:5},h.createElement(De,{fw:500},"Collected:")," ",sa(o.collection?.collectedDateTime)),h.createElement(Ht,{spacing:5},h.createElement(De,{fw:500},"Received:")," ",sa(o.receivedTime)))))))}function sm(e){let{classes:o}=Mf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,e.value?.map(t=>h.createElement(im,{key:`obs-${rm(t)?t.reference:t.id}`,hideObservationNotes:e.hideObservationNotes,value:t}))))}function im(e){let{classes:o,cx:t}=Mf(),r=Q(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=cm(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(ne,{to:r},h.createElement(Do,{value:r.code}))),h.createElement("td",null,h.createElement(um,{value:r})),h.createElement("td",null,h.createElement(dm,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Do,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement("ul",null,r.category.map(f=>h.createElement("li",{key:`category-${om(f)}`},h.createElement(Do,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(ro,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Nt,{status:r.status}))),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(fa,{value:r.note}))))}function um(e){let o=e.value;return h.createElement(h.Fragment,null,tm(o))}function dm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(bt,{value:o}):null}function cm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as mm,Paper as pm,useComponentDefaultProps as xm}from"@mantine/core";import Im from"react";var gm=mm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),hm={shadow:"xs",radius:"md",withBorder:!0};function Ao(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=xm("Panel",hm,e),{classes:l,cx:s}=gm({width:r,fill:a},{name:"Panel",unstyled:n});return Im.createElement(pm,{className:s(l.paper,o),...f},t)}import{createStyles as Cm}from"@mantine/core";import{getPropertyDisplayName as ym,stringify as wf,toTypedValue as Of}from"@medplum/core";import le,{useEffect as vm,useState as Sm}from"react";var Pm=Cm(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Lf(e){let{classes:o}=Pm(),t=S(),[r,a]=Sm();if(vm(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?le.createElement("table",{className:o.root},le.createElement("colgroup",null,le.createElement("col",{style:{width:"30%"}}),le.createElement("col",{style:{width:"35%"}}),le.createElement("col",{style:{width:"35%"}})),le.createElement("thead",null,le.createElement("tr",null,le.createElement("th",null,"Property"),le.createElement("th",null,"Before"),le.createElement("th",null,"After"))),le.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Se(Of(e.original),l),[d,c]=Se(Of(e.revised),l);return Ef(i)&&Ef(d)||wf(i)===wf(d)?null:le.createElement("tr",{key:l},le.createElement("td",null,ym(l)),le.createElement("td",{className:o.removed},le.createElement(ce,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),le.createElement("td",{className:o.added},le.createElement(ce,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Ef(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import bm,{useEffect as Dm,useState as Tm}from"react";function ua(e){let o=S(),t=Q(e.value),[r,a]=Tm();return Dm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:bm.createElement(_o,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as km,Group as Bm,Menu as Rf,Text as da}from"@mantine/core";import{formatDateTime as Am,getReferenceString as Fm}from"@medplum/core";import oe from"react";function Nf(e){return oe.createElement(Xe,null,e.children)}function $e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(Ao,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(Bm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(da,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(da,{size:"xs"},oe.createElement(ne,{color:"dimmed",to:e.resource},Am(l)),oe.createElement(da,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(ne,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Rf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Rf.Target,null,oe.createElement(km,{radius:"xl","aria-label":`Actions for ${Fm(e.resource)}`},oe.createElement(Pr,null))),a)),oe.createElement(go,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function qf(e,o){e.sort((t,r)=>{let a=Hf(t,o),n=Hf(r,o);return a>n?1:a<n?-1:Vf(t,o)-Vf(r,o)})}function Hf(e,o){if(!Gf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Vf(e,o){if(!Gf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Gf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var qm=wm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ke(e){let o=S(),t=Ge(),r=o.getProfile(),a=zf(null),n=Q(e.value),[f,l]=Wf(),[s,i]=Wf([]),u=e.loadTimelineResources,d=zf(s);d.current=s;let c=Vt(v=>{qf(v,n),v.reverse(),i(v)},[n]),y=Vt(v=>{let N=[];for(let Te of v){if(Te.status!=="fulfilled")continue;let he=Te.value;if(he.type==="history"&&l(he),he.entry)for(let Ye of he.entry)N.push(Ye.resource)}c(N)},[c]),b=Vt(v=>c([...d.current,v]),[c]),A=Vt(()=>{let v,N;"resourceType"in e.value?(v=e.value.resourceType,N=e.value.id):[v,N]=e.value.reference?.split("/"),u(o,v,N).then(y).catch(console.log)},[o,e.value,u,y]);Vm(()=>A(),[A]);function I(v){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,v)).then(N=>b(N)).catch(console.log)}function D(v){!n||!e.createMedia||o.createResource(e.createMedia(n,r,v)).then(N=>b(N)).then(()=>ca({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:k.createElement(zo,{size:16}),autoClose:2e3})).catch(N=>ca({id:"upload-notification",color:"red",title:"Upload error",message:Hm(N),icon:k.createElement(Dr,{size:16}),autoClose:2e3}))}function p(v,N){return o.updateResource({...v,priority:N})}function g(v){p(v,"stat").then(A).catch(console.log)}function C(v){p(v,"routine").then(A).catch(console.log)}function O(v){t(`/${v.resourceType}/${v.id}`)}function Ie(v){t(`/${v.resourceType}/${v.id}/edit`)}function ge(v){t(`/${v.resourceType}/${v.id}/delete`)}function ue(v){t(`/${v.resourceType}/${v.id}/_history/${v.meta?.versionId}`)}function Y(){Nm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Ho(v){ca({id:"upload-notification",loading:!0,title:"Uploading...",message:Jm(v),autoClose:!1,withCloseButton:!1})}return n?k.createElement(Nf,null,e.createCommunication&&k.createElement(Ao,null,k.createElement(J,{testid:"timeline-form",onSubmit:v=>{I(v.text);let N=a.current;N&&(N.value="",N.focus())}},k.createElement(Om,{spacing:"xs",noWrap:!0,style:{width:"100%"}},k.createElement(Ce,{value:r}),k.createElement(Rm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),k.createElement(Uf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},k.createElement(Fr,{size:16})),k.createElement(Po,{onUpload:D,onUploadStart:Y,onUploadProgress:Ho},v=>k.createElement(Uf,{...v,radius:"xl",color:"blue",variant:"filled"},k.createElement(Wo,{size:16})))))),s.map(v=>{if(!v)return null;let N=`${v.resourceType}/${v.id}/${v.meta?.versionId}`;if(v.resourceType===n.resourceType&&v.id===n.id)return k.createElement(Gm,{key:N,history:f,resource:v,onDetails:ue});switch(v.resourceType){case"AuditEvent":return k.createElement(Qm,{key:N,resource:v,onDetails:O});case"Communication":return k.createElement(zm,{key:N,resource:v,onPin:v.priority!=="stat"?g:void 0,onUnpin:v.priority==="stat"?C:void 0,onDetails:O,onEdit:Ie,onDelete:ge});case"DiagnosticReport":return k.createElement(Xm,{key:N,resource:v,onDetails:O,onEdit:Ie,onDelete:ge});case"Media":return k.createElement(Wm,{key:N,resource:v,onDetails:O,onEdit:Ie,onDelete:ge});default:return k.createElement($e,{key:N,resource:v,padding:!0},k.createElement(ua,{value:v,ignoreMissingValues:!0}))}})):k.createElement(Mm,{style:{width:"100%",height:"100%"}},k.createElement(Em,null))}function Fo(e){return k.createElement(Ne.Dropdown,null,k.createElement(Ne.Label,null,"Resource"),e.onPin&&k.createElement(Ne.Item,{icon:k.createElement(Mr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${tt(e.resource)}`},"Pin"),e.onUnpin&&k.createElement(Ne.Item,{icon:k.createElement(wr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${tt(e.resource)}`},"Unpin"),e.onDetails&&k.createElement(Ne.Item,{icon:k.createElement(Br,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${tt(e.resource)}`},"Details"),e.onEdit&&k.createElement(Ne.Item,{icon:k.createElement(br,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${tt(e.resource)}`},"Edit"),e.onDelete&&k.createElement(k.Fragment,null,k.createElement(Ne.Divider,null),k.createElement(Ne.Label,null,"Danger zone"),k.createElement(Ne.Item,{color:"red",icon:k.createElement(Jo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${tt(e.resource)}`},"Delete")))}function Gm(e){let o=Um(e.history,e.resource);return o?k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(Lf,{original:o,revised:e.resource})):k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement("h3",null,"Created"),k.createElement(ua,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Um(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function zm(e){let{classes:o}=qm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return k.createElement($e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:k.createElement(Fo,{...e})},k.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Wm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return k.createElement($e,{resource:e.resource,padding:!!t,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(we,{value:e.resource.content}))}function Qm(e){return k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(Lm,null,k.createElement("pre",null,e.resource.outcomeDesc)))}function Xm(e){return k.createElement($e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Fo,{...e})},k.createElement(ia,{value:e.resource}))}function Jm(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ma(e.loaded)} / ${ma(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ma(e.loaded)}`}function ma(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function SB(e){return $m.createElement(Ke,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import Qf from"react";function qt(e){let{children:o,...t}=e;return Qf.createElement(Xe,null,Qf.createElement(Ao,{...t},o))}import{createReference as Gt}from"@medplum/core";import Km from"react";function EB(e){return Km.createElement(Ke,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Gt(o),subject:o.subject,sender:Gt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Gt(o),subject:o.subject,operator:Gt(t),issued:new Date().toISOString(),content:r})})}import{Button as tx,Loader as rx,Table as ax}from"@mantine/core";import{normalizeOperationOutcome as nx}from"@medplum/core";import te,{useEffect as Pl,useRef as bl,useState as Kt}from"react";import{evalFhirPath as jm}from"@medplum/core";import _m from"react";function Xf(e){let o;try{o=jm(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return _m.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as qp,Button as Eo,Center as Jt,createStyles as Gp,Group as $t,Loader as Up,Menu as yl,Pagination as zp,Table as Wp,Text as Sa,UnstyledButton as Qp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ta,formatSearchQuery as Xp,globalSchema as Jp}from"@medplum/core";import P,{useCallback as vl,useEffect as Sl,useRef as $p,useState as Pa}from"react";import{Box as Zm,Button as Ym,Modal as ep,Text as op}from"@mantine/core";import Mo from"react";function $f(e){return Mo.createElement(ep,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Mo.createElement(Zm,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Mo.createElement(Jf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Mo.createElement(Jf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Mo.createElement(op,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Jf(e){return Mo.createElement(Ym,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as nt,Modal as dp}from"@mantine/core";import{globalSchema as cp,stringify as mp}from"@medplum/core";import X,{useEffect as pp,useRef as il,useState as xp}from"react";import{capitalize as tp,DEFAULT_SEARCH_COUNT as rp,evalFhirPathTyped as ap,formatDateTime as np,Operator as w}from"@medplum/core";import Ut from"react";var fp={string:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],fulltext:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],token:[w.EQUALS,w.NOT],reference:[w.EQUALS,w.NOT],numeric:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],quantity:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],date:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY],datetime:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY]},lp={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function rt(e,o){return{...e,filters:o,offset:0,name:void 0}}function jB(e){return rt(e,[])}function zt(e,o){return rt(e,(e.filters??[]).filter(t=>t.code!==o))}function wo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),rt(e,n)}function _B(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function jf(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function _f(e,o){return pa(e,o,-1)}function Zf(e,o){return pa(e,o,0)}function Yf(e,o){return pa(e,o,1)}function pa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Ia(e,o,r,a)}function el(e,o){return xa(e,o,-1)}function ol(e,o){return xa(e,o,0)}function tl(e,o){return xa(e,o,1)}function xa(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Ia(e,o,r,a)}function rl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ia(e,o,t,new Date)}function Ia(e,o,t,r){return e=zt(e,o),e=Kf(e,o,w.GREATER_THAN_OR_EQUALS,t),e=Kf(e,o,w.LESS_THAN_OR_EQUALS,r),e}function Kf(e,o,t,r){return wo(e,o,t,r.toISOString())}function ga(e,o,t=!0){return wo(e,o,w.MISSING,t.toString())}function sp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function al(e,o){let t=e.count??rp,r=(o-1)*t;return sp(e,r)}function ha(e,o,t){return o===nl(e)&&t!==void 0&&t===fl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function ZB(e,o){let t=!1;return nl(e)===o&&(t=!fl(e)),ha(e,o,t)}function nl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function fl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ll(e){return fp[e.type]}function at(e){return lp[e]??""}function ye(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(tp).join(" "))}function sl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?np(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?ip(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?up(e,o.searchParams[0]):null}function ip(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?Ut.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function up(e,o){let t=ap(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Ut.createElement(Ut.Fragment,null,t.map((r,a)=>Ut.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function ul(e){let[o,t]=xp({search:JSON.parse(mp(e.search))}),r=il(null),a=il(null);pp(()=>{t({search:e.search})},[e.search]);function n(p){p.key==="Enter"&&i()}function f(){i()}function l(p){p.key==="Enter"&&u()}function s(){u()}function i(){let p=o.search.fields??[],g=r.current?.value;if(g){let C=[...p,g];t({search:{...o.search,fields:C}})}}function u(){let p=o.search.fields??[],g=a.current?.value;if(g){let C=[...p];C.splice(C.indexOf(g),1),t({search:{...o.search,fields:C}})}}function d(){let p=o.search.fields??[],g=a.current?.value;if(!g)return;let C=[...p],O=C.indexOf(g);O<=0||(y(C,O,O-1),t({search:{...o.search,fields:C}}))}function c(){let p=o.search.fields??[],g=a.current?.value;if(!g)return;let C=[...p],O=C.indexOf(g);O>=C.length-1||(y(C,O,O+1),t({search:{...o.search,fields:C}}))}function y(p,g,C){let O=p[g];p[g]=p[C],p[C]=O}if(!e.visible)return null;let b=e.search.resourceType,A=cp.types[b],I=o.search.fields??[],D=Ip(A).filter(p=>!I.includes(p)).sort((p,g)=>p.localeCompare(g));return X.createElement(dp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},X.createElement("div",null,X.createElement("table",{style:{margin:"auto"}},X.createElement("thead",null,X.createElement("tr",null,X.createElement("th",{colSpan:2,align:"center"},"Available"),X.createElement("th",{colSpan:2,align:"center"},"Selected"))),X.createElement("tbody",null,X.createElement("tr",null,X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:p=>n(p),onDoubleClick:()=>f(),"data-testid":"available"},D.map(p=>X.createElement("option",{key:p,value:p},ye(p))))),X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:p=>l(p),onDoubleClick:()=>s(),"data-testid":"selected"},I.map(p=>X.createElement("option",{key:p,value:p},ye(p))))))),X.createElement("tfoot",null,X.createElement("tr",null,X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:i},"Add")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:u},"Remove")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:d},"Up")),X.createElement("td",{align:"center"},X.createElement(nt,{compact:!0,variant:"outline",onClick:c},"Down")))))),X.createElement(nt,{onClick:()=>e.onOk(o.search)},"OK"))}function Ip(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ye(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ye(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ye(a)))}return o}import{Button as lt,Group as bp,Modal as Dp,NativeSelect as cl}from"@mantine/core";import{globalSchema as Tp,stringify as ml}from"@medplum/core";import R,{useEffect as kp,useRef as xl,useState as ya}from"react";import{formatDateTime as gp,getSearchParameterDetails as hp,globalSchema as Cp,Operator as dl,SearchParameterType as yp}from"@medplum/core";import ft from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=Cp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===dl.EQUALS||t.operator===dl.NOT_EQUALS))return ft.createElement(Oe,{value:{reference:t.value}});let a=hp(o,r);if(t.code==="_lastUpdated"||a.type===yp.DATETIME)return ft.createElement(ft.Fragment,null,gp(t.value))}return ft.createElement(ft.Fragment,null,t.value)}import{Checkbox as vp,TextInput as Ca}from"@mantine/core";import{getSearchParameterDetails as Sp,SearchParameterType as Oo}from"@medplum/core";import no from"react";function Qt(e){let o=Sp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Oo.REFERENCE:return no.createElement(ko,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Oo.BOOLEAN:return no.createElement(vp,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Oo.DATE:return no.createElement(Ca,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.DATETIME:return no.createElement(Be,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Oo.NUMBER:return no.createElement(Ca,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.QUANTITY:return no.createElement(be,{name:t,defaultValue:Pp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return no.createElement(Ca,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function Pp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Il(e){let[o,t]=ya(JSON.parse(ml(e.search))),[r,a]=ya(-1),n=xl(o);n.current=o,kp(()=>{t(JSON.parse(ml(e.search)))},[e.search]);function f(u){t(wo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=Tp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Dp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(pl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let y=[...i];y[d]=c,t(rt(n.current,y)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Bp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(jf(n.current,d))})),R.createElement(pl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(bp,{position:"right",mt:"xl"},R.createElement(lt,{onClick:()=>e.onOk(n.current)},"OK")))}function Bp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ye(o.code)),R.createElement("td",null,at(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function pl(e){let[o,t]=ya(e.defaultValue??{}),r=xl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&ll(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(cl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),R.createElement("td",null,s&&R.createElement(cl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:at(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Qt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(lt,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(lt,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Ap,Grid as va,Modal as Fp}from"@mantine/core";import fo,{useState as Mp}from"react";function gl(e){let[o,t]=Mp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return fo.createElement(Fp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},fo.createElement(J,{onSubmit:r},fo.createElement(va,null,fo.createElement(va.Col,{span:10},fo.createElement(Qt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),fo.createElement(va.Col,{span:2},fo.createElement(Ap,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as se}from"@medplum/core";import m from"react";function hl(e){if(!e.searchParams)return null;function o(n,f){a(ha(e.search,n.code,f))}function t(n){a(zt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(wp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},ye(n.code))))}function wp(e){switch(e.searchParam.type){case"date":return m.createElement(Op,{...e});case"number":case"quantity":return m.createElement(Ep,{...e});case"reference":return m.createElement(Lp,{...e});case"string":case"token":case"uri":return m.createElement(Rp,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Op(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(xr,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(Yf(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(Zf(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(_f(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(ol(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(el(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ee,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Year to date"),m.createElement(Xt,{...e}))}function Ep(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,se.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,se.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Xt,{...e}))}function Lp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),m.createElement(Xt,{...e}))}function Rp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Qo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(po,{size:14}),onClick:()=>e.onPrompt(o,se.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,se.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Ir,{size:14}),onClick:()=>e.onPrompt(o,se.EQUALS)},"Does not contain..."),m.createElement(Xt,{...e}))}function Xt(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(mr,{size:14}),onClick:()=>e.onChange(ga(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(cr,{size:14}),onClick:()=>e.onChange(ga(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Vr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Np,globalSchema as Hp}from"@medplum/core";function Cl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Vp(o,r));return t}function Vp(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=Hp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Np(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var ba=class extends Event{constructor(t){super("change");this.definition=t}},Da=class extends Event{constructor(t){super("load");this.response=t}},lo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Kp=Gp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function jp(e){let{classes:o}=Kp(),t=S(),[r,a]=Pa(!1),[n,f]=Pa(),{search:l,onLoad:s}=e,[i,u]=Pa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=$p(i);d.current=i;let c=l.total??"accurate",y=vl(T=>{f(void 0),t.search(l.resourceType,Xp({...l,total:c,fields:void 0}),T).then(W=>{u({...d.current,searchResponse:W}),s&&s(new Da(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),b=vl(()=>{u({...d.current,searchResponse:void 0}),y({cache:"reload"})},[y]);Sl(()=>{y()},[y]);function A(T,W){T.stopPropagation();let ae=T.target.checked,de={...d.current.selected};ae?de[W]=!0:delete de[W],u({...d.current,selected:de})}function I(T){T.stopPropagation();let _=T.target.checked,ae={},de=d.current.searchResponse;_&&de?.entry&&de.entry.forEach(Vo=>{Vo.resource?.id&&(ae[Vo.resource.id]=!0)}),u({...d.current,selected:ae})}function D(){let T=d.current;if(!T.searchResponse?.entry||T.searchResponse.entry.length===0)return!1;for(let W of T.searchResponse.entry)if(W.resource?.id&&!T.selected[W.resource.id])return!1;return!0}function p(T){e.onChange&&e.onChange(new ba(T))}function g(T,W){if(ht(T.target)||T.button===2)return;H(T);let _=T.button===1||T.ctrlKey||T.metaKey;!_&&e.onClick&&e.onClick(new lo(W,T)),_&&e.onAuxClick&&e.onAuxClick(new lo(W,T))}function C(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Sl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Jp.types[e.search.resourceType]))return P.createElement(Jt,{style:{width:"100%",height:"100%"}},P.createElement(Up,null));let Ie=e.checkboxesEnabled,ge=Cl(l),ue=l.resourceType,Y=i.searchResponse,v=Y?.entry?.map(T=>T.resource),N="subtle",Te="gray",he=16,Ye=window.innerWidth<768;return P.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&P.createElement($t,{position:"apart",mb:"xl"},P.createElement($t,{spacing:2},P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(yr,{size:he}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(kr,{size:he}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Tr,{size:he}),onClick:e.onNew},"New..."),!Ye&&C()&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Hr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!Ye&&e.onDelete&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(Jo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Ye&&e.onBulk&&P.createElement(Eo,{compact:!0,variant:N,color:Te,leftIcon:P.createElement(pr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),P.createElement($t,{spacing:2},Y&&P.createElement(Sa,{size:"xs",color:"dimmed"},ex(l,Y.total),"-",ox(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),P.createElement(qp,{title:"Refresh",onClick:b},P.createElement(Er,{size:"1.125rem"})))),P.createElement(Wp,{className:o.table},P.createElement("thead",null,P.createElement("tr",null,Ie&&P.createElement("th",null,P.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:D(),onChange:T=>I(T)})),ge.map(T=>P.createElement("th",{key:T.name},P.createElement(yl,{shadow:"md",width:240,position:"bottom-end"},P.createElement(yl.Target,null,P.createElement(Qp,{className:o.control},P.createElement($t,{position:"apart",noWrap:!0},P.createElement(Sa,{weight:500,size:"sm"},ye(T.name)),P.createElement(Jt,{className:o.icon},P.createElement(dr,{size:14,stroke:1.5}))))),P.createElement(hl,{search:e.search,searchParams:T.searchParams,onPrompt:(W,_)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:_})},onChange:W=>{p(W)}}))))),!e.hideFilters&&P.createElement("tr",null,Ie&&P.createElement("th",null),ge.map(T=>P.createElement("th",{key:T.name},T.searchParams&&P.createElement(_p,{resourceType:ue,searchParams:T.searchParams,filters:e.search.filters}))))),P.createElement("tbody",null,v?.map(T=>T&&P.createElement("tr",{key:T.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>g(W,T),onAuxClick:W=>g(W,T)},Ie&&P.createElement("td",null,P.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${T.id}`,checked:!!i.selected[T.id],onChange:W=>A(W,T.id)})),ge.map(W=>P.createElement("td",{key:W.name},sl(T,W))))))),v?.length===0&&P.createElement(Xe,null,P.createElement(Jt,{style:{height:150}},P.createElement(Sa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&P.createElement(Jt,{m:"md",p:"md"},P.createElement(zp,{value:Zp(l),total:Yp(l,Y.total),onChange:T=>p(al(l,T)),getControlProps:T=>{switch(T){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&P.createElement("div",{"data-testid":"search-error"},P.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),P.createElement(ul,{search:e.search,visible:d.current.fieldEditorVisible,onOk:T=>{p(T),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),P.createElement(Il,{search:e.search,visible:d.current.filterEditorVisible,onOk:T=>{p(T),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),P.createElement($f,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),P.createElement(gl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:ue,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:T=>{p(wo(e.search,T.code,T.operator,T.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var sF=P.memo(jp);function _p(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?P.createElement("span",null,"no filters"):P.createElement(P.Fragment,null,o.map(t=>P.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},at(t.operator),"\xA0",P.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function Zp(e){return Math.floor((e.offset??0)/(e.count??Ta))+1}function Yp(e,o){let t=e.count??Ta;return Math.ceil(o/t)}function ex(e,o){return Math.min(o,(e.offset??0)+1)}function ox(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ta))}function fx(e){let o=S(),[t,r]=Kt(),[a,n]=Kt(),{query:f,fields:l}=e,[s,i]=Kt(),[u,d]=Kt({}),c=bl();c.current=s;let y=bl({});y.current=u,Pl(()=>{n(void 0),o.graphql(f).then(i).catch(C=>n(nx(C)))},[o,f]);function b(C,O){C.stopPropagation();let ge=C.target.checked,ue={...y.current};ge?ue[O]=!0:delete ue[O],d(ue)}function A(C){C.stopPropagation();let Ie=C.target.checked,ge={},ue=c.current?.data.ResourceList;Ie&&ue&&ue.forEach(Y=>{Y.id&&(ge[Y.id]=!0)}),d(ge)}function I(){let C=c.current?.data.ResourceList;if(!C||C.length===0)return!1;for(let O of C)if(O.id&&!y.current[O.id])return!1;return!0}function D(C,O){ht(C.target)||(H(C),C.button!==1&&e.onClick&&e.onClick(new lo(O,C)),C.button===1&&e.onAuxClick&&e.onAuxClick(new lo(O,C)))}if(Pl(()=>{o.requestSchema(e.resourceType).then(C=>{r({...C})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(rx,null);let g=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:C=>H(C),"data-testid":"search-control"},te.createElement(ax,null,te.createElement("thead",null,te.createElement("tr",null,g&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:I(),onChange:C=>A(C)})),l.map(C=>te.createElement("th",{key:C.name},C.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(C=>C&&te.createElement("tr",{key:C.id,"data-testid":"search-control-row",onClick:O=>D(O,C),onAuxClick:O=>D(O,C)},g&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!u[C.id],onChange:O=>b(O,C.id)})),l.map(O=>te.createElement("td",{key:O.name},te.createElement(Xf,{propertyType:O.propertyType,path:O.fhirPath,resource:C}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(tx,{onClick:()=>e.onBulk(Object.keys(y.current))},"Bulk..."))}var CF=te.memo(fx);import so from"react";function je(e){return so.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},so.createElement("title",null,"Medplum Logo"),so.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),so.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),so.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),so.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),so.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as lx}from"@mantine/core";import ka from"react";function Lo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:ka.createElement(lx,{icon:ka.createElement(oo,{size:16}),color:"red"},o.map(t=>ka.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as jt}from"@medplum/core";import sx,{useCallback as ix}from"react";function wF(e){let o=ix((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return sx.createElement(Ke,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:jt(t),sender:jt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:jt(t),operator:jt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Tl,Button as ux,createStyles as dx,NativeSelect as cx,Stack as mx,TextInput as Aa}from"@mantine/core";import{getReferenceString as px}from"@medplum/core";import q,{useEffect as Dl,useRef as kl,useState as st}from"react";var Bl=dx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function KF(e){let o=S(),t=Q(e.value),[r,a]=st(void 0),[n,f]=st(),[l,s]=st(),[i,u]=st();function d(){s(void 0)}function c(){f(void 0)}let y=kl();if(y.current=i,Dl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Dl(()=>(u(yx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function b(A,I){u({...y.current,[A]:I})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Aa,{label:"Plan Title",defaultValue:i.title,onChange:A=>b("title",A.currentTarget.value)}),q.createElement(Al,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:A=>b("action",A)}),q.createElement(ux,{type:"submit"},"Save")))}function Al(e){let{classes:o}=Bl(),t=kl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(xx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:f=>{H(f),a({id:Ml()})}},"Add action")))}function xx(e){let{classes:o,cx:t}=Bl(),{action:r}=e,a=Cx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(gx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(Ix,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Tl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Fa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Ix(e){let{action:o,actionType:t}=e,[r,a]=Fl(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ro,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(ce,{property:Fa,propertyType:a,value:r})))}function gx(e){let{action:o}=e,[t,r]=st(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(mx,{spacing:"xl"},q.createElement(Aa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Aa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(cx,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(Al,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(_t,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(_t,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(_t,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(_t,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(hx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function _t(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Et,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:px(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function hx(e){let o=e.action,t="timing",[r,a]=Fl(o);return q.createElement(Re,{property:Fa,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(Yo(o,t,f??t,Fa,n))}})}function Cx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Fl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Ba=1;function Ml(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ba=Math.max(Ba,o+1))}return e}return"id-"+Ba++}function yx(e){return{...e,action:wl(e.action)}}function wl(e){if(e)return e.map(o=>({...o,id:Ml(o.id),action:wl(o.action)}))}import{Anchor as He,Button as Jx,createStyles as $x,NativeSelect as Kx,Textarea as jx,TextInput as Oa,Title as _x}from"@mantine/core";import{globalSchema as Zx,isResource as Yx}from"@medplum/core";import F,{useEffect as $l,useRef as eI,useState as Zt}from"react";import{Anchor as Ul,Button as Ro,Checkbox as vx,Group as Sx,NativeSelect as Px,Radio as Ll,Stack as bx,Stepper as Rl,Textarea as Dx,TextInput as it,Title as Tx}from"@mantine/core";import{capitalize as zl,createReference as kx,getExtension as Bx,getQuestionnaireAnswers as Ax,getReferenceString as Wl,getTypedPropertyValue as uo,globalSchema as Fx,stringify as Nl,evalFhirPathTyped as Mx}from"@medplum/core";import B,{useEffect as Hl,useState as io}from"react";var Ol=(D=>(D.group="group",D.display="display",D.question="question",D.boolean="boolean",D.decimal="decimal",D.integer="integer",D.date="date",D.dateTime="dateTime",D.time="time",D.string="string",D.text="text",D.url="url",D.choice="choice",D.openChoice="open-choice",D.attachment="attachment",D.reference="reference",D.quantity="quantity",D))(Ol||{});function El(e){return e.type==="choice"||e.type==="open-choice"}function Ql(e){let o=S(),t=o.getProfile(),[r,a]=io(),n=Q(e.questionnaire),[f,l]=io(),[s,i]=io({}),[u,d]=io(0),c=Gx(n?.item??[]),y=()=>d(I=>I>=c?I:I+1),b=()=>d(I=>I<=0?I:I-1);Hl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Hl(()=>{l(n?Lx(n):void 0)},[n]);function A(I){let D={resourceType:"QuestionnaireResponse",item:I};l(D),i(Ax(D))}return!r||!n?null:B.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Wl(n),subject:e.subject,source:kx(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&B.createElement(Tx,null,n.title),n.item&&B.createElement(Xl,{items:n.item,answers:s,onChange:A,renderPages:c>1,activePage:u}),B.createElement(Sx,{position:"right",mt:"xl"},B.createElement(Ex,{activePage:u,numberOfPages:c,nextStep:y,prevStep:b,submitButtonText:e.submitButtonText})))}function Xl(e){let[o,t]=io(wa(e.items));function r(n,f){let l=o.some(i=>i.id===n),s;l?s=o.map(i=>i.id===n?f:i):s=[...o,f],t(s),e.onChange(s)}let a=e.items.map((n,f)=>e.renderPages?B.createElement(Rl.Step,{label:n.text,key:n.linkId},B.createElement(Vl,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r})):B.createElement(Vl,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r}));return e.renderPages?B.createElement(Rl,{active:e.activePage??0,allowNextStepsSelect:!1},a):B.createElement(bx,null,a)}function Vl(e){return qx(e.item,e.answers)?e.item.type==="display"?B.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?B.createElement(ql,{key:e.item.linkId,item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)}):B.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},B.createElement(ql,{item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)})):null}function ql(e){let o=e.item;function t(r,a){let n=a??0,f=e.responseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:Xx(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?B.createElement(zx,{key:e.item.linkId,text:o.text??"",item:o??[],answers:e.answers,onChange:t}):B.createElement(Wx,{item:e.item,key:e.item.linkId},({index:r})=>B.createElement(Ma,{...e,index:r}))}function Ma(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.responseItems?.filter(d=>d.linkId===o.linkId)??[];e.onChange({id:u[0].id,linkId:o.linkId,text:o.text,answer:Qx(u[0]?.answer??[],i,l)})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0;switch(a){case"boolean":return B.createElement(Bt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},B.createElement(vx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return B.createElement(it,{type:"number",step:"any",id:n,name:n,defaultValue:f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return B.createElement(it,{type:"number",step:1,id:n,name:n,defaultValue:f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return B.createElement(it,{type:"date",id:n,name:n,defaultValue:f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return B.createElement(Be,{name:n,defaultValue:f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return B.createElement(it,{type:"time",id:n,name:n,defaultValue:f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return B.createElement(it,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return B.createElement(Dx,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return B.createElement(vt,{name:n,defaultValue:f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return B.createElement(ko,{name:n,targetTypes:Ux(o),defaultValue:f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return B.createElement(be,{name:n,defaultValue:f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return Vx(o)?B.createElement(wx,{name:n,item:o,initial:f,onChangeAnswer:l=>r(l,t)}):B.createElement(Ox,{name:n,item:o,initial:f,onChangeAnswer:l=>r(l,t)});default:return null}}function wx(e){let{name:o,item:t,initial:r}=e,a=uo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=uo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Gl(l))}return B.createElement(Px,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=uo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+zl(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Gl(a),data:n})}function Gl(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ox(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Fx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=uo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],d=`${o}-option-${i}`,c=uo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Nl(c)===Nl(f)&&(s=d),l.push([d,c])}return B.createElement(Ll.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(d=>d[0]===i);if(u){let d=u[1],c="value"+zl(d.type);a({[c]:d.value})}}},l.map(([i,u])=>B.createElement(Ll,{key:i,id:i,value:i,label:B.createElement(ce,{property:n,propertyType:u.type,value:u.value})})))}function Ex(e){return e.activePage===0&&e.numberOfPages<=0?B.createElement(Ro,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.prevStep},"Back"),B.createElement(Ro,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.nextStep},"Next")):B.createElement(B.Fragment,null,B.createElement(Ro,{onClick:e.prevStep},"Back"),B.createElement(Ro,{onClick:e.nextStep},"Next"))}function Lx(e){return{resourceType:"QuestionnaireResponse",questionnaire:Wl(e),item:wa(e.item)}}function wa(e){return e?.map(Rx)??[]}function Rx(e){return{id:Jl(),linkId:e.linkId,text:e.text,item:wa(e.item),answer:e.initial?.map(Hx)??[]}}var Nx=1;function Jl(){return"id-"+Nx++}function Hx(e){return{...e}}function Vx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function qx(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=uo({type:"QuestionnaireResponseItemAnswer",value:o[r.question]},"value[x]"),n=uo({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),f,{operator:l}=r;if(l==="exists")f=!!a===n.value;else if(a===void 0)f=!1;else{let s=l==="="||l==="!="?l?.replace("=","~"):l,[{value:i}]=Mx(`%actualAnswer ${s} %expectedAnswer`,[a],{actualAnswer:a,expectedAnswer:n});f=i}if(t==="any"&&f)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Gx(e){return e.filter(t=>Bx(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function Ux(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function zx(e){let[o,t]=io(1),r=e.item;return B.createElement(B.Fragment,null,[...Array(o)].map((a,n)=>B.createElement("div",{key:n},B.createElement("h3",null,e.text),B.createElement(Xl,{items:r.item??[],answers:e.answers,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&B.createElement(Ul,{onClick:()=>t(a=>a+1)},"Add Group"))}function Wx(e){let[o,t]=io(1);return B.createElement(B.Fragment,null,[...Array(o)].map((r,a)=>B.createElement(B.Fragment,{key:`${e.item.linkId}-${a}`},e.children({index:a}))),e.item?.repeats&&B.createElement(Ul,{onClick:()=>t(r=>r+1)},"Add Item"))}function Qx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function Xx(e,o){return e.length===0||e.length<o+1?Jl():e[o].id}var oI=$x(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function AM(e){let o=S(),t=Q(e.questionnaire),[r,a]=Zt(),[n,f]=Zt(),[l,s]=Zt(),[i,u]=Zt();function d(){u(void 0)}function c(){s(void 0)}return $l(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),$l(()=>(f(aI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:F.createElement("div",null,F.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},F.createElement(Kl,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),F.createElement(Jx,{type:"submit"},"Save")))}function Kl(e){let{classes:o,cx:t}=oI(),r=e.item,a=e.item,n=Yx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=eI();u.current=e.item;function d(g){H(g),e.setSelectedKey(e.item.id)}function c(g){H(g),e.setHoverKey(e.item.id)}function y(g){let C=u.current;e.onChange({...C,item:C.item?.map(O=>O.id===g.id?g:O)})}function b(g){e.onChange({...e.item,item:[...e.item.item??[],g]})}function A(g){e.onChange({...e.item,item:e.item.item?.filter(C=>C!==g)})}function I(g,C){e.onChange({...u.current,[g]:C})}function D(g){e.onChange({...e.item,item:e.item.item?.map(C=>C===g?{...C,repeats:!C.repeats}:C)})}let p=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return F.createElement("div",{"data-testid":a.linkId,className:p,onClick:d,onMouseOver:c},F.createElement("div",{className:o.questionBody},s?F.createElement(F.Fragment,null,n&&F.createElement(Oa,{size:"xl",defaultValue:r.title,onChange:g=>I("title",g.currentTarget.value)}),!n&&F.createElement(jx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>I("text",g.currentTarget.value)}),a.type==="reference"&&F.createElement(rI,{item:a,onChange:g=>I("extension",g)}),El(a)&&F.createElement(tI,{options:a.answerOption,onChange:g=>I("answerOption",g)})):F.createElement(F.Fragment,null,r.title&&F.createElement(_x,null,r.title),a.text&&F.createElement("div",null,a.text),!f&&F.createElement(Ma,{item:a,index:0,answers:{},onChange:()=>{}}))),a.item?.map(g=>F.createElement("div",{key:g.id},F.createElement(Kl,{item:g,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:y,onRemove:()=>A(g),onRepeatable:D}))),!f&&F.createElement("div",{className:o.topActions},s?F.createElement(F.Fragment,null,F.createElement(Oa,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>I("linkId",g.currentTarget.value)}),!f&&F.createElement(Kx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:g=>I("type",g.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):F.createElement("div",null,l)),F.createElement("div",{className:o.bottomActions},f&&F.createElement(F.Fragment,null,F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b({id:_e(),linkId:Ra("q"),type:"string",text:"Question"})}},"Add item"),F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b({id:_e(),linkId:Ra("g"),type:"group",text:"Group"})}},"Add group")),n&&F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),b(fI())}},"Add Page"),s&&!n&&F.createElement(F.Fragment,null,F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),F.createElement(He,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function tI(e){let o=Zx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return F.createElement("div",null,t.map(r=>{let[a,n]=Se({type:"QuestionnaireItemAnswerOption",value:r},"value");return F.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Re,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),F.createElement("div",null,F.createElement(He,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),F.createElement(He,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:_e()}])}},"Add choice"))}function rI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return F.createElement(F.Fragment,null,t.map(r=>F.createElement("div",{key:r.id},F.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},F.createElement("div",null,F.createElement(Oa,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),F.createElement("div",null,F.createElement(He,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),F.createElement(He,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:_e(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ea=1,La=1;function Ra(e){return e+Ea++}function _e(){return"id-"+La++}function aI(e){return{...e,id:e.id||_e(),item:jl(e.item)}}function jl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(La=Math.max(La,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ea=Math.max(Ea,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||_e(),item:jl(o.item),answerOption:nI(o.answerOption)}))}function nI(e){if(e)return e.map(o=>({...o,id:o.id||_e()}))}function fI(){return{id:_e(),linkId:Ra("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{ActionIcon as Yt,Button as lI,createStyles as sI,Divider as iI,Group as ut,NativeSelect as Na,Stack as er,Text as uI,TextInput as dI}from"@mantine/core";import{formatRange as _l,getCodeBySystem as cI}from"@medplum/core";import z,{useEffect as mI,useState as Ha}from"react";var pI=sI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),xI=["gender","age","gestationalAge","context","appliesTo","category"],II={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function VM(e){e=Object.assign(II,e);let o=e.definition,[t,r]=Ha([]),[a,n]=Ha(1),[f,l]=Ha(1);return mI(()=>{let b=CI(o,l);r(yI(b.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(er,null,t.map(b=>z.createElement(gI,{unit:SI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:y,onRemoveGroup:u,key:`group-${b.id}`,intervalGroup:b}))),z.createElement(Yt,{title:"Add Group",size:"sm",onClick:b=>{H(b),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(mo,null)),z.createElement(ut,{position:"right"},z.createElement(lI,{type:"submit"},"Save")));function s(){let b=t.flatMap(A=>A.intervals).filter(A=>!PI(A));e.onSubmit({...o,qualifiedInterval:b})}function i(b){r(A=>[...A,b])}function u(b){r(A=>A.filter(I=>I.id!==b.id))}function d(b,A){r(I=>{I=[...I];let D=I.find(g=>g.id===b),p=D?.intervals.findIndex(g=>g.id===A.id);return p!==void 0&&D?.intervals[p]&&(D.intervals[p]=A),I})}function c(b,A){A.id===void 0&&(A.id=`id-${f}`,l(I=>I+1)),r(I=>{I=[...I];let D=I.findIndex(p=>p.id===b);if(D!==-1){let p={...I[D]};A={...A,...p.filters},p.intervals=[...p.intervals,A],I[D]=p}return I})}function y(b,A){r(I=>{I=[...I];let D=I.find(p=>p.id===b);return D&&(D.intervals=D.intervals.filter(p=>p.id!==A.id)),I})}}function gI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=pI();return z.createElement(Xe,{"data-testid":o.id,className:r.section},z.createElement(er,{spacing:"lg"},z.createElement(ut,{position:"right"},z.createElement(Yt,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(Ue,null))),z.createElement(hI,{intervalGroup:o,onChange:e.onChange}),z.createElement(iI,null),o.intervals.map(a=>z.createElement(er,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ut,null,z.createElement(dI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(Yt,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(Ue,null))),z.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(Yt,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(mo,null))))}function hI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(er,{style:{maxWidth:"50%"}},z.createElement(ut,null,z.createElement(Na,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(ut,{spacing:"xs"},z.createElement(uI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(ot,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Na,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(Na,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function CI(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function yI(e,o){let t=1,r={};for(let a of e){let n=vI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(xI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function vI(e){return[`gender=${e.gender}`,`age=${_l(e.age)}`,`gestationalAge=${_l(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function SI(e){return e&&(cI(e,"http://unitsofmeasure.org")||e.text)}function PI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Zl,Grid as or,Text as bI}from"@mantine/core";import{formatDateTime as DI,getReferenceString as TI}from"@medplum/core";import xe,{useEffect as kI,useState as Yl}from"react";function KM(e){let o=S(),t=Q(e.value),[r,a]=Yl(!1),[n,f]=Yl();if(kI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(or,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,y=d?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(or.Col,{span:1,p:"md"},d?.status==="completed"?xe.createElement(hr,null):xe.createElement(Rr,{color:"gray"})),xe.createElement(or.Col,{span:9,p:"xs"},xe.createElement(bI,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:d?.meta?.author}),"\xA0on\xA0",DI(d?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Nt,{status:d?.status||"unknown"}))),xe.createElement(or.Col,{span:2,p:"md"},c&&!y&&xe.createElement(Zl,{onClick:()=>e.onStart(d,c)},"Start"),c&&y&&xe.createElement(Zl,{onClick:()=>e.onEdit(d,c,y)},"Edit")))}));function l(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===TI(u.resource))return u.resource}}import{createStyles as EI}from"@mantine/core";import ve,{useEffect as LI,useState as RI}from"react";import{stringify as MI}from"@medplum/core";function tr(e,o){let t=BI(e,o);return AI(t,e,o)}function BI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,d=u+1,c=u-1,y=l[d],b=l[c],A,I=0;i===-s||i!==s&&b.i<y.i?(I=y.i,A=y):(I=b.i+1,A=b),l[c]=void 0;let D=I-i,p={i:I,j:D,prev:FI(A),snake:!1};for(;I<t&&D<r&&e[I]===o[D];)I++,D++;if(I>p.i&&(p={i:I,j:D,prev:p,snake:!0}),l[u]=p,I>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function AI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function FI(e){return e&&!e.snake&&e.prev?e.prev:e}function es(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:MI(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return wI(t,o),OI(t),t}function wI(e,o){for(let t=1;t<o.length;t++){let r=tr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function OI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var NI=EI(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function lw(e){let{classes:o}=NI(),t=S(),[r,a]=RI(e.history);if(LI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=es(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((l,s)=>ve.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:l.span},ve.createElement(Je,{value:l.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:l.span},ve.createElement(ne,{to:HI(n,l.meta.versionId)},VI(l.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},s+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},l.value)))))))}function HI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function VI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return No(t,"year");let r=Math.floor(o/2592e3);if(r>0)return No(r,"month");let a=Math.floor(o/86400);if(a>0)return No(a,"day");let n=Math.floor(o/3600);if(n>0)return No(n,"hour");let f=Math.floor(o/60);return f>0?No(f,"minute"):No(o,"second")}function No(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as qI}from"@mantine/core";import{stringify as os}from"@medplum/core";import Ze from"react";var GI=qI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function pw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=os(o,!0).match(/[^\r\n]+/g),a=os(t,!0).match(/[^\r\n]+/g),n=tr(r,a);return Ze.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ze.createElement(UI,{key:"delta"+l,delta:f})))}function UI(e){let{classes:o}=GI();return Ze.createElement(Ze.Fragment,null,"...",Ze.createElement("br",null),e.delta.original.lines.length>0&&Ze.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
- `)),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 zI}from"@mantine/core";import{formatDateTime as WI,normalizeErrorString as QI}from"@medplum/core";import ie,{useEffect as XI,useState as JI}from"react";function Sw(e){let o=S(),[t,r]=JI(e.history);return XI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ie.createElement(zI,{withBorder:!0,withColumnBorders:!0},ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Author"),ie.createElement("th",null,"Date"),ie.createElement("th",null,"Version"))),ie.createElement("tbody",null,t.entry?.map((a,n)=>ie.createElement($I,{key:"entry-"+n,entry:a})))):ie.createElement("div",null,"Loading...")}function $I(e){let{response:o,resource:t}=e.entry;return t?ie.createElement("tr",null,ie.createElement("td",null,ie.createElement(Je,{value:t.meta?.author,link:!0})),ie.createElement("td",null,WI(t.meta?.lastUpdated)),ie.createElement("td",null,ie.createElement(ne,{to:KI(t)},t.meta?.versionId))):ie.createElement("tr",null,ie.createElement("td",{colSpan:3},QI(o?.outcome)))}function KI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as jI,createStyles as _I,Stack as ZI,Text as YI}from"@mantine/core";import{getReferenceString as eg}from"@medplum/core";import Z,{useEffect as og,useRef as tg,useState as dt}from"react";var rg=_I(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function Ow(e){let{classes:o}=rg(),t=S(),r=Q(e.schedule),a=Q(e.questionnaire),[n,f]=dt(),l=tg();l.current=n;let[s,i]=dt(na()),[u,d]=dt(),[c,y]=dt(),[b,A]=dt();if(og(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",eg(r)],["start","gt"+ag(s)],["start","lt"+ng(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let I=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},I&&Z.createElement(Ce,{value:I,size:"xl"}),I&&Z.createElement(YI,{size:"xl",weight:500},Z.createElement(Oe,{value:I})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,ts(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Df,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(ZI,null,n.map(D=>{let p=new Date(D.start);return p.getTime()>u.getTime()&&p.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:D.id},Z.createElement(jI,{variant:"outline",style:{width:150},onClick:()=>y(D)},ts(p)))}))),u&&c&&!b&&Z.createElement(Ql,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&b&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function ag(e){return rs(e.getTime())}function ng(e){return rs(e.getTime()+31*24*60*60*1e3)}function rs(e){return new Date(Math.max(Date.now(),e)).toISOString()}function ts(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as rr}from"@medplum/core";import fg from"react";function qw(e){return fg.createElement(Ke,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[rr(o)],subject:o.subject,sender:rr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[rr(o)],subject:o.subject,operator:rr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as kg}from"@medplum/core";import ir,{useEffect as Bg,useState as ds}from"react";import{Anchor as as,Button as lg,Center as sg,Group as ig,Stack as ug,Text as dg,TextInput as cg,Title as mg}from"@mantine/core";import{normalizeOperationOutcome as pg}from"@medplum/core";import Ae,{useState as xg}from"react";function ar(e){let o=S(),[t,r]=xg();return Ae.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(pg(n))}}},Ae.createElement(sg,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(mg,null,"Create project")),Ae.createElement(ug,{spacing:"xl"},Ae.createElement(cg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Ae.createElement(dg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(as,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(as,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(ig,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(lg,{type:"submit"},"Create project")))}import{Anchor as sr,Button as Cg,Center as yg,Checkbox as vg,Divider as Sg,Group as ls,PasswordInput as Pg,Stack as bg,Text as ss,TextInput as qa}from"@mantine/core";import{normalizeOperationOutcome as is}from"@medplum/core";import j,{useEffect as Dg,useState as Tg}from"react";import Ig,{useEffect as gg,useRef as hg,useState as Va}from"react";function nr(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function fr(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=hg(null),[n,f]=Va(typeof google<"u"),[l,s]=Va(!1),[i,u]=Va(!1);return gg(()=>{if(typeof google>"u"){nr("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?Ig.createElement("div",{ref:a}):null}function lr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function ns(e){typeof grecaptcha>"u"&&nr("https://www.google.com/recaptcha/api.js?render="+e)}function fs(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function us(e){let o=lr(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=Tg(),f=At(a,void 0);return Dg(()=>{t&&ns(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await fs(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(is(s))}}},j.createElement(yg,{sx:{flexDirection:"column"}},e.children),j.createElement(Lo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ls,{position:"center",p:"xl",style:{height:70}},j.createElement(fr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(is(s))}}})),j.createElement(Sg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(bg,{spacing:"xl"},j.createElement(qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(Pg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(ss,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(sr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(ss,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(sr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(sr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ls,{position:"apart",mt:"xl",noWrap:!0},j.createElement(vg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(Cg,{type:"submit"},"Create account")))}function PO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=S(),[s,i]=ds(void 0),[u,d]=ds();Bg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(y=>l.processCode(y.code)).then(()=>f()).catch(y=>d(kg(y)))},[l,o,t,s,f]);function c(y){y.code?l.processCode(y.code).then(()=>f()).catch(console.log):y.login&&i(y.login)}return ir.createElement(qt,{width:450},u&&ir.createElement("pre",null,JSON.stringify(u,null,2)),!s&&ir.createElement(us,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&ir.createElement(ar,{login:s,handleAuthResponse:c}))}import{showNotification as Ps}from"@mantine/notifications";import{normalizeErrorString as bs}from"@medplum/core";import co,{useCallback as Ua,useEffect as ah,useState as za}from"react";import{Anchor as cs,Button as ms,Center as ps,Checkbox as Ag,Divider as Fg,Group as Ga,PasswordInput as Mg,Stack as wg,TextInput as Og}from"@mantine/core";import{normalizeOperationOutcome as Eg}from"@medplum/core";import K,{useCallback as ur,useState as xs}from"react";function Is(e){let[o,t]=xs();return o?K.createElement(Rg,{email:o,...e}):K.createElement(Lg,{setEmail:t,...e})}function Lg(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=S(),s=!e.disableGoogleAuth&&lr(e.googleClientId),i=ur(async c=>{if(!c.authorizeUrl)return!1;let y=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),b=new URL(c.authorizeUrl);return b.searchParams.set("state",y),window.location.assign(b.toString()),!0},[l,f]),u=ur(async c=>{let y=await l.post("auth/method",{email:c.email});await i(y)||o(c.email)},[l,i,o]),d=ur(async c=>{let y=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(y)||r(y)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(ps,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Ga,{position:"center",p:"xl",style:{height:70}},K.createElement(fr,{googleClientId:s,handleGoogleCredential:d})),!n&&K.createElement(Fg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Og,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Ga,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(cs,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(ms,{type:"submit"},"Next")))}function Rg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,l]=xs(),s=At(f,void 0),i=ur(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(Eg(d)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(ps,{sx:{flexDirection:"column"}},r),K.createElement(Lo,{issues:s}),K.createElement(wg,{spacing:"xl"},K.createElement(Mg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(Ga,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(cs,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Ag,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(ms,{type:"submit"},"Sign in")))}import{Avatar as Ng,Center as Hg,Group as Vg,Stack as qg,Text as gs,Title as Gg,UnstyledButton as Ug}from"@mantine/core";import{normalizeOperationOutcome as zg}from"@medplum/core";import Fe,{useState as Wg}from"react";function hs(e){let o=S(),[t,r]=Wg();return Fe.createElement(qg,null,Fe.createElement(Hg,{sx:{flexDirection:"column"}},Fe.createElement(je,{size:32}),Fe.createElement(Gg,{order:3},"Choose profile")),Fe.createElement(Lo,{outcome:t}),e.memberships.map(a=>Fe.createElement(Ug,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(zg(n)))}},Fe.createElement(Vg,null,Fe.createElement(Ng,{radius:"xl"}),Fe.createElement("div",{style:{flex:1}},Fe.createElement(gs,{size:"sm",weight:500},a.profile?.display),Fe.createElement(gs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Qg,Center as Xg,Checkbox as Jg,Group as $g,Stack as Cs,Title as Kg}from"@mantine/core";import Ve from"react";function ys(e){let o=S();return Ve.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ve.createElement(Cs,null,Ve.createElement(Xg,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(Kg,null,"Choose scope")),Ve.createElement(Cs,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(Jg,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement($g,{position:"right",mt:"xl"},Ve.createElement(Qg,{type:"submit"},"Set scope"))))}import{Alert as jg,Button as _g,Center as Zg,Group as Yg,Stack as vs,TextInput as eh,Title as oh}from"@mantine/core";import{normalizeErrorString as th}from"@medplum/core";import Me,{useState as rh}from"react";function Ss(e){let o=S(),[t,r]=rh(void 0);return Me.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(th(n)))}},Me.createElement(vs,null,Me.createElement(Zg,{sx:{flexDirection:"column"}},Me.createElement(je,{size:32}),Me.createElement(oh,null,"Enter MFA code")),t&&Me.createElement(jg,{icon:Me.createElement(oo,{size:16}),title:"Error",color:"red"},t),Me.createElement(vs,null,Me.createElement(eh,{name:"token",label:"MFA code",required:!0})),Me.createElement(Yg,{position:"right",mt:"xl"},Me.createElement(_g,{type:"submit"},"Submit code"))))}function C0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=S(),[i,u]=za(void 0),[d,c]=za(!1),[y,b]=za(void 0),A=Ua(p=>{f?f(p):s.processCode(p).then(()=>{r&&r()}).catch(g=>Ps({color:"red",message:bs(g)}))},[s,f,r]),I=Ua(p=>{c(!!p.mfaRequired),p.login&&u(p.login),p.memberships&&b(p.memberships),p.code&&(t?b(void 0):A(p.code))},[t,A]),D=Ua(p=>{A(p.code)},[A]);return ah(()=>{o&&!i&&s.get("auth/login/"+o).then(I).catch(p=>Ps({color:"red",message:bs(p)}))},[s,o,i,I]),co.createElement(qt,{width:450},(()=>i?d?co.createElement(Ss,{login:i,handleAuthResponse:I}):y?co.createElement(hs,{login:i,memberships:y,handleAuthResponse:I}):e.projectId==="new"?co.createElement(ar,{login:i,handleAuthResponse:I}):e.chooseScopes?co.createElement(ys,{login:i,scope:e.scope,handleAuthResponse:D}):co.createElement("div",null,"Success"):co.createElement(Is,{onForgotPassword:a,onRegister:n,handleAuthResponse:I,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Qa as AddressDisplay,Ka as AddressInput,Za as AnnotationInput,NS as AppShell,vo as AsyncAutocomplete,Bn as AttachmentArrayDisplay,Fn as AttachmentArrayInput,Po as AttachmentButton,we as AttachmentDisplay,vt as AttachmentInput,_o as BackboneElementDisplay,et as BackboneElementInput,Df as CalendarInput,Bt as CheckboxFormSection,yt as CodeInput,Do as CodeableConceptDisplay,jn as CodeableConceptInput,Rn as CodingDisplay,_n as CodingInput,Hn as ContactDetailDisplay,Yn as ContactDetailInput,Pt as ContactPointDisplay,Mt as ContactPointInput,Xe as Container,Be as DateTimeInput,SB as DefaultResourceTimeline,wn as DescriptionList,On as DescriptionListEntry,ia as DiagnosticReportDisplay,qt as Document,bc as ElementDefinitionInputSelector,Sf as ElementDefinitionTypeInput,EB as EncounterTimeline,go as ErrorBoundary,fx as FhirPathTable,J as Form,Pe as FormSection,Sn as Header,gt as HumanNameDisplay,tf as HumanNameInput,Vn as IdentifierDisplay,af as IdentifierInput,Gr as Loading,je as Logo,ne as MedplumLink,mh as MedplumProvider,CF as MemoizedFhirPathTable,sF as MemoizedSearchControl,Gn as MoneyDisplay,nf as MoneyInput,kn as Navbar,sm as ObservationTable,Lo as OperationOutcomeAlert,Ao as Panel,wF as PatientTimeline,KF as PlanDefinitionBuilder,jo as QuantityDisplay,be as QuantityInput,AM as QuestionnaireBuilder,Ql as QuestionnaireForm,Ma as QuestionnaireFormItem,Ol as QuestionnaireItemType,ql as QuestionnaireRepeatWrapper,bt as RangeDisplay,ot as RangeInput,ro as ReferenceDisplay,ko as ReferenceInput,VM as ReferenceRangeEditor,gI as ReferenceRangeGroupEditor,PO as RegisterForm,KM as RequestGroupDisplay,Qn as ResourceArrayDisplay,If as ResourceArrayInput,Ce as ResourceAvatar,Je as ResourceBadge,lw as ResourceBlame,pw as ResourceDiff,Lb as ResourceForm,Sw as ResourceHistoryTable,Et as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Re as ResourcePropertyInput,ua as ResourceTable,Ke as ResourceTimeline,Ow as Scheduler,ba as SearchChangeEvent,lo as SearchClickEvent,jp as SearchControl,ul as SearchFieldEditor,Il as SearchFilterEditor,Da as SearchLoadEvent,qw as ServiceRequestTimeline,C0 as SignInForm,Nt as StatusBadge,Nf as Timeline,$e as TimelineItem,vf as TimingInput,Ia as addDateFilterBetween,_B as addField,wo as addFilter,el as addLastMonthFilter,ga as addMissingFilter,tl as addNextMonthFilter,ol as addThisMonthFilter,Zf as addTodayFilter,Yf as addTomorrowFilter,rl as addYearToDateFilter,_f as addYesterdayFilter,ye as buildFieldNameString,jB as clearFilters,zt as clearFiltersOnField,yd as convertIsoToLocal,vd as convertLocalToIso,nr as createScriptTag,jf as deleteFilter,me as getErrorsForInput,At as getIssuesForExpression,Oc as getMonthString,at as getOpString,fs as getRecaptcha,ll as getSearchOperators,nl as getSortField,na as getStartMonth,VI as getTimeString,Se as getValueAndType,ns as initRecaptcha,El as isChoiceQuestion,qx as isQuestionEnabled,fl as isSortDescending,Pn as parseForm,sl as renderValue,rt as setFilters,sp as setOffset,al as setPage,Yo as setPropertyValue,ha as setSort,qf as sortByDateAndPriority,ZB as toggleSort,S as useMedplum,Uo as useMedplumContext,Ge as useMedplumNavigate,mt as useMedplumProfile,Q as useResource};
64
+ }`.replace(/\s+/g," ")}function Vi(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),Gi(qi(t),o).slice(0,5)}function qi(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 Gi(e,o){return e.sort((t,r)=>vn(r,o)-vn(t,o))}function vn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Sn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Sn(Fi(r),o));return t}function Sn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var $i=zi(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=Qo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=$i(),[s,i]=Ji(!1);return U.createElement(Qi,{height:60,p:8,style:{zIndex:101}},U.createElement(vt,{position:"apart"},U.createElement(vt,{spacing:"xs"},U.createElement(Dn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),U.createElement(Pn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},U.createElement(He.Target,null,U.createElement(Dn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},U.createElement(vt,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement(jo,{size:"sm",className:f.userName},Xi(r?.name?.[0])),U.createElement(br,{size:12,stroke:1.5})))),U.createElement(He.Dropdown,null,U.createElement(Wi,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(yt,{value:o.profile?.name?.[0]}),U.createElement(jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(He.Divider,null),n.map(u=>u.profile.reference!==kn(o.profile)&&U.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(vt,null,U.createElement(Ui,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(jo,{size:"sm",weight:500},u.profile.display),U.createElement(jo,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(He.Divider,null),U.createElement(He.Item,{icon:U.createElement(Gr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(He.Item,{icon:U.createElement(ho,{size:14,stroke:1.5}),onClick:()=>a(`/${kn(r)}`)},"Account settings"),U.createElement(He.Item,{icon:U.createElement(Or,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Iu,createStyles as gu,Navbar as $r,ScrollArea as hu,Space as yu,Text as Cu}from"@mantine/core";import ne,{useState as vu}from"react";import{Button as Zi,Group as Yi,Modal as eu,NativeSelect as ou,Stack as tu,TextInput as ru}from"@mantine/core";import{showNotification as An}from"@mantine/notifications";import{deepClone as au,normalizeErrorString as nu}from"@medplum/core";import Xe from"react";import _i from"react";function Bn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Ki(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&ji(o,t);return o}function Ki(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function ji(e,o){e[o.name]=o.value}function J(e){return _i.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Bn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Fn(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=au(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"}),An({color:"green",message:"Success"}),e.onOk()}).catch(u=>{An({color:"red",message:nu(u)})})}return Xe.createElement(eu,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement(J,{onSubmit:r},Xe.createElement(tu,null,Xe.createElement(fu,{config:t}),Xe.createElement(ru,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),Xe.createElement(Yi,{position:"right"},Xe.createElement(Zi,{mt:"sm",type:"submit"},"OK")))))}function fu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(ou,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import cu,{useState as mu}from"react";import lu,{useCallback as su}from"react";function Jr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function iu(e){return typeof e.display=="string"?e.display:Jr(e)}function uu(e){return{value:Jr(e),label:iu(e),resource:e}}function du(e){return{code:e,display:e}}function Je(e){let o=S(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=su(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 g of d)g.code&&!c.some(y=>y.code===g.code)&&c.push(g);return c},[o,t]);return lu.createElement(bo,{...n,creatable:r??!0,clearable:a??!0,toKey:Jr,toOption:uu,loadOptions:f,onCreate:du,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function St(e){let[o,t]=mu(e.defaultValue);function r(a){let n=a[0],f=xu(n);t(f),e.onChange&&e.onChange(f)}return cu.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:pu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function pu(e){return e?{code:e}:void 0}function xu(e){return e?.code}var Mn=gu(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 wn(e){let{classes:o}=Mn(),t=ze(),r=Pu(e.pathname,e.searchParams,e.menus),[a,n]=vu(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return ne.createElement(ne.Fragment,null,ne.createElement($r,{width:{sm:250},p:"xs"},ne.createElement(hu,null,ne.createElement($r.Section,{mb:"sm"},ne.createElement(St,{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})),ne.createElement($r.Section,{grow:!0},e.menus?.map(s=>ne.createElement(ne.Fragment,{key:`menu-${s.title}`},ne.createElement(Cu,{className:o.menuTitle},s.title),s.links?.map(i=>ne.createElement(Su,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},ne.createElement(bu,{to:i.href,icon:i.icon}),ne.createElement("span",null,i.label))))),e.displayAddBookmark&&ne.createElement(Iu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:ne.createElement(Nr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&ne.createElement(Fn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Su(e){let{classes:o,cx:t}=Mn();return ne.createElement(le,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function bu(e){return e.icon?e.icon:ne.createElement(yu,{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=Du(e,o,f.href);l>a&&(a=l,r=f)}return r}function Du(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 YS(e){let o=Tu(),[t,r]=Au(localStorage.navbarOpen==="true"),a=S(),n=xt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?fo.createElement(Wr,null):fo.createElement(ku,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&fo.createElement(Tn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?fo.createElement(wn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},fo.createElement(yo,{key:`${e.pathname}?${e.searchParams?.toString()}`},fo.createElement(Bu,{fallback:fo.createElement(Wr,null)},e.children)))}import Kr from"react";import{Anchor as Fu}from"@mantine/core";import $e from"react";function Ee(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?$e.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(Fu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function On(e){return Kr.createElement("div",null,e.values?.map((o,t)=>Kr.createElement("div",{key:"attatchment-"+t},Kr.createElement(Ee,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as En}from"@mantine/core";import se,{useRef as wu,useState as Ou}from"react";import jr,{useRef as Mu}from"react";function Po(e){let o=S(),t=Mu(null);function r(f){N(f),t.current?.click()}function a(f){N(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 Ln(e){let[o,t]=Ou(e.defaultValue??[]),r=wu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return se.createElement("table",{style:{width:"100%"}},se.createElement("colgroup",null,se.createElement("col",{width:"97%"}),se.createElement("col",{width:"3%"})),se.createElement("tbody",null,o.map((n,f)=>se.createElement("tr",{key:`${f}-${o.length}`},se.createElement("td",null,se.createElement(Ee,{value:n,maxWidth:200})),se.createElement("td",null,se.createElement(En,{title:"Remove",size:"sm",onClick:l=>{N(l);let s=o.slice();s.splice(f,1),a(s)}},se.createElement(Qe,null))))),se.createElement("tr",null,se.createElement("td",null),se.createElement("td",null,se.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>se.createElement(En,{...n,title:"Add",size:"sm",color:"green"},se.createElement(Xo,{size:16})))))))}import{Button as Rn}from"@mantine/core";import Do,{useState as Eu}from"react";function bt(e){let[o,t]=Eu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Ee,{value:o,maxWidth:200}),Do.createElement(Rn,{onClick:a=>{N(a),r(void 0)}},"Remove")):Do.createElement(Po,{onUpload:r},a=>Do.createElement(Rn,{...a},"Upload..."))}import{getPropertyDisplayName as Yu,globalSchema as ed}from"@medplum/core";import et from"react";var Pt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Lu}from"@mantine/core";import _o from"react";var Ru=Lu(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 Nn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Ru();return _o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Hn(e){return _o.createElement(_o.Fragment,null,_o.createElement("dt",null,e.term),_o.createElement("dd",null,e.children))}import{ActionIcon as Qu,Box as Wu,CopyButton as Xu,Tooltip as Ju}from"@mantine/core";import{formatDateTime as $u,formatPeriod as Ku,formatTiming as ju,getElementDefinitionTypeName as _u,getTypedPropertyValue as Zu,PropertyType as H}from"@medplum/core";import O from"react";import{formatCodeableConcept as Nu}from"@medplum/core";import Vn from"react";function ko(e){return Vn.createElement(Vn.Fragment,null,Nu(e.value))}import{formatCoding as Hu}from"@medplum/core";import qn from"react";function Gn(e){return qn.createElement(qn.Fragment,null,Hu(e.value))}import _r from"react";import Un from"react";function Dt(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("]")),Un.createElement(Un.Fragment,null,t.join("").trim())}function zn(e){let o=e.value;return o?_r.createElement(_r.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>_r.createElement(Dt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Vu from"react";function Qn(e){return Vu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as qu}from"@medplum/core";import Wn from"react";function Xn(e){return Wn.createElement(Wn.Fragment,null,qu(e.value))}import{formatQuantity as Gu}from"@medplum/core";import Jn from"react";function Zo(e){return Jn.createElement(Jn.Fragment,null,Gu(e.value))}import{formatRange as Uu}from"@medplum/core";import $n from"react";function kt(e){return $n.createElement($n.Fragment,null,Uu(e.value))}import Tt from"react";function Kn(e){let o=e.value;return o?Tt.createElement(Tt.Fragment,null,Tt.createElement(Zo,{value:o.numerator}),"\xA0/\xA0",Tt.createElement(Zo,{value:o.denominator})):null}import{stringify as zu}from"@medplum/core";import Zr from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||zu(e.value);return e.link!==!1&&e.value.reference?Zr.createElement(le,{to:e.value},o):Zr.createElement(Zr.Fragment,null,o)}import Bt from"react";function jn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Bt.createElement(Bt.Fragment,null,t.map((a,n)=>Bt.createElement("div",{key:`${n}-${t.length}`},Bt.createElement(pe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function pe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return O.createElement(Wu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,O.createElement(Xu,{value:r,timeout:2e3},({copied:n,copy:f})=>O.createElement(Ju,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},O.createElement(Qu,{color:n?"teal":"gray",onClick:f},n?O.createElement(Wo,{size:"1rem"}):O.createElement(Dr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===H.Attachment?O.createElement(On,{values:r,maxWidth:e.maxWidth}):O.createElement(jn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case H.boolean:return O.createElement(O.Fragment,null,r===void 0?"":(!!r).toString());case H.SystemString:case H.string:return O.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case H.code:case H.date:case H.decimal:case H.integer:case H.positiveInt:case H.unsignedInt:case H.uri:case H.url:return O.createElement(O.Fragment,null,r);case H.canonical:return O.createElement(lo,{value:{reference:r},link:e.link});case H.dateTime:case H.instant:return O.createElement(O.Fragment,null,$u(r));case H.markdown:return O.createElement("pre",null,r);case H.Address:return O.createElement(ja,{value:r});case H.Annotation:return O.createElement(O.Fragment,null,r?.text);case H.Attachment:return O.createElement(Ee,{value:r,maxWidth:e.maxWidth});case H.CodeableConcept:return O.createElement(ko,{value:r});case H.Coding:return O.createElement(Gn,{value:r});case H.ContactDetail:return O.createElement(zn,{value:r});case H.ContactPoint:return O.createElement(Dt,{value:r});case H.HumanName:return O.createElement(yt,{value:r});case H.Identifier:return O.createElement(Qn,{value:r});case H.Money:return O.createElement(Xn,{value:r});case H.Period:return O.createElement(O.Fragment,null,Ku(r));case H.Quantity:case H.Duration:return O.createElement(Zo,{value:r});case H.Range:return O.createElement(kt,{value:r});case H.Ratio:return O.createElement(Kn,{value:r});case H.Reference:return O.createElement(lo,{value:r,link:e.link});case H.Timing:return O.createElement(O.Fragment,null,ju(r));case H.Dosage:case H.UsageContext:return O.createElement(Yo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return O.createElement(Yo,{value:{type:_u(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Pe(e,o){let t=Zu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Yo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=ed.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?et.createElement("div",null,t.name):et.createElement(Nn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(Pt.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Pe(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:et.createElement(Hn,{key:f,term:Yu(f)},et.createElement(pe,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):et.createElement("div",null,r,"\xA0not implemented")}import{Stack as Ec}from"@mantine/core";import{getPropertyDisplayName as Bf,globalSchema as Lc}from"@medplum/core";import Ao,{useState as Rc}from"react";import{Group as od,Input as td}from"@mantine/core";import At from"react";function Ft(e){return At.createElement(od,{noWrap:!0},At.createElement("div",null,e.children),At.createElement("div",null,At.createElement(td.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as rd}from"@mantine/core";import ad from"react";function xe(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function Mt(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))}function _n(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function De(e){return ad.createElement(rd.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:xe(e.outcome,e.htmlFor)},e.children)}import{Button as Zn,Group as nd,Stack as fd,TextInput as Yn}from"@mantine/core";import{capitalize as ld,deepClone as sd}from"@medplum/core";import Ae,{useEffect as id,useState as ef}from"react";function _P(e){let o=S(),t=W(e.defaultValue),[r,a]=ef(),[n,f]=ef();return id(()=>{t&&(f(sd(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Ae.createElement("div",null,"Loading..."):Ae.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Ae.createElement(fd,{mb:"xl"},Ae.createElement(De,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Ae.createElement(Yn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Ae.createElement(De,{title:"ID",htmlFor:"id",outcome:e.outcome},Ae.createElement(Yn,{name:"id",defaultValue:n.id,disabled:!0}))),Ae.createElement(tt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Ae.createElement(nd,{position:"right",mt:"xl"},Ae.createElement(Zn,{type:"submit"},"OK"),e.onDelete&&Ae.createElement(Zn,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function ot(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",ld(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as Dc,Group as kc,NativeSelect as Tc,Textarea as Bc,TextInput as la}from"@mantine/core";import{capitalize as Ac,getElementDefinitionTypeName as Fc,PropertyType as E}from"@medplum/core";import G,{useState as Mc}from"react";import ud,{useState as dd}from"react";function of(e){let[o,t]=dd(e.defaultValue);function r(a){let n=md(a);t(n),e.onChange&&e.onChange(n)}return ud.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&cd(o),maxSelectedValues:1,onChange:r})}function cd(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function md(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import pd,{useState as xd}from"react";function tf(e){let[o,t]=xd(e.defaultValue);function r(a){let n=a[0],f=n&&gd(n);t(f),e.onChange&&e.onChange(f)}return pd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Id(o),maxSelectedValues:1,onChange:r})}function Id(e){return{system:e.system,code:e.code,display:e.display}}function gd(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Sd,TextInput as bd}from"@mantine/core";import Yr,{useRef as Pd,useState as Dd}from"react";import{Group as hd,NativeSelect as rf,TextInput as yd}from"@mantine/core";import wt,{useRef as Cd,useState as vd}from"react";function Ot(e){let[o,t]=vd(e.defaultValue),r=Cd();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return wt.createElement(hd,{spacing:"xs",grow:!0,noWrap:!0},wt.createElement(rf,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),wt.createElement(rf,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),wt.createElement(yd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function af(e){let[o,t]=Dd(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 Yr.createElement(Sd,{spacing:"xs",grow:!0,noWrap:!0},Yr.createElement(bd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),Yr.createElement(Ot,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as kd}from"@mantine/core";import{isValidDate as nf}from"@medplum/core";import Td from"react";function Fe(e){return Td.createElement(kd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Fd(),defaultValue:Bd(e.defaultValue),autoFocus:e.autoFocus,error:xe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Ad(t))}}})}function Bd(e){if(!e)return"";let o=new Date(e);return nf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Ad(e){if(!e)return"";let o=new Date(e);return nf(o)?o.toISOString():""}function Fd(){return"datetime-local"}import{JsonInput as Md}from"@mantine/core";import{stringify as wd}from"@medplum/core";import Od from"react";function ff(e){return Od.createElement(Md,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:wd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Ed,NativeSelect as Ld,TextInput as Et}from"@mantine/core";import To,{useRef as Rd,useState as Nd}from"react";function lf(e){let[o,t]=Nd(e.defaultValue),r=Rd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return To.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},To.createElement(Ld,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),To.createElement(Et,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),To.createElement(Et,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),To.createElement(Et,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),To.createElement(Et,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Hd,TextInput as sf}from"@mantine/core";import ea,{useState as Vd}from"react";function uf(e){let[o,t]=Vd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ea.createElement(Hd,{spacing:"xs",grow:!0,noWrap:!0},ea.createElement(sf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ea.createElement(sf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as qd,TextInput as Gd}from"@mantine/core";import oa,{useCallback as ta,useState as Ud}from"react";var zd=["USD","EUR","CAD","GBP","AUD"];function df(e){let{onChange:o}=e,[t,r]=Ud(e.defaultValue),a=ta(s=>{r(s),o&&o(s)},[o]),n=ta(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=ta(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=oa.createElement(qd,{defaultValue:t?.currency,data:zd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return oa.createElement(Gd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:oa.createElement(kr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as Qd}from"@mantine/core";import ra,{useState as Wd}from"react";function cf(e){let[o,t]=Wd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ra.createElement(Qd,{spacing:"xs",grow:!0,noWrap:!0},ra.createElement(Fe,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),ra.createElement(Fe,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Xd,NativeSelect as Jd,TextInput as mf}from"@mantine/core";import Lt,{useState as $d}from"react";function ke(e){let[o,t]=$d(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Lt.createElement(Xd,{spacing:"xs",grow:!0,noWrap:!0},Lt.createElement(Jd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Lt.createElement(mf,{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:Kd(a.currentTarget.value)})}}),Lt.createElement(mf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Kd(e){if(e)return parseFloat(e)}import{Group as jd}from"@mantine/core";import aa,{useState as _d}from"react";function rt(e){let[o,t]=_d(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return aa.createElement(jd,{spacing:"xs",grow:!0,noWrap:!0},aa.createElement(ke,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),aa.createElement(ke,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Zd}from"@mantine/core";import na,{useState as Yd}from"react";function pf(e){let[o,t]=Yd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return na.createElement(Zd,{spacing:"xs",grow:!0,noWrap:!0},na.createElement(ke,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),na.createElement(ke,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as ic,NativeSelect as uc,TextInput as dc}from"@mantine/core";import{createReference as cc}from"@medplum/core";import Nt,{useRef as hf,useState as yf}from"react";import{Group as ec,Text as xf}from"@mantine/core";import{getDisplayString as oc,getReferenceString as gf}from"@medplum/core";import so,{forwardRef as tc,useCallback as If,useState as rc}from"react";var ac={Observation:"code",User:"email:contains"},nc=["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 fc(e){return{value:gf(e),label:oc(e),resource:e}}function Rt(e){let o=S(),t=e.resourceType,[r,a]=rc(),n=W(e.defaultValue,a),f=e.onChange,l=If(async(i,u)=>{let d=sc(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=If(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(bo,{name:e.name,itemComponent:lc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:gf,toOption:fc,loadOptions:l,onChange:s,clearable:!0})}var lc=tc(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(ec,{noWrap:!0},so.createElement(Ce,{value:o}),so.createElement("div",null,so.createElement(xf,null,e),so.createElement(xf,{size:"xs",color:"dimmed"},o.birthDate)))));function sc(e){return ac[e]??(nc.includes(e)?"name":"_id")}function Bo(e){let o=mc(e.targetTypes),t=pc(e.defaultValue,o),[r,a]=yf(e.defaultValue),[n,f]=yf(t),l=hf();l.current=r;let s=hf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Nt.createElement(ic,{spacing:"xs",grow:!0,noWrap:!0},o?Nt.createElement(uc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Nt.createElement(dc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Nt.createElement(Rt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?cc(u):void 0)}}))}function mc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function pc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as Cf}from"@mantine/core";import Ie,{useRef as xc,useState as Ic}from"react";function vf(e){let[o,t]=Ic(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=xc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return Ie.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Ie.createElement("colgroup",null,Ie.createElement("col",{width:"97%"}),Ie.createElement("col",{width:"3%"})),Ie.createElement("tbody",null,o.map((n,f)=>Ie.createElement("tr",{key:`${f}-${o.length}`},Ie.createElement("td",null,Ie.createElement(Ve,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Cf,{title:"Remove",size:"sm",onClick:l=>{N(l);let s=[...r.current];s.splice(f,1),a(s)}},Ie.createElement(Qe,null))))),Ie.createElement("tr",null,Ie.createElement("td",null),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Cf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},Ie.createElement(xo,null))))))}import{Button as Pf,Chip as Sf,Group as Ht,Modal as gc,NativeSelect as hc,Stack as yc,Switch as Cc,TextInput as vc}from"@mantine/core";import{formatTiming as Sc}from"@medplum/core";import $,{useRef as Df,useState as fa}from"react";var bc=["sun","mon","tue","wed","thu","fri","sat"];function kf(e){let[o,t]=fa(e.defaultValue),[r,a]=fa(!1),n=Df();return n.current=o,$.createElement($.Fragment,null,$.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,Sc(n.current)||"No repeat"),$.createElement(Pf,{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 bf={repeat:{period:1,periodUnit:"d"}};function Pc(e){let[o,t]=fa(e.defaultValue||bf),r=Df();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(gc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(yc,null,$.createElement(De,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Fe,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(Cc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?bf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(De,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(vc,{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(hc,{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(De,{title:"Repeat on"},$.createElement(Sf.Group,{multiple:!0,onChange:s},$.createElement(Ht,{position:"apart",mt:"md",spacing:"xs"},bc.map(i=>$.createElement(Sf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Ht,{position:"right"},$.createElement(Pf,{onClick:()=>e.onOk(o)},"OK"))))}function Ve(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===E.Attachment?G.createElement(Ln,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(vf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(wc,{elementDefinitionTypes:n,...e}):G.createElement(Tf,{elementDefinitionType:n[0],...e})}function wc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Mc(t);return G.createElement(kc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Tc,{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]",Ac(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 E.SystemString:case E.canonical:case E.string:case E.time:case E.uri:case E.url:return G.createElement(la,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:xe(e.outcome,r)});case E.date:return G.createElement(la,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:xe(e.outcome,r)});case E.dateTime:case E.instant:return G.createElement(Fe,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case E.decimal:case E.integer:case E.positiveInt:case E.unsignedInt:return G.createElement(la,{type:"number",step:t===E.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case E.code:return G.createElement(St,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.boolean:return G.createElement(Dc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case E.markdown:return G.createElement(Bc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case E.Address:return G.createElement(en,{name:r,defaultValue:a,onChange:e.onChange});case E.Annotation:return G.createElement(rn,{name:r,defaultValue:a,onChange:e.onChange});case E.Attachment:return G.createElement(bt,{name:r,defaultValue:a,onChange:e.onChange});case E.CodeableConcept:return G.createElement(of,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.Coding:return G.createElement(tf,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.ContactDetail:return G.createElement(af,{name:r,defaultValue:a,onChange:e.onChange});case E.ContactPoint:return G.createElement(Ot,{name:r,defaultValue:a,onChange:e.onChange});case E.Extension:return G.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case E.HumanName:return G.createElement(lf,{name:r,defaultValue:a,onChange:e.onChange});case E.Identifier:return G.createElement(uf,{name:r,defaultValue:a,onChange:e.onChange});case E.Money:return G.createElement(df,{name:r,defaultValue:a,onChange:e.onChange});case E.Period:return G.createElement(cf,{name:r,defaultValue:a,onChange:e.onChange});case E.Duration:case E.Quantity:return G.createElement(ke,{name:r,defaultValue:a,onChange:e.onChange});case E.Range:return G.createElement(rt,{name:r,defaultValue:a,onChange:e.onChange});case E.Ratio:return G.createElement(pf,{name:r,defaultValue:a,onChange:e.onChange});case E.Reference:return G.createElement(Bo,{name:r,defaultValue:a,targetTypes:Oc(o),onChange:e.onChange});case E.Timing:return G.createElement(kf,{name:r,defaultValue:a,onChange:e.onChange});case E.Dosage:case E.UsageContext:return G.createElement(tt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(tt,{typeName:Fc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Oc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=Rc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Lc.types[a];if(!n)return Ao.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Ao.createElement(Ec,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||Pt.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=Pe(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Ao.createElement(Ft,{key:s,title:Bf(s),description:i.definition,htmlFor:s},Ao.createElement(Ve,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(g,y)=>{r(ot(o,s,y??s,l[1],g))}})):Ao.createElement(De,{key:s,title:Bf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Ao.createElement(Ve,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(g,y)=>{r(ot(o,s,y??s,l[1],g))}}))}))}import{Button as sa,createStyles as Nc,Group as Af}from"@mantine/core";import oe,{useMemo as Hc,useState as Vc}from"react";var qc=Nc(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 Gc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Ff(e){let{classes:o}=qc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Vc(ia);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Hc(()=>Uc(a,e.slots),[a,e.slots]);return oe.createElement("div",null,oe.createElement(Af,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},oe.createElement("p",{style:{flex:1}},Gc(a)),oe.createElement(Af,{position:"right",spacing:"xs"},oe.createElement(sa,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),oe.createElement(sa,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),oe.createElement("table",{className:o.table},oe.createElement("thead",null,oe.createElement("tr",null,oe.createElement("th",null,"SUN"),oe.createElement("th",null,"MON"),oe.createElement("th",null,"TUE"),oe.createElement("th",null,"WED"),oe.createElement("th",null,"THU"),oe.createElement("th",null,"FRI"),oe.createElement("th",null,"SAT"))),oe.createElement("tbody",null,l.map((s,i)=>oe.createElement("tr",{key:"week-"+i},s.map((u,d)=>oe.createElement("td",{key:"day-"+d},u&&oe.createElement(sa,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function ia(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Uc(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:zc(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 zc(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 Wc}from"@mantine/core";import Xc from"react";var Jc=Wc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=Jc();return Xc.createElement(Qc,{className:r.root,...t},o)}import tp from"react";import{ActionIcon as $f,Center as Vm,createStyles as qm,Group as Gm,Loader as Um,Menu as qe,ScrollArea as zm,TextInput as Qm}from"@mantine/core";import{showNotification as Wm,updateNotification as Ia}from"@mantine/notifications";import{getReferenceString as at,normalizeErrorString as Xm}from"@medplum/core";import D,{useCallback as Gt,useEffect as Jm,useRef as Kf,useState as jf}from"react";import{createStyles as lm,Group as qt,List as Of,Stack as Ef,Text as Te,Title as Lf}from"@mantine/core";import{capitalize as sm,formatCodeableConcept as im,formatDateTime as ca,formatObservationValue as um,isReference as dm}from"@medplum/core";import h,{useEffect as cm,useState as mm}from"react";import{Blockquote as $c,createStyles as Kc,Stack as jc}from"@mantine/core";import Mf from"react";var _c=Kc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ua({value:e}){let{classes:o}=_c();return e?Mf.createElement(jc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Mf.createElement($c,{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 rm}from"@mantine/core";import da from"react";import{Text as Zc}from"@mantine/core";import{getDisplayString as Yc,isOk as em,normalizeErrorString as om}from"@medplum/core";import wf,{useState as tm}from"react";function Le(e){let{value:o,link:t,...r}=e,[a,n]=tm(),f=W(o,n),l;if(a&&!em(a))l=`[${om(a)}]`;else if(f)l=Yc(f);else return null;return t?wf.createElement(le,{to:o,...r},l):wf.createElement(Zc,{component:"span",...r},l)}function je(e){return da.createElement(rm,{spacing:"xs"},da.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),da.createElement(Le,{value:e.value,link:e.link}))}import{Badge as am}from"@mantine/core";import nm from"react";var fm={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 Vt(e){return nm.createElement(am,{color:fm[e.status]},e.status)}var Rf=lm(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}}));ma.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ma(e){let o=S(),t=W(e.value),[r,a]=mm();if(cm(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(Ef,null,h.createElement(Lf,null,"Diagnostic Report"),h.createElement(pm,{value:t}),!e.hideSpecimenInfo&&xm(r),t.result&&h.createElement(Im,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(ua,{value:n}))}function pm({value:e}){return h.createElement(qt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(Te,null,h.createElement(je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(Te,null,h.createElement(je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(Te,null,h.createElement(je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(Te,null,ca(e.issued))),e.status&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(Te,null,sm(e.status))))}function xm(e){return h.createElement(Ef,{spacing:"xs"},h.createElement(Lf,{order:2,size:"h6"},"Specimens"),h.createElement(Of,{type:"ordered"},e?.map(o=>h.createElement(Of.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(qt,{spacing:20},h.createElement(qt,{spacing:5},h.createElement(Te,{fw:500},"Collected:")," ",ca(o.collection?.collectedDateTime)),h.createElement(qt,{spacing:5},h.createElement(Te,{fw:500},"Received:")," ",ca(o.receivedTime)))))))}function Im(e){let{classes:o}=Rf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,h.createElement(Nf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function Nf(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(gm,{key:`obs-${dm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function gm(e){let{classes:o,cx:t}=Rf(),r=W(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Cm(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(le,{to:r},h.createElement(ko,{value:r.code}))),h.createElement("td",null,h.createElement(hm,{value:r})),h.createElement("td",null,h.createElement(ym,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(ko,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement(h.Fragment,null,r.category.map(f=>h.createElement("div",{key:`category-${im(f)}`},h.createElement(ko,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(lo,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Vt,{status:r.status}))),r.hasMember&&h.createElement(Nf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(ua,{value:r.note}))))}function hm(e){let o=e.value;return h.createElement(h.Fragment,null,um(o))}function ym(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(kt,{value:o}):null}function Cm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as vm,Paper as Sm,useComponentDefaultProps as bm}from"@mantine/core";import Pm from"react";var Dm=vm((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%"}}})),km={shadow:"xs",radius:"md",withBorder:!0};function Fo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=bm("Panel",km,e),{classes:l,cx:s}=Dm({width:r,fill:a},{name:"Panel",unstyled:n});return Pm.createElement(Sm,{className:s(l.paper,o),...f},t)}import{createStyles as Tm}from"@mantine/core";import{getPropertyDisplayName as Bm,stringify as Hf,toTypedValue as Vf}from"@medplum/core";import ie,{useEffect as Am,useState as Fm}from"react";var Mm=Tm(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 Gf(e){let{classes:o}=Mm(),t=S(),[r,a]=Fm();if(Am(()=>{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?ie.createElement("table",{className:o.root},ie.createElement("colgroup",null,ie.createElement("col",{style:{width:"30%"}}),ie.createElement("col",{style:{width:"35%"}}),ie.createElement("col",{style:{width:"35%"}})),ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Property"),ie.createElement("th",null,"Before"),ie.createElement("th",null,"After"))),ie.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]=Pe(Vf(e.original),l),[d,c]=Pe(Vf(e.revised),l);return qf(i)&&qf(d)||Hf(i)===Hf(d)?null:ie.createElement("tr",{key:l},ie.createElement("td",null,Bm(l)),ie.createElement("td",{className:o.removed},ie.createElement(pe,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),ie.createElement("td",{className:o.added},ie.createElement(pe,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function qf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import wm,{useEffect as Om,useState as Em}from"react";function pa(e){let o=S(),t=W(e.value),[r,a]=Em();return Om(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:wm.createElement(Yo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Lm,Group as Rm,Menu as Uf,Text as xa}from"@mantine/core";import{formatDateTime as Nm,getReferenceString as Hm}from"@medplum/core";import te from"react";function zf(e){return te.createElement(Ke,null,e.children)}function _e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return te.createElement(Fo,{"data-testid":"timeline-item",fill:!0,...n},te.createElement(Rm,{position:"apart",spacing:8,mx:"xs",my:"sm"},te.createElement(Ce,{value:f,link:!0,size:"md"}),te.createElement("div",{style:{flex:1}},te.createElement(xa,{size:"sm"},te.createElement(Le,{color:"dark",weight:500,value:f,link:!0})),te.createElement(xa,{size:"xs"},te.createElement(le,{color:"dimmed",to:e.resource},Nm(l)),te.createElement(xa,{component:"span",color:"dimmed",mx:8},"\xB7"),te.createElement(le,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&te.createElement(Uf,{position:"bottom-end",shadow:"md",width:200},te.createElement(Uf.Target,null,te.createElement(Lm,{radius:"xl","aria-label":`Actions for ${Hm(e.resource)}`},te.createElement(Tr,null))),a)),te.createElement(yo,null,r&&te.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&te.createElement(te.Fragment,null,e.children)))}function Xf(e,o){e.sort((t,r)=>{let a=Qf(t,o),n=Qf(r,o);return a>n?1:a<n?-1:Wf(t,o)-Wf(r,o)})}function Qf(e,o){if(!Jf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Wf(e,o){if(!Jf(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 Jf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var $m=qm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ze(e){let o=S(),t=ze(),r=o.getProfile(),a=Kf(null),n=W(e.value),[f,l]=jf(),[s,i]=jf([]),u=e.loadTimelineResources,d=Kf(s);d.current=s;let c=Gt(C=>{Xf(C,n),C.reverse(),i(C)},[n]),g=Gt(C=>{let R=[];for(let Be of C){if(Be.status!=="fulfilled")continue;let ye=Be.value;if(ye.type==="history"&&l(ye),ye.entry)for(let ro of ye.entry)R.push(ro.resource)}c(R)},[c]),y=Gt(C=>c([...d.current,C]),[c]),B=Gt(()=>{let C,R;"resourceType"in e.value?(C=e.value.resourceType,R=e.value.id):[C,R]=e.value.reference?.split("/"),u(o,C,R).then(g).catch(console.log)},[o,e.value,u,g]);Jm(()=>B(),[B]);function v(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(R=>y(R)).catch(console.log)}function T(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(R=>y(R)).then(()=>Ia({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement(Wo,{size:16}),autoClose:2e3})).catch(R=>Ia({id:"upload-notification",color:"red",title:"Upload error",message:Xm(R),icon:D.createElement(Ar,{size:16}),autoClose:2e3}))}function x(C,R){return o.updateResource({...C,priority:R})}function V(C){x(C,"stat").then(B).catch(console.log)}function m(C){x(C,"routine").then(B).catch(console.log)}function A(C){t(`/${C.resourceType}/${C.id}`)}function ae(C){t(`/${C.resourceType}/${C.id}/edit`)}function he(C){t(`/${C.resourceType}/${C.id}/delete`)}function ce(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function ee(){Wm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function qo(C){Ia({id:"upload-notification",loading:!0,title:"Uploading...",message:op(C),autoClose:!1,withCloseButton:!1})}return n?D.createElement(zf,null,e.createCommunication&&D.createElement(Fo,null,D.createElement(J,{testid:"timeline-form",onSubmit:C=>{v(C.text);let R=a.current;R&&(R.value="",R.focus())}},D.createElement(Gm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(Ce,{value:r}),D.createElement(Qm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement($f,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(Er,{size:16})),D.createElement(Po,{onUpload:T,onUploadStart:ee,onUploadProgress:qo},C=>D.createElement($f,{...C,radius:"xl",color:"blue",variant:"filled"},D.createElement(Xo,{size:16})))))),s.map(C=>{if(!C)return null;let R=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return D.createElement(Km,{key:R,history:f,resource:C,onDetails:ce});switch(C.resourceType){case"AuditEvent":return D.createElement(Ym,{key:R,resource:C,onDetails:A});case"Communication":return D.createElement(_m,{key:R,resource:C,onPin:C.priority!=="stat"?V:void 0,onUnpin:C.priority==="stat"?m:void 0,onDetails:A,onEdit:ae,onDelete:he});case"DiagnosticReport":return D.createElement(ep,{key:R,resource:C,onDetails:A,onEdit:ae,onDelete:he});case"Media":return D.createElement(Zm,{key:R,resource:C,onDetails:A,onEdit:ae,onDelete:he});default:return D.createElement(_e,{key:R,resource:C,padding:!0},D.createElement(pa,{value:C,ignoreMissingValues:!0}))}})):D.createElement(Vm,{style:{width:"100%",height:"100%"}},D.createElement(Um,null))}function Mo(e){return D.createElement(qe.Dropdown,null,D.createElement(qe.Label,null,"Resource"),e.onPin&&D.createElement(qe.Item,{icon:D.createElement(Lr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${at(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(qe.Item,{icon:D.createElement(Rr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${at(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(qe.Item,{icon:D.createElement(wr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${at(e.resource)}`},"Details"),e.onEdit&&D.createElement(qe.Item,{icon:D.createElement(Br,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${at(e.resource)}`},"Edit"),e.onDelete&&D.createElement(D.Fragment,null,D.createElement(qe.Divider,null),D.createElement(qe.Label,null,"Danger zone"),D.createElement(qe.Item,{color:"red",icon:D.createElement(Ko,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${at(e.resource)}`},"Delete")))}function Km(e){let o=jm(e.history,e.resource);return o?D.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Mo,{...e})},D.createElement(Gf,{original:o,revised:e.resource})):D.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Mo,{...e})},D.createElement("h3",null,"Created"),D.createElement(pa,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function jm(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 _m(e){let{classes:o}=$m(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return D.createElement(_e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:D.createElement(Mo,{...e})},D.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Zm(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return D.createElement(_e,{resource:e.resource,padding:!!t,popupMenuItems:D.createElement(Mo,{...e})},D.createElement(Ee,{value:e.resource.content}))}function Ym(e){return D.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Mo,{...e})},D.createElement(zm,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function ep(e){return D.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Mo,{...e})},D.createElement(ma,{value:e.resource}))}function op(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ga(e.loaded)} / ${ga(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ga(e.loaded)}`}function ga(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 HB(e){return tp.createElement(Ze,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import _f from"react";function Ut(e){let{children:o,...t}=e;return _f.createElement(Ke,null,_f.createElement(Fo,{...t},o))}import{createReference as zt}from"@medplum/core";import rp from"react";function jB(e){return rp.createElement(Ze,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:zt(o),subject:o.subject,sender:zt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:zt(o),subject:o.subject,operator:zt(t),issued:new Date().toISOString(),content:r})})}import{Button as ux,Loader as dx,Table as cx}from"@mantine/core";import{normalizeOperationOutcome as mx}from"@medplum/core";import re,{useEffect as Al,useRef as Fl,useState as _t}from"react";import{evalFhirPath as ap}from"@medplum/core";import np from"react";function Zf(e){let o;try{o=ap(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 np.createElement(pe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as $p,Button as Lo,Center as Kt,createStyles as Kp,Group as jt,Loader as jp,Menu as kl,Pagination as _p,Table as Zp,Text as ka,UnstyledButton as Yp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Fa,formatSearchQuery as ex,globalSchema as ox}from"@medplum/core";import b,{useCallback as Tl,useEffect as Bl,useRef as tx,useState as Ta}from"react";import{Box as fp,Button as lp,Modal as sp,Text as ip}from"@mantine/core";import wo from"react";function el(e){return wo.createElement(sp,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},wo.createElement(fp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&wo.createElement(Yf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&wo.createElement(Yf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),wo.createElement(ip,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Yf(e){return wo.createElement(lp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as lt,Modal as yp}from"@mantine/core";import{globalSchema as Cp,stringify as vp}from"@medplum/core";import X,{useEffect as Sp,useRef as xl,useState as bp}from"react";import{capitalize as up,DEFAULT_SEARCH_COUNT as dp,evalFhirPathTyped as cp,formatDateTime as mp,Operator as M}from"@medplum/core";import Qt from"react";var pp={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]},xp={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function nt(e,o){return{...e,filters:o,offset:0,name:void 0}}function cA(e){return nt(e,[])}function Wt(e,o){return nt(e,(e.filters??[]).filter(t=>t.code!==o))}function Oo(e,o,t,r,a){a&&(e=Wt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),nt(e,n)}function mA(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 tl(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function rl(e,o){return ha(e,o,-1)}function al(e,o){return ha(e,o,0)}function nl(e,o){return ha(e,o,1)}function ha(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Ca(e,o,r,a)}function fl(e,o){return ya(e,o,-1)}function ll(e,o){return ya(e,o,0)}function sl(e,o){return ya(e,o,1)}function ya(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Ca(e,o,r,a)}function il(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ca(e,o,t,new Date)}function Ca(e,o,t,r){return e=Wt(e,o),e=ol(e,o,M.GREATER_THAN_OR_EQUALS,t),e=ol(e,o,M.LESS_THAN_OR_EQUALS,r),e}function ol(e,o,t,r){return Oo(e,o,t,r.toISOString())}function va(e,o,t=!0){return Oo(e,o,M.MISSING,t.toString())}function Ip(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function ul(e,o){let t=e.count??dp,r=(o-1)*t;return Ip(e,r)}function Sa(e,o,t){return o===dl(e)&&t!==void 0&&t===cl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function pA(e,o){let t=!1;return dl(e)===o&&(t=!cl(e)),Sa(e,o,t)}function dl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function cl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function ml(e){return pp[e.type]}function ft(e){return xp[e]??""}function Se(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(up).join(" "))}function pl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?mp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?gp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?hp(e,o.searchParams[0]):null}function gp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Pe({type:e.resourceType,value:e},t);return r?Qt.createElement(pe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function hp(e,o){let t=cp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Qt.createElement(Qt.Fragment,null,t.map((r,a)=>Qt.createElement(pe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Il(e){let[o,t]=bp({search:JSON.parse(vp(e.search))}),r=xl(null),a=xl(null);Sp(()=>{t({search:e.search})},[e.search]);function n(x){x.key==="Enter"&&i()}function f(){i()}function l(x){x.key==="Enter"&&u()}function s(){u()}function i(){let x=o.search.fields??[],V=r.current?.value;if(V){let m=[...x,V];t({search:{...o.search,fields:m}})}}function u(){let x=o.search.fields??[],V=a.current?.value;if(V){let m=[...x];m.splice(m.indexOf(V),1),t({search:{...o.search,fields:m}})}}function d(){let x=o.search.fields??[],V=a.current?.value;if(!V)return;let m=[...x],A=m.indexOf(V);A<=0||(g(m,A,A-1),t({search:{...o.search,fields:m}}))}function c(){let x=o.search.fields??[],V=a.current?.value;if(!V)return;let m=[...x],A=m.indexOf(V);A>=m.length-1||(g(m,A,A+1),t({search:{...o.search,fields:m}}))}function g(x,V,m){let A=x[V];x[V]=x[m],x[m]=A}if(!e.visible)return null;let y=e.search.resourceType,B=Cp.types[y],v=o.search.fields??[],T=Pp(B).filter(x=>!v.includes(x)).sort((x,V)=>x.localeCompare(V));return X.createElement(yp,{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:x=>n(x),onDoubleClick:()=>f(),"data-testid":"available"},T.map(x=>X.createElement("option",{key:x,value:x},Se(x))))),X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:x=>l(x),onDoubleClick:()=>s(),"data-testid":"selected"},v.map(x=>X.createElement("option",{key:x,value:x},Se(x))))))),X.createElement("tfoot",null,X.createElement("tr",null,X.createElement("td",{align:"center"},X.createElement(lt,{compact:!0,variant:"outline",onClick:i},"Add")),X.createElement("td",{align:"center"},X.createElement(lt,{compact:!0,variant:"outline",onClick:u},"Remove")),X.createElement("td",{align:"center"},X.createElement(lt,{compact:!0,variant:"outline",onClick:d},"Up")),X.createElement("td",{align:"center"},X.createElement(lt,{compact:!0,variant:"outline",onClick:c},"Down")))))),X.createElement(lt,{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(Se(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=Se(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(Se(a)))}return o}import{Button as it,Group as wp,Modal as Op,NativeSelect as hl}from"@mantine/core";import{globalSchema as Ep,stringify as yl}from"@medplum/core";import L,{useEffect as Lp,useRef as vl,useState as Pa}from"react";import{formatDateTime as Dp,getSearchParameterDetails as kp,globalSchema as Tp,Operator as gl,SearchParameterType as Bp}from"@medplum/core";import st from"react";function Xt(e){let{resourceType:o,filter:t}=e,r=Tp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===gl.EQUALS||t.operator===gl.NOT_EQUALS))return st.createElement(Le,{value:{reference:t.value}});let a=kp(o,r);if(t.code==="_lastUpdated"||a.type===Bp.DATETIME)return st.createElement(st.Fragment,null,Dp(t.value))}return st.createElement(st.Fragment,null,t.value)}import{Checkbox as Ap,TextInput as ba}from"@mantine/core";import{getSearchParameterDetails as Fp,SearchParameterType as Eo}from"@medplum/core";import io from"react";function Jt(e){let o=Fp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Eo.REFERENCE:return io.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 io.createElement(Ap,{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 io.createElement(ba,{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 io.createElement(Fe,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Eo.NUMBER:return io.createElement(ba,{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 io.createElement(ke,{name:t,defaultValue:Mp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(ba,{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 Mp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Sl(e){let[o,t]=Pa(JSON.parse(yl(e.search))),[r,a]=Pa(-1),n=vl(o);n.current=o,Lp(()=>{t(JSON.parse(yl(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=Ep.types[l].searchParams??{},i=o.filters||[];return L.createElement(Op,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},L.createElement("div",null,L.createElement("table",null,L.createElement("colgroup",null,L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:380}}),L.createElement("col",{style:{width:120}})),L.createElement("thead",null,L.createElement("tr",null,L.createElement("th",null,"Field"),L.createElement("th",null,"Operation"),L.createElement("th",null,"Value"),L.createElement("th",null,"Actions"))),L.createElement("tbody",null,i.map((u,d)=>d===r?L.createElement(Cl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let g=[...i];g[d]=c,t(nt(n.current,g)),a(-1)},onCancel:()=>a(-1)}):L.createElement(Rp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(tl(n.current,d))})),L.createElement(Cl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),L.createElement(wp,{position:"right",mt:"xl"},L.createElement(it,{onClick:()=>e.onOk(n.current)},"OK")))}function Rp(e){let{filter:o}=e;return L.createElement("tr",null,L.createElement("td",null,Se(o.code)),L.createElement("td",null,ft(o.operator)),L.createElement("td",null,L.createElement(Xt,{resourceType:e.resourceType,filter:o})),L.createElement("td",null,L.createElement(it,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),L.createElement(it,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Cl(e){let[o,t]=Pa(e.defaultValue??{}),r=vl(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&&ml(l);return L.createElement("tr",null,L.createElement("td",null,L.createElement(hl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:Se(i)}))]})),L.createElement("td",null,s&&L.createElement(hl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:ft(i)}))]})),L.createElement("td",null,l&&o.operator&&L.createElement(Jt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),L.createElement("td",null,o.code&&o.operator&&o.value&&L.createElement(it,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&L.createElement(it,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Np,Grid as Da,Modal as Hp}from"@mantine/core";import uo,{useState as Vp}from"react";function bl(e){let[o,t]=Vp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(Hp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement(J,{onSubmit:r},uo.createElement(Da,null,uo.createElement(Da.Col,{span:10},uo.createElement(Jt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Da.Col,{span:2},uo.createElement(Np,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as ue}from"@medplum/core";import p from"react";function Pl(e){if(!e.searchParams)return null;function o(n,f){a(Sa(e.search,n.code,f))}function t(n){a(Wt(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(qp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):p.createElement(F.Dropdown,null,e.searchParams.map(n=>p.createElement(F.Item,{key:n.code},Se(n.code))))}function qp(e){switch(e.searchParam.type){case"date":return p.createElement(Gp,{...e});case"number":case"quantity":return p.createElement(Up,{...e});case"reference":return p.createElement(zp,{...e});case"string":case"token":case"uri":return p.createElement(Qp,{...e});default:return p.createElement(p.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Gp(e){let{searchParam:o}=e,t=o.code;return p.createElement(F.Dropdown,null,p.createElement(F.Item,{icon:p.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),p.createElement(F.Item,{icon:p.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),p.createElement(F.Item,{icon:p.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT_EQUALS)},"Does not equal..."),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,ue.ENDS_BEFORE)},"Before..."),p.createElement(F.Item,{icon:p.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,ue.STARTS_AFTER)},"After..."),p.createElement(F.Item,{icon:p.createElement(yr,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Between..."),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(Ne,{size:14}),onClick:()=>e.onChange(nl(e.search,t))},"Tomorrow"),p.createElement(F.Item,{icon:p.createElement(Ne,{size:14}),onClick:()=>e.onChange(al(e.search,t))},"Today"),p.createElement(F.Item,{icon:p.createElement(Ne,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Yesterday"),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(Ne,{size:14}),onClick:()=>e.onChange(sl(e.search,t))},"Next Month"),p.createElement(F.Item,{icon:p.createElement(Ne,{size:14}),onClick:()=>e.onChange(ll(e.search,t))},"This Month"),p.createElement(F.Item,{icon:p.createElement(Ne,{size:14}),onClick:()=>e.onChange(fl(e.search,t))},"Last Month"),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(Ne,{size:14}),onClick:()=>e.onChange(il(e.search,t))},"Year to date"),p.createElement($t,{...e}))}function Up(e){let{searchParam:o}=e;return p.createElement(F.Dropdown,null,p.createElement(F.Item,{icon:p.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),p.createElement(F.Item,{icon:p.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),p.createElement(F.Item,{icon:p.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT_EQUALS)},"Does not equal..."),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,ue.GREATER_THAN)},"Greater than..."),p.createElement(F.Item,{icon:p.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,ue.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),p.createElement(F.Item,{icon:p.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,ue.LESS_THAN)},"Less than..."),p.createElement(F.Item,{icon:p.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,ue.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),p.createElement($t,{...e}))}function zp(e){let{searchParam:o}=e;return p.createElement(F.Dropdown,null,p.createElement(F.Item,{icon:p.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),p.createElement(F.Item,{icon:p.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT)},"Does not equal..."),p.createElement($t,{...e}))}function Qp(e){let{searchParam:o}=e;return p.createElement(F.Dropdown,null,p.createElement(F.Item,{icon:p.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),p.createElement(F.Item,{icon:p.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),p.createElement(F.Item,{icon:p.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT)},"Does not equal..."),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(vr,{size:14}),onClick:()=>e.onPrompt(o,ue.CONTAINS)},"Contains..."),p.createElement(F.Item,{icon:p.createElement(Cr,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Does not contain..."),p.createElement($t,{...e}))}function $t(e){let{searchParam:o}=e,t=o.code;return p.createElement(p.Fragment,null,p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(gr,{size:14}),onClick:()=>e.onChange(va(e.search,t))},"Missing"),p.createElement(F.Item,{icon:p.createElement(Ir,{size:14}),onClick:()=>e.onChange(va(e.search,t,!1))},"Not missing"),p.createElement(F.Divider,null),p.createElement(F.Item,{icon:p.createElement(zr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Wp,globalSchema as Xp}from"@medplum/core";function Dl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Jp(o,r));return t}function Jp(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=Xp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Wp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ba=class extends Event{constructor(t){super("change");this.definition=t}},Aa=class extends Event{constructor(t){super("load");this.response=t}},co=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},rx=Kp(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 ax(e){let{classes:o}=rx(),t=S(),[r,a]=Ta(!1),[n,f]=Ta(),{search:l,onLoad:s}=e,[i,u]=Ta({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=tx(i);d.current=i;let c=l.total??"accurate",g=Tl(P=>{f(void 0),t.search(l.resourceType,ex({...l,total:c,fields:void 0}),P).then(Q=>{u({...d.current,searchResponse:Q}),s&&s(new Aa(Q))}).catch(Q=>{u({...d.current,searchResponse:void 0}),f(Q)})},[t,l,c,s]),y=Tl(()=>{u({...d.current,searchResponse:void 0}),g({cache:"reload"})},[g]);Bl(()=>{g()},[g]);function B(P,Q){P.stopPropagation();let fe=P.target.checked,me={...d.current.selected};fe?me[Q]=!0:delete me[Q],u({...d.current,selected:me})}function v(P){P.stopPropagation();let _=P.target.checked,fe={},me=d.current.searchResponse;_&&me?.entry&&me.entry.forEach(Go=>{Go.resource?.id&&(fe[Go.resource.id]=!0)}),u({...d.current,selected:fe})}function T(){let P=d.current;if(!P.searchResponse?.entry||P.searchResponse.entry.length===0)return!1;for(let Q of P.searchResponse.entry)if(Q.resource?.id&&!P.selected[Q.resource.id])return!1;return!0}function x(P){e.onChange&&e.onChange(new Ba(P))}function V(P,Q){if(Ct(P.target)||P.button===2)return;N(P);let _=P.button===1||P.ctrlKey||P.metaKey;!_&&e.onClick&&e.onClick(new co(Q,P)),_&&e.onAuxClick&&e.onAuxClick(new co(Q,P))}function m(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Bl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&ox.types[e.search.resourceType]))return b.createElement(Kt,{style:{width:"100%",height:"100%"}},b.createElement(jp,null));let ae=e.checkboxesEnabled,he=Dl(l),ce=l.resourceType,ee=i.searchResponse,C=ee?.entry?.map(P=>P.resource),R="subtle",Be="gray",ye=16,ro=window.innerWidth<768;return b.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&b.createElement(jt,{position:"apart",mb:"xl"},b.createElement(jt,{spacing:2},b.createElement(Lo,{compact:!0,variant:R,color:Be,leftIcon:b.createElement(Pr,{size:ye}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),b.createElement(Lo,{compact:!0,variant:R,color:Be,leftIcon:b.createElement(Mr,{size:ye}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&b.createElement(Lo,{compact:!0,variant:R,color:Be,leftIcon:b.createElement(Fr,{size:ye}),onClick:e.onNew},"New..."),!ro&&m()&&b.createElement(Lo,{compact:!0,variant:R,color:Be,leftIcon:b.createElement(Ur,{size:ye}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!ro&&e.onDelete&&b.createElement(Lo,{compact:!0,variant:R,color:Be,leftIcon:b.createElement(Ko,{size:ye}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!ro&&e.onBulk&&b.createElement(Lo,{compact:!0,variant:R,color:Be,leftIcon:b.createElement(hr,{size:ye}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),b.createElement(jt,{spacing:2},ee&&b.createElement(ka,{size:"xs",color:"dimmed"},sx(l,ee.total),"-",ix(l,ee.total)," of"," ",`${c==="estimate"?"~":""}${ee.total?.toLocaleString()}`),b.createElement($p,{title:"Refresh",onClick:y},b.createElement(Hr,{size:"1.125rem"})))),b.createElement(Zp,{className:o.table},b.createElement("thead",null,b.createElement("tr",null,ae&&b.createElement("th",null,b.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:P=>v(P)})),he.map(P=>b.createElement("th",{key:P.name},b.createElement(kl,{shadow:"md",width:240,position:"bottom-end"},b.createElement(kl.Target,null,b.createElement(Yp,{className:o.control},b.createElement(jt,{position:"apart",noWrap:!0},b.createElement(ka,{weight:500,size:"sm"},Se(P.name)),b.createElement(Kt,{className:o.icon},b.createElement(xr,{size:14,stroke:1.5}))))),b.createElement(Pl,{search:e.search,searchParams:P.searchParams,onPrompt:(Q,_)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:Q,filterDialogFilter:_})},onChange:Q=>{x(Q)}}))))),!e.hideFilters&&b.createElement("tr",null,ae&&b.createElement("th",null),he.map(P=>b.createElement("th",{key:P.name},P.searchParams&&b.createElement(nx,{resourceType:ce,searchParams:P.searchParams,filters:e.search.filters}))))),b.createElement("tbody",null,C?.map(P=>P&&b.createElement("tr",{key:P.id,className:o.tr,"data-testid":"search-control-row",onClick:Q=>V(Q,P),onAuxClick:Q=>V(Q,P)},ae&&b.createElement("td",null,b.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${P.id}`,checked:!!i.selected[P.id],onChange:Q=>B(Q,P.id)})),he.map(Q=>b.createElement("td",{key:Q.name},pl(P,Q))))))),C?.length===0&&b.createElement(Ke,null,b.createElement(Kt,{style:{height:150}},b.createElement(ka,{size:"xl",color:"dimmed"},"No results"))),ee?.total!==void 0&&ee.total>0&&b.createElement(Kt,{m:"md",p:"md"},b.createElement(_p,{value:fx(l),total:lx(l,ee.total),onChange:P=>x(ul(l,P)),getControlProps:P=>{switch(P){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(Il,{search:e.search,visible:d.current.fieldEditorVisible,onOk:P=>{x(P),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),b.createElement(Sl,{search:e.search,visible:d.current.filterEditorVisible,onOk:P=>{x(P),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),b.createElement(el,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),b.createElement(bl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?Se(i.filterDialogSearchParam.code):"",resourceType:ce,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:P=>{x(Oo(e.search,P.code,P.operator,P.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var PF=b.memo(ax);function nx(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?b.createElement("span",null,"no filters"):b.createElement(b.Fragment,null,o.map(t=>b.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},ft(t.operator),"\xA0",b.createElement(Xt,{resourceType:e.resourceType,filter:t}))))}function fx(e){return Math.floor((e.offset??0)/(e.count??Fa))+1}function lx(e,o){let t=e.count??Fa;return Math.ceil(o/t)}function sx(e,o){return Math.min(o,(e.offset??0)+1)}function ix(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Fa))}function px(e){let o=S(),[t,r]=_t(),[a,n]=_t(),{query:f,fields:l}=e,[s,i]=_t(),[u,d]=_t({}),c=Fl();c.current=s;let g=Fl({});g.current=u,Al(()=>{n(void 0),o.graphql(f).then(i).catch(m=>n(mx(m)))},[o,f]);function y(m,A){m.stopPropagation();let he=m.target.checked,ce={...g.current};he?ce[A]=!0:delete ce[A],d(ce)}function B(m){m.stopPropagation();let ae=m.target.checked,he={},ce=c.current?.data.ResourceList;ae&&ce&&ce.forEach(ee=>{ee.id&&(he[ee.id]=!0)}),d(he)}function v(){let m=c.current?.data.ResourceList;if(!m||m.length===0)return!1;for(let A of m)if(A.id&&!g.current[A.id])return!1;return!0}function T(m,A){Ct(m.target)||(N(m),m.button!==1&&e.onClick&&e.onClick(new co(A,m)),m.button===1&&e.onAuxClick&&e.onAuxClick(new co(A,m)))}if(Al(()=>{o.requestSchema(e.resourceType).then(m=>{r({...m})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return re.createElement(dx,null);let V=e.checkboxesEnabled;return re.createElement("div",{onContextMenu:m=>N(m),"data-testid":"search-control"},re.createElement(cx,null,re.createElement("thead",null,re.createElement("tr",null,V&&re.createElement("th",null,re.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:v(),onChange:m=>B(m)})),l.map(m=>re.createElement("th",{key:m.name},m.name)))),re.createElement("tbody",null,s?.data.ResourceList.map(m=>m&&re.createElement("tr",{key:m.id,"data-testid":"search-control-row",onClick:A=>T(A,m),onAuxClick:A=>T(A,m)},V&&re.createElement("td",null,re.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${m.id}`,checked:!!u[m.id],onChange:A=>y(A,m.id)})),l.map(A=>re.createElement("td",{key:A.name},re.createElement(Zf,{propertyType:A.propertyType,path:A.fhirPath,resource:m}))))))),s?.data.ResourceList.length===0&&re.createElement("div",{"data-testid":"empty-search"},"No results"),a&&re.createElement("div",{"data-testid":"search-error"},re.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&re.createElement(ux,{onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}var LF=re.memo(px);import mo from"react";function Ye(e){return mo.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},mo.createElement("title",null,"Medplum Logo"),mo.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),mo.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"}),mo.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"}),mo.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),mo.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as xx}from"@mantine/core";import Ma from"react";function Ro(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Ma.createElement(xx,{icon:Ma.createElement(no,{size:16}),color:"red"},o.map(t=>Ma.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as Zt}from"@medplum/core";import Ix,{useCallback as gx}from"react";function $F(e){let o=gx((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 Ix.createElement(Ze,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Zt(t),sender:Zt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Zt(t),operator:Zt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as wl,Button as hx,createStyles as yx,NativeSelect as Cx,Stack as vx,TextInput as Oa}from"@mantine/core";import{getReferenceString as Sx}from"@medplum/core";import q,{useEffect as Ml,useRef as Ol,useState as ut}from"react";var El=yx(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 dM(e){let o=S(),t=W(e.value),[r,a]=ut(void 0),[n,f]=ut(),[l,s]=ut(),[i,u]=ut();function d(){s(void 0)}function c(){f(void 0)}let g=Ol();if(g.current=i,Ml(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Ml(()=>(u(Bx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(B,v){u({...g.current,[B]:v})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Oa,{label:"Plan Title",defaultValue:i.title,onChange:B=>y("title",B.currentTarget.value)}),q.createElement(Ll,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:B=>y("action",B)}),q.createElement(hx,{type:"submit"},"Save")))}function Ll(e){let{classes:o}=El(),t=Ol();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(bx,{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(wl,{href:"#",onClick:f=>{N(f),a({id:Nl()})}},"Add action")))}function bx(e){let{classes:o,cx:t}=El(),{action:r}=e,a=Tx(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){N(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(Dx,{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(wl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ea={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]=Rl(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(lo,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(pe,{property:Ea,propertyType:a,value:r})))}function Dx(e){let{action:o}=e,[t,r]=ut(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(vx,{spacing:"xl"},q.createElement(Oa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Oa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(Cx,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(Ll,{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(Yt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(Yt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(Yt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(Yt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(De,{title:"Timing",description:"When the action should take place."},q.createElement(kx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Yt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Rt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Sx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function kx(e){let o=e.action,t="timing",[r,a]=Rl(o);return q.createElement(Ve,{property:Ea,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(ot(o,t,f??t,Ea,n))}})}function Tx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Rl(e){return Pe({type:"PlanDefinitionAction",value:e},"timing")}var wa=1;function Nl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(wa=Math.max(wa,o+1))}return e}return"id-"+wa++}function Bx(e){return{...e,action:Hl(e.action)}}function Hl(e){if(e)return e.map(o=>({...o,id:Nl(o.id),action:Hl(o.action)}))}import{Anchor as Re,Box as Wx,Button as Xx,createStyles as Jx,NativeSelect as $x,Space as Kx,Textarea as jx,TextInput as tr,Title as _x}from"@mantine/core";import{globalSchema as Zx,isResource as Yx}from"@medplum/core";import k,{useEffect as Jl,useRef as eI,useState as or}from"react";import{evalFhirPathTyped as Ax,getTypedPropertyValue as Vl}from"@medplum/core";var La=(T=>(T.group="group",T.display="display",T.question="question",T.boolean="boolean",T.decimal="decimal",T.integer="integer",T.date="date",T.dateTime="dateTime",T.time="time",T.string="string",T.text="text",T.url="url",T.choice="choice",T.openChoice="open-choice",T.attachment="attachment",T.reference="reference",T.quantity="quantity",T))(La||{});function ql(e){return e.type==="choice"||e.type==="open-choice"}function Gl(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Ul(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=Mx(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Ul(e,o){if(!Array.isArray(e))return;let t=e.find(r=>r.linkId===o);if(t)return t.answer;for(let r of e)if(r.item){let a=Ul(r.item,o);if(a)return a}}function Fx(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Ax(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function Mx(e,o,t){let r=o||[],a=Vl({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let l of r){let s=Vl({type:"QuestionnaireResponseItemAnswer",value:l},"value[x]"),{operator:i}=e;if(Fx(s,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}import{Checkbox as wx,MultiSelect as Ox,NativeSelect as Ex,Radio as zl,TextInput as dt,Textarea as Lx}from"@mantine/core";import{capitalize as Na,formatCoding as Rx,getTypedPropertyValue as eo,globalSchema as Nx,stringify as Ql}from"@medplum/core";import Z from"react";function er(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.currentResponseItems?.filter(c=>c.linkId===o.linkId)??[],d;Array.isArray(l)?d=l:d=Gx(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 Z.createElement(Ft,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Z.createElement(wx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:ve(e.allResponses,o,t,e.groupSequence)??f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Z.createElement(dt,{type:"number",step:"any",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Z.createElement(dt,{type:"number",step:1,id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Z.createElement(dt,{type:"date",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Z.createElement(Fe,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return Z.createElement(dt,{type:"time",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Z.createElement(dt,{id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Z.createElement(Lx,{id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Z.createElement(bt,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return Z.createElement(Bo,{name:n,targetTypes:Ux(o),defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return Z.createElement(ke,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return zx(o)?Z.createElement(Hx,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Z.createElement(Vx,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function Hx(e){let{name:o,item:t,initial:r}=e,a=eo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=eo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Ra(l))}if(t.repeats){let{propertyName:f,data:l}=Qx(e.item),s=ve(e.allResponses,t,e.index,e.groupSequence,!0)?ve(e.allResponses,t,e.index,e.groupSequence,!0):[Ra(a)];return Z.createElement(Ox,{data:l,placeholder:"Select items",searchable:!0,defaultValue:s,onChange:i=>{let u=i.map(d=>{let c=t.answerOption?.find(y=>y[f]===d),g=eo({type:"QuestionnaireItemAnswerOption",value:c},"value");return{[f]:g.value}});e.onChangeAnswer(u)}})}return Z.createElement(Ex,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=eo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Na(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:ve(e.allResponses,t,e.index,e.groupSequence)??Ra(a),data:n})}function Vx(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Z.createElement(Je,{elementDefinition:{binding:{valueSet:t.answerValueSet}},onChange:a}):Z.createElement(qx,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function qx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Nx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=eo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],g=`${o}-option-${d}`,y=eo({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&Ql(y)===Ql(f)&&(s=g),l.push([g,y])}let i=ve(e.allResponses,t,e.index,e.groupSequence),u=l.find(d=>d[1].value===i)?.[0];return Z.createElement(zl.Group,{name:o,value:u??s,onChange:d=>{let c=l.find(g=>g[0]===d);if(c){let g=c[1],y="value"+Na(g.type);a({[y]:g.value})}}},l.map(([d,c])=>Z.createElement(zl,{key:d,id:d,value:d,label:Z.createElement(pe,{property:n,propertyType:c.type,value:c.value})})))}function Gx(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 Ux(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function zx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Qx(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=eo({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Na(t.type),a=(e.answerOption??[]).map(n=>({value:n[r],label:r==="valueCoding"?n.valueCoding?.display:n[r]}));return{propertyName:r,data:a}}function Ra(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Xl(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Xl(r.item,o)));return t}function Wl(e){let o=eo({type:"QuestionnaireItemAnswerOption",value:e},"value");return Rx(o?.value)||o?.value}function ve(e,o,t=0,r=0,a=!1){let f=Xl(e,o.linkId??"")[r]?.answer;return a?f?.map(l=>Wl(l)):Wl(f?.[t]??{})}var oI=Jx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function UM(e){let o=S(),t=W(e.questionnaire),[r,a]=or(),[n,f]=or(),[l,s]=or(),[i,u]=or();function d(){u(void 0)}function c(){s(void 0)}return Jl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Jl(()=>(f(nI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:k.createElement("div",null,k.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},k.createElement($l,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),k.createElement(Xx,{type:"submit"},"Save")))}function $l(e){let{classes:o,cx:t}=oI(),r=e.item,a=e.item,n=Yx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=eI();u.current=e.item;function d(m){N(m),e.setSelectedKey(e.item.id)}function c(m){N(m),e.setHoverKey(e.item.id)}function g(m){let A=u.current;e.onChange({...A,item:A.item?.map(ae=>ae.id===m.id?m:ae)})}function y(m){e.onChange({...e.item,item:[...e.item.item??[],m]})}function B(m){e.onChange({...e.item,item:e.item.item?.filter(A=>A!==m)})}function v(m,A){e.onChange({...u.current,[m]:A})}function T(m){e.onChange({...e.item,...m})}function x(m){e.onChange({...e.item,item:e.item.item?.map(A=>A===m?{...A,repeats:!A.repeats}:A)})}let V=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return k.createElement("div",{"data-testid":a.linkId,className:V,onClick:d,onMouseOver:c},k.createElement("div",{className:o.questionBody},s?k.createElement(k.Fragment,null,n&&k.createElement(tr,{size:"xl",defaultValue:r.title,onChange:m=>v("title",m.currentTarget.value)}),!n&&k.createElement(jx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:m=>v("text",m.currentTarget.value)}),a.type==="reference"&&k.createElement(aI,{item:a,onChange:m=>v("extension",m)}),ql(a)&&k.createElement(tI,{item:a,onChange:m=>T(m)})):k.createElement(k.Fragment,null,r.title&&k.createElement(_x,null,r.title),a.text&&k.createElement("div",null,a.text),!f&&k.createElement(er,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map(m=>k.createElement("div",{key:m.id},k.createElement($l,{item:m,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:g,onRemove:()=>B(m),onRepeatable:x}))),!f&&k.createElement("div",{className:o.topActions},s?k.createElement(k.Fragment,null,k.createElement(tr,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:m=>v("linkId",m.currentTarget.value)}),!f&&k.createElement($x,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:m=>v("type",m.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):k.createElement("div",null,l)),k.createElement("div",{className:o.bottomActions},f&&k.createElement(k.Fragment,null,k.createElement(Re,{href:"#",onClick:m=>{m.preventDefault(),y({id:oo(),linkId:qa("q"),type:"string",text:"Question"})}},"Add item"),k.createElement(Re,{href:"#",onClick:m=>{m.preventDefault(),y({id:oo(),linkId:qa("g"),type:"group",text:"Group"})}},"Add group")),n&&k.createElement(Re,{href:"#",onClick:m=>{m.preventDefault(),y(lI())}},"Add Page"),s&&!n&&k.createElement(k.Fragment,null,k.createElement(Re,{href:"#",onClick:m=>{m.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),k.createElement(Re,{href:"#",onClick:m=>{m.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function tI(e){let o=Zx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.item.answerOption??[];return k.createElement("div",null,e.item.answerValueSet!==void 0?k.createElement(tr,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):k.createElement(rI,{options:t,property:o,item:e.item,onChange:e.onChange}),k.createElement(Wx,{display:"flex"},k.createElement(Re,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:oo()}]})}},"Add choice"),k.createElement(Kx,{w:"lg"}),k.createElement(Re,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function rI(e){return k.createElement("div",null,e.options.map(o=>{let[t,r]=Pe({type:"QuestionnaireItemAnswerOption",value:o},"value");return k.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},k.createElement("div",null,k.createElement(Ve,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],l=f.findIndex(s=>s.id===o.id);f[l]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),k.createElement("div",null,k.createElement(Re,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function aI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return k.createElement(k.Fragment,null,t.map(r=>k.createElement("div",{key:r.id},k.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},k.createElement("div",null,k.createElement(tr,{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)}}))),k.createElement("div",null,k.createElement(Re,{href:"#",onClick:a=>{N(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),k.createElement(Re,{href:"#",onClick:r=>{N(r),e.onChange([...o,{id:oo(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ha=1,Va=1;function qa(e){return e+Ha++}function oo(){return"id-"+Va++}function nI(e){return{...e,id:e.id||oo(),item:Kl(e.item)}}function Kl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Va=Math.max(Va,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ha=Math.max(Ha,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||oo(),item:Kl(o.item),answerOption:fI(o.answerOption)}))}function fI(e){if(e)return e.map(o=>({...o,id:o.id||oo()}))}function lI(){return{id:oo(),linkId:qa("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 es,Button as No,Group as sI,Stack as iI,Stepper as jl,Title as uI}from"@mantine/core";import{createReference as dI,getExtension as cI,getReferenceString as os}from"@medplum/core";import w,{useEffect as _l,useState as Ho}from"react";function ts(e){let o=S(),t=o.getProfile(),[r,a]=Ho(),n=W(e.questionnaire),[f,l]=Ho(),[s,i]=Ho(0),u=hI(n?.item??[]),d=()=>i(y=>y>=u?y:y+1),c=()=>i(y=>y<=0?y:y-1);_l(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),_l(()=>{l(n?pI(n):void 0)},[n]);function g(y){l({resourceType:"QuestionnaireResponse",item:y})}return!r||!n?null:w.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:os(n),subject:e.subject,source:dI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&w.createElement(uI,null,n.title),n.item&&w.createElement(rs,{items:n.item??[],allResponses:f?.item??[],onChange:g,renderPages:u>1,activePage:s}),w.createElement(sI,{position:"right",mt:"xl"},w.createElement(mI,{activePage:s,numberOfPages:u,nextStep:d,prevStep:c,submitButtonText:e.submitButtonText})))}function rs(e){let[o,t]=Ho(Ga(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?w.createElement(jl.Step,{label:n.text,key:n.linkId},w.createElement(Zl,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):w.createElement(Zl,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?w.createElement(jl,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):w.createElement(iI,null,a)}function Zl(e){return Gl(e.item,e.allResponses)?e.item.type==="display"?w.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?w.createElement(Yl,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):w.createElement(De,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},w.createElement(Yl,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function Yl(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:vI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?w.createElement(yI,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):w.createElement(CI,{item:e.item,key:e.item.linkId},({index:r})=>w.createElement(er,{...e,index:r}))}function mI(e){return e.activePage===0&&e.numberOfPages<=0?w.createElement(No,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.prevStep},"Back"),w.createElement(No,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.nextStep},"Next")):w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.prevStep},"Back"),w.createElement(No,{onClick:e.nextStep},"Next"))}function pI(e){return{resourceType:"QuestionnaireResponse",questionnaire:os(e),item:Ga(e.item)}}function Ga(e){return e?.map(xI)??[]}function xI(e){return{id:as(),linkId:e.linkId,text:e.text,item:Ga(e.item),answer:e.initial?.map(gI)??[]}}var II=1;function as(){return"id-"+II++}function gI(e){return{...e}}function hI(e){return e.filter(t=>cI(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function yI(e){let[o,t]=Ho(SI(e.item,e.allResponses)),r=e.item;return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement("div",{key:n},w.createElement("h3",null,e.text),w.createElement(rs,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&w.createElement(es,{onClick:()=>t(a=>a+1)},"Add Group"))}function CI(e){let[o,t]=Ho(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement(w.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&w.createElement(es,{onClick:()=>t(a=>a+1)},"Add Item"))}function vI(e,o){return e.length===0||e.length<o+1?as():e[o].id}function SI(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}import{ActionIcon as rr,Button as bI,createStyles as PI,Divider as DI,Group as ct,NativeSelect as Ua,Stack as ar,Text as kI,TextInput as TI}from"@mantine/core";import{formatRange as ns,getCodeBySystem as BI}from"@medplum/core";import z,{useEffect as AI,useState as za}from"react";var FI=PI(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"}})),MI=["gender","age","gestationalAge","context","appliesTo","category"],wI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function uw(e){e=Object.assign(wI,e);let o=e.definition,[t,r]=za([]),[a,n]=za(1),[f,l]=za(1);return AI(()=>{let y=LI(o,l);r(RI(y.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(ar,null,t.map(y=>z.createElement(OI,{unit:HI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:g,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(rr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(B=>B+1)}},z.createElement(xo,null)),z.createElement(ct,{position:"right"},z.createElement(bI,{type:"submit"},"Save")));function s(){let y=t.flatMap(B=>B.intervals).filter(B=>!VI(B));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(B=>[...B,y])}function u(y){r(B=>B.filter(v=>v.id!==y.id))}function d(y,B){r(v=>{v=[...v];let T=v.find(V=>V.id===y),x=T?.intervals.findIndex(V=>V.id===B.id);return x!==void 0&&T?.intervals[x]&&(T.intervals[x]=B),v})}function c(y,B){B.id===void 0&&(B.id=`id-${f}`,l(v=>v+1)),r(v=>{v=[...v];let T=v.findIndex(x=>x.id===y);if(T!==-1){let x={...v[T]};B={...B,...x.filters},x.intervals=[...x.intervals,B],v[T]=x}return v})}function g(y,B){r(v=>{v=[...v];let T=v.find(x=>x.id===y);return T&&(T.intervals=T.intervals.filter(x=>x.id!==B.id)),v})}}function OI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=FI();return z.createElement(Ke,{"data-testid":o.id,className:r.section},z.createElement(ar,{spacing:"lg"},z.createElement(ct,{position:"right"},z.createElement(rr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{N(a),e.onRemoveGroup(o)}},z.createElement(Qe,null))),z.createElement(EI,{intervalGroup:o,onChange:e.onChange}),z.createElement(DI,null),o.intervals.map(a=>z.createElement(ar,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ct,null,z.createElement(TI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{N(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(rr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{N(n),e.onRemove(o.id,a)}},z.createElement(Qe,null))),z.createElement(rt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(rr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(xo,null))))}function EI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(ar,{style:{maxWidth:"50%"}},z.createElement(ct,null,z.createElement(Ua,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(ct,{spacing:"xs"},z.createElement(kI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(rt,{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(Ua,{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(Ua,{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 LI(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 RI(e,o){let t=1,r={};for(let a of e){let n=NI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(MI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function NI(e){return[`gender=${e.gender}`,`age=${ns(e.age)}`,`gestationalAge=${ns(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function HI(e){return e&&(BI(e,"http://unitsofmeasure.org")||e.text)}function VI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as fs,Grid as nr,Text as qI}from"@mantine/core";import{formatDateTime as GI,getReferenceString as UI}from"@medplum/core";import ge,{useEffect as zI,useState as ls}from"react";function Cw(e){let o=S(),t=W(e.value),[r,a]=ls(!1),[n,f]=ls();if(zI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ge.createElement(nr,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,g=d?.output?.[0]?.valueReference;return ge.createElement(ge.Fragment,{key:`action-${u}`},ge.createElement(nr.Col,{span:1,p:"md"},d?.status==="completed"?ge.createElement(Sr,null):ge.createElement(qr,{color:"gray"})),ge.createElement(nr.Col,{span:9,p:"xs"},ge.createElement(qI,{weight:500},i.title),i.description&&ge.createElement("div",null,i.description),ge.createElement("div",null,"Last edited by\xA0",ge.createElement(Le,{value:d?.meta?.author}),"\xA0on\xA0",GI(d?.meta?.lastUpdated)),ge.createElement("div",null,"Status: ",ge.createElement(Vt,{status:d?.status||"unknown"}))),ge.createElement(nr.Col,{span:2,p:"md"},c&&!g&&ge.createElement(fs,{onClick:()=>e.onStart(d,c)},"Start"),c&&g&&ge.createElement(fs,{onClick:()=>e.onEdit(d,c,g)},"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===UI(u.resource))return u.resource}}import{createStyles as jI}from"@mantine/core";import be,{useEffect as _I,useState as ZI}from"react";import{stringify as JI}from"@medplum/core";function fr(e,o){let t=QI(e,o);return WI(t,e,o)}function QI(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,g=l[d],y=l[c],B,v=0;i===-s||i!==s&&y.i<g.i?(v=g.i,B=g):(v=y.i+1,B=y),l[c]=void 0;let T=v-i,x={i:v,j:T,prev:XI(B),snake:!1};for(;v<t&&T<r&&e[v]===o[T];)v++,T++;if(v>x.i&&(x={i:v,j:T,prev:x,snake:!0}),l[u]=x,v>=t&&T>=r)return l[u]}l[f+s-1]=void 0}}function WI(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 XI(e){return e&&!e.snake&&e.prev?e.prev:e}function ss(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:JI(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 $I(t,o),KI(t),t}function $I(e,o){for(let t=1;t<o.length;t++){let r=fr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,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 KI(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 YI=jI(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 ww(e){let{classes:o}=YI(),t=S(),[r,a]=ZI(e.history);if(_I(()=>{!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 be.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=ss(r);return be.createElement("div",{className:o.container},be.createElement("table",{className:o.root},be.createElement("tbody",null,f.map((l,s)=>be.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&be.createElement(be.Fragment,null,be.createElement("td",{className:o.author,rowSpan:l.span},be.createElement(je,{value:l.meta.author,link:!0})),be.createElement("td",{className:o.dateTime,rowSpan:l.span},be.createElement(le,{to:eg(n,l.meta.versionId)},og(l.meta.lastUpdated)))),be.createElement("td",{className:o.lineNumber},s+1),be.createElement("td",{className:o.line},be.createElement("pre",{className:o.pre},l.value)))))))}function eg(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function og(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Vo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Vo(r,"month");let a=Math.floor(o/86400);if(a>0)return Vo(a,"day");let n=Math.floor(o/3600);if(n>0)return Vo(n,"hour");let f=Math.floor(o/60);return f>0?Vo(f,"minute"):Vo(o,"second")}function Vo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as tg}from"@mantine/core";import{stringify as is}from"@medplum/core";import to from"react";var rg=tg(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Vw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=is(o,!0).match(/[^\r\n]+/g),a=is(t,!0).match(/[^\r\n]+/g),n=fr(r,a);return to.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>to.createElement(ag,{key:"delta"+l,delta:f})))}function ag(e){let{classes:o}=rg();return to.createElement(to.Fragment,null,"...",to.createElement("br",null),e.delta.original.lines.length>0&&to.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
+ `)),e.delta.revised.lines.length>0&&to.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
+ `)),"...",to.createElement("br",null))}import{Table as ng}from"@mantine/core";import{formatDateTime as fg,normalizeErrorString as lg}from"@medplum/core";import de,{useEffect as sg,useState as ig}from"react";function Jw(e){let o=S(),[t,r]=ig(e.history);return sg(()=>{!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?de.createElement(ng,{withBorder:!0,withColumnBorders:!0},de.createElement("thead",null,de.createElement("tr",null,de.createElement("th",null,"Author"),de.createElement("th",null,"Date"),de.createElement("th",null,"Version"))),de.createElement("tbody",null,t.entry?.map((a,n)=>de.createElement(ug,{key:"entry-"+n,entry:a})))):de.createElement("div",null,"Loading...")}function ug(e){let{response:o,resource:t}=e.entry;return t?de.createElement("tr",null,de.createElement("td",null,de.createElement(je,{value:t.meta?.author,link:!0})),de.createElement("td",null,fg(t.meta?.lastUpdated)),de.createElement("td",null,de.createElement(le,{to:dg(t)},t.meta?.versionId))):de.createElement("tr",null,de.createElement("td",{colSpan:3},lg(o?.outcome)))}function dg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as cg,createStyles as mg,Stack as pg,Text as xg}from"@mantine/core";import{getReferenceString as Ig}from"@medplum/core";import Y,{useEffect as gg,useRef as hg,useState as mt}from"react";var yg=mg(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function aO(e){let{classes:o}=yg(),t=S(),r=W(e.schedule),a=W(e.questionnaire),[n,f]=mt(),l=hg();l.current=n;let[s,i]=mt(ia()),[u,d]=mt(),[c,g]=mt(),[y,B]=mt();if(gg(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Ig(r)],["start","gt"+Cg(s)],["start","lt"+vg(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let v=r.actor?.[0];return Y.createElement("div",{className:o.container,"data-testid":"scheduler"},Y.createElement("div",{className:o.info},v&&Y.createElement(Ce,{value:v,size:"xl"}),v&&Y.createElement(xg,{size:"xl",weight:500},Y.createElement(Le,{value:v})),Y.createElement("p",null,"1 hour"),u&&Y.createElement("p",null,u.toLocaleDateString()),c&&Y.createElement("p",null,us(new Date(c.start)))),Y.createElement("div",{className:o.selection},!u&&Y.createElement("div",null,Y.createElement("h3",null,"Select date"),Y.createElement(Ff,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&Y.createElement("div",null,Y.createElement("h3",null,"Select time"),Y.createElement(pg,null,n.map(T=>{let x=new Date(T.start);return x.getTime()>u.getTime()&&x.getTime()<u.getTime()+24*3600*1e3&&Y.createElement("div",{key:T.id},Y.createElement(cg,{variant:"outline",style:{width:150},onClick:()=>g(T)},us(x)))}))),u&&c&&!y&&Y.createElement(ts,{questionnaire:a,submitButtonText:"Next",onSubmit:B}),u&&c&&y&&Y.createElement("div",null,Y.createElement("h3",null,"You're all set!"),Y.createElement("p",null,"Check your email for a calendar invite."))))}function Cg(e){return ds(e.getTime())}function vg(e){return ds(e.getTime()+31*24*60*60*1e3)}function ds(e){return new Date(Math.max(Date.now(),e)).toISOString()}function us(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as lr}from"@medplum/core";import Sg from"react";function dO(e){return Sg.createElement(Ze,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[lr(o)],subject:o.subject,sender:lr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[lr(o)],subject:o.subject,operator:lr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as zg}from"@medplum/core";import mr,{useEffect as Qg,useState as ys}from"react";import{Anchor as cs,Button as bg,Center as Pg,Group as Dg,Stack as kg,Text as Tg,TextInput as Bg,Title as Ag}from"@mantine/core";import{normalizeOperationOutcome as Fg}from"@medplum/core";import Me,{useState as Mg}from"react";function sr(e){let o=S(),[t,r]=Mg();return Me.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))}}},Me.createElement(Pg,{sx:{flexDirection:"column"}},Me.createElement(Ye,{size:32}),Me.createElement(Ag,null,"Create project")),Me.createElement(kg,{spacing:"xl"},Me.createElement(Bg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:xe(t,"firstName")}),Me.createElement(Tg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Me.createElement(cs,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Me.createElement(cs,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Me.createElement(Dg,{position:"right",mt:"xl",noWrap:!0},Me.createElement(bg,{type:"submit"},"Create project")))}import{Anchor as cr,Button as Lg,Center as Rg,Checkbox as Ng,Divider as Hg,Group as xs,PasswordInput as Vg,Stack as qg,Text as Is,TextInput as Wa}from"@mantine/core";import{normalizeOperationOutcome as gs}from"@medplum/core";import j,{useEffect as Gg,useState as Ug}from"react";import wg,{useEffect as Og,useRef as Eg,useState as Qa}from"react";function ir(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function ur(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=Eg(null),[n,f]=Qa(typeof google<"u"),[l,s]=Qa(!1),[i,u]=Qa(!1);return Og(()=>{if(typeof google>"u"){ir("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?wg.createElement("div",{ref:a}):null}function dr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function ms(e){typeof grecaptcha>"u"&&ir("https://www.google.com/recaptcha/api.js?render="+e)}function ps(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function hs(e){let o=dr(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=Ug(),f=Mt(a,void 0);return Gg(()=>{t&&ms(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await ps(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(gs(s))}}},j.createElement(Rg,{sx:{flexDirection:"column"}},e.children),j.createElement(Ro,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(xs,{position:"center",p:"xl",style:{height:70}},j.createElement(ur,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(gs(s))}}})),j.createElement(Hg,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(qg,{spacing:"xl"},j.createElement(Wa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:xe(a,"firstName")}),j.createElement(Wa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:xe(a,"lastName")}),j.createElement(Wa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:xe(a,"email")}),j.createElement(Vg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:xe(a,"password")}),j.createElement(Is,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(cr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(cr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(Is,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(cr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(cr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(xs,{position:"apart",mt:"xl",noWrap:!0},j.createElement(Ng,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(Lg,{type:"submit"},"Create account")))}function $O(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=S(),[s,i]=ys(void 0),[u,d]=ys();Qg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(g=>l.processCode(g.code)).then(()=>f()).catch(g=>d(zg(g)))},[l,o,t,s,f]);function c(g){g.code?l.processCode(g.code).then(()=>f()).catch(console.log):g.login&&i(g.login)}return mr.createElement(Ut,{width:450},u&&mr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&mr.createElement(hs,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&mr.createElement(sr,{login:s,handleAuthResponse:c}))}import{showNotification as Ms}from"@mantine/notifications";import{normalizeErrorString as ws}from"@medplum/core";import po,{useCallback as Ja,useEffect as Ch,useState as $a}from"react";import{Anchor as Cs,Button as vs,Center as Ss,Checkbox as Wg,Divider as Xg,Group as Xa,PasswordInput as Jg,Stack as $g,TextInput as Kg}from"@mantine/core";import{normalizeOperationOutcome as jg}from"@medplum/core";import K,{useCallback as pr,useState as bs}from"react";function Ps(e){let[o,t]=bs();return o?K.createElement(Zg,{email:o,...e}):K.createElement(_g,{setEmail:t,...e})}function _g(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=S(),s=!e.disableGoogleAuth&&dr(e.googleClientId),i=pr(async c=>{if(!c.authorizeUrl)return!1;let g=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",g),window.location.assign(y.toString()),!0},[l,f]),u=pr(async c=>{let g=await l.post("auth/method",{email:c.email});await i(g)||o(c.email)},[l,i,o]),d=pr(async c=>{let g=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(g)||r(g)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(Ss,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Xa,{position:"center",p:"xl",style:{height:70}},K.createElement(ur,{googleClientId:s,handleGoogleCredential:d})),!n&&K.createElement(Xg,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Kg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Xa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(Cs,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(vs,{type:"submit"},"Next")))}function Zg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,l]=bs(),s=Mt(f,void 0),i=pr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(jg(d)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(Ss,{sx:{flexDirection:"column"}},r),K.createElement(Ro,{issues:s}),K.createElement($g,{spacing:"xl"},K.createElement(Jg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:xe(f,"password")})),K.createElement(Xa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(Cs,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Wg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(vs,{type:"submit"},"Sign in")))}import{Avatar as Yg,Center as eh,Group as oh,Stack as th,Text as Ds,Title as rh,UnstyledButton as ah}from"@mantine/core";import{normalizeOperationOutcome as nh}from"@medplum/core";import we,{useState as fh}from"react";function ks(e){let o=S(),[t,r]=fh();return we.createElement(th,null,we.createElement(eh,{sx:{flexDirection:"column"}},we.createElement(Ye,{size:32}),we.createElement(rh,{order:3},"Choose profile")),we.createElement(Ro,{outcome:t}),e.memberships.map(a=>we.createElement(ah,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(nh(n)))}},we.createElement(oh,null,we.createElement(Yg,{radius:"xl"}),we.createElement("div",{style:{flex:1}},we.createElement(Ds,{size:"sm",weight:500},a.profile?.display),we.createElement(Ds,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as lh,Center as sh,Checkbox as ih,Group as uh,Stack as Ts,Title as dh}from"@mantine/core";import Ge from"react";function Bs(e){let o=S();return Ge.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)}},Ge.createElement(Ts,null,Ge.createElement(sh,{sx:{flexDirection:"column"}},Ge.createElement(Ye,{size:32}),Ge.createElement(dh,null,"Choose scope")),Ge.createElement(Ts,null,(e.scope??"openid").split(" ").map(t=>Ge.createElement(ih,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ge.createElement(uh,{position:"right",mt:"xl"},Ge.createElement(lh,{type:"submit"},"Set scope"))))}import{Alert as ch,Button as mh,Center as ph,Group as xh,Stack as As,TextInput as Ih,Title as gh}from"@mantine/core";import{normalizeErrorString as hh}from"@medplum/core";import Oe,{useState as yh}from"react";function Fs(e){let o=S(),[t,r]=yh(void 0);return Oe.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(hh(n)))}},Oe.createElement(As,null,Oe.createElement(ph,{sx:{flexDirection:"column"}},Oe.createElement(Ye,{size:32}),Oe.createElement(gh,null,"Enter MFA code")),t&&Oe.createElement(ch,{icon:Oe.createElement(no,{size:16}),title:"Error",color:"red"},t),Oe.createElement(As,null,Oe.createElement(Ih,{name:"token",label:"MFA code",required:!0})),Oe.createElement(xh,{position:"right",mt:"xl"},Oe.createElement(mh,{type:"submit"},"Submit code"))))}function Q0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=S(),[i,u]=$a(void 0),[d,c]=$a(!1),[g,y]=$a(void 0),B=Ja(x=>{f?f(x):s.processCode(x).then(()=>{r&&r()}).catch(V=>Ms({color:"red",message:ws(V)}))},[s,f,r]),v=Ja(x=>{c(!!x.mfaRequired),x.login&&u(x.login),x.memberships&&y(x.memberships),x.code&&(t?y(void 0):B(x.code))},[t,B]),T=Ja(x=>{B(x.code)},[B]);return Ch(()=>{o&&!i&&s.get("auth/login/"+o).then(v).catch(x=>Ms({color:"red",message:ws(x)}))},[s,o,i,v]),po.createElement(Ut,{width:450},(()=>i?d?po.createElement(Fs,{login:i,handleAuthResponse:v}):g?po.createElement(ks,{login:i,memberships:g,handleAuthResponse:v}):e.projectId==="new"?po.createElement(sr,{login:i,handleAuthResponse:v}):e.chooseScopes?po.createElement(Bs,{login:i,scope:e.scope,handleAuthResponse:T}):po.createElement("div",null,"Success"):po.createElement(Ps,{onForgotPassword:a,onRegister:n,handleAuthResponse:v,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{ja as AddressDisplay,en as AddressInput,rn as AnnotationInput,YS as AppShell,bo as AsyncAutocomplete,On as AttachmentArrayDisplay,Ln as AttachmentArrayInput,Po as AttachmentButton,Ee as AttachmentDisplay,bt as AttachmentInput,Yo as BackboneElementDisplay,tt as BackboneElementInput,Ff as CalendarInput,Ft as CheckboxFormSection,St as CodeInput,ko as CodeableConceptDisplay,of as CodeableConceptInput,Gn as CodingDisplay,tf as CodingInput,zn as ContactDetailDisplay,af as ContactDetailInput,Dt as ContactPointDisplay,Ot as ContactPointInput,Ke as Container,Fe as DateTimeInput,HB as DefaultResourceTimeline,Nn as DescriptionList,Hn as DescriptionListEntry,ma as DiagnosticReportDisplay,Ut as Document,wc as ElementDefinitionInputSelector,Tf as ElementDefinitionTypeInput,jB as EncounterTimeline,yo as ErrorBoundary,px as FhirPathTable,J as Form,De as FormSection,Tn as Header,yt as HumanNameDisplay,lf as HumanNameInput,Qn as IdentifierDisplay,uf as IdentifierInput,Wr as Loading,Ye as Logo,le as MedplumLink,Ah as MedplumProvider,LF as MemoizedFhirPathTable,PF as MemoizedSearchControl,Xn as MoneyDisplay,df as MoneyInput,wn as Navbar,Im as ObservationTable,Ro as OperationOutcomeAlert,Fo as Panel,$F as PatientTimeline,dM as PlanDefinitionBuilder,Zo as QuantityDisplay,ke as QuantityInput,UM as QuestionnaireBuilder,ts as QuestionnaireForm,La as QuestionnaireItemType,Yl as QuestionnaireRepeatWrapper,kt as RangeDisplay,rt as RangeInput,lo as ReferenceDisplay,Bo as ReferenceInput,uw as ReferenceRangeEditor,OI as ReferenceRangeGroupEditor,$O as RegisterForm,Cw as RequestGroupDisplay,jn as ResourceArrayDisplay,vf as ResourceArrayInput,Ce as ResourceAvatar,je as ResourceBadge,ww as ResourceBlame,Vw as ResourceDiff,_P as ResourceForm,Jw as ResourceHistoryTable,Rt as ResourceInput,Le as ResourceName,pe as ResourcePropertyDisplay,Ve as ResourcePropertyInput,pa as ResourceTable,Ze as ResourceTimeline,aO as Scheduler,Ba as SearchChangeEvent,co as SearchClickEvent,ax as SearchControl,Il as SearchFieldEditor,Sl as SearchFilterEditor,Aa as SearchLoadEvent,dO as ServiceRequestTimeline,Q0 as SignInForm,Vt as StatusBadge,zf as Timeline,_e as TimelineItem,kf as TimingInput,Ca as addDateFilterBetween,mA as addField,Oo as addFilter,fl as addLastMonthFilter,va as addMissingFilter,sl as addNextMonthFilter,ll as addThisMonthFilter,al as addTodayFilter,nl as addTomorrowFilter,il as addYearToDateFilter,rl as addYesterdayFilter,Se as buildFieldNameString,cA as clearFilters,Wt as clearFiltersOnField,Bd as convertIsoToLocal,Ad as convertLocalToIso,ir as createScriptTag,tl as deleteFilter,xe as getErrorsForInput,Mt as getIssuesForExpression,Gc as getMonthString,ft as getOpString,ps as getRecaptcha,ml as getSearchOperators,dl as getSortField,ia as getStartMonth,og as getTimeString,Pe as getValueAndType,ms as initRecaptcha,ql as isChoiceQuestion,Gl as isQuestionEnabled,cl as isSortDescending,Bn as parseForm,pl as renderValue,nt as setFilters,Ip as setOffset,ul as setPage,ot as setPropertyValue,Sa as setSort,Xf as sortByDateAndPriority,pA as toggleSort,S as useMedplum,Qo as useMedplumContext,ze as useMedplumNavigate,xt as useMedplumProfile,W as useResource};
68
68
  //# sourceMappingURL=index.mjs.map