@medplum/react 2.1.9 → 2.1.11

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 (139) hide show
  1. package/api-extractor.json +3 -0
  2. package/babel.config.cjs +19 -0
  3. package/dist/cjs/index.cjs +5 -5
  4. package/dist/cjs/index.cjs.map +4 -4
  5. package/dist/esm/index.mjs +4 -4
  6. package/dist/esm/index.mjs.map +4 -4
  7. package/dist/types.d.ts +1388 -0
  8. package/package.json +38 -37
  9. package/tsdoc.json +4 -0
  10. package/dist/types/AddressDisplay/AddressDisplay.d.ts +0 -6
  11. package/dist/types/AddressInput/AddressInput.d.ts +0 -8
  12. package/dist/types/AnnotationInput/AnnotationInput.d.ts +0 -8
  13. package/dist/types/AppShell/AppShell.d.ts +0 -14
  14. package/dist/types/AppShell/Header.d.ts +0 -11
  15. package/dist/types/AppShell/HeaderSearchInput.d.ts +0 -8
  16. package/dist/types/AppShell/Navbar.d.ts +0 -19
  17. package/dist/types/AsyncAutocomplete/AsyncAutocomplete.d.ts +0 -15
  18. package/dist/types/AttachmentArrayDisplay/AttachmentArrayDisplay.d.ts +0 -7
  19. package/dist/types/AttachmentArrayInput/AttachmentArrayInput.d.ts +0 -9
  20. package/dist/types/AttachmentButton/AttachmentButton.d.ts +0 -12
  21. package/dist/types/AttachmentDisplay/AttachmentDisplay.d.ts +0 -7
  22. package/dist/types/AttachmentInput/AttachmentInput.d.ts +0 -9
  23. package/dist/types/BackboneElementDisplay/BackboneElementDisplay.d.ts +0 -9
  24. package/dist/types/BackboneElementInput/BackboneElementInput.d.ts +0 -9
  25. package/dist/types/BookmarkDialog/BookmarkDialog.d.ts +0 -11
  26. package/dist/types/CalendarInput/CalendarInput.d.ts +0 -8
  27. package/dist/types/CalendarInput/CalendarInput.utils.d.ts +0 -7
  28. package/dist/types/CheckboxFormSection/CheckboxFormSection.d.ts +0 -9
  29. package/dist/types/CodeInput/CodeInput.d.ts +0 -13
  30. package/dist/types/CodeableConceptDisplay/CodeableConceptDisplay.d.ts +0 -6
  31. package/dist/types/CodeableConceptInput/CodeableConceptInput.d.ts +0 -10
  32. package/dist/types/CodingDisplay/CodingDisplay.d.ts +0 -6
  33. package/dist/types/CodingInput/CodingInput.d.ts +0 -10
  34. package/dist/types/ContactDetailDisplay/ContactDetailDisplay.d.ts +0 -6
  35. package/dist/types/ContactDetailInput/ContactDetailInput.d.ts +0 -8
  36. package/dist/types/ContactPointDisplay/ContactPointDisplay.d.ts +0 -6
  37. package/dist/types/ContactPointInput/ContactPointInput.d.ts +0 -8
  38. package/dist/types/Container/Container.d.ts +0 -3
  39. package/dist/types/DateTimeInput/DateTimeInput.d.ts +0 -20
  40. package/dist/types/DateTimeInput/DateTimeInput.utils.d.ts +0 -12
  41. package/dist/types/DefaultResourceTimeline/DefaultResourceTimeline.d.ts +0 -6
  42. package/dist/types/DescriptionList/DescriptionList.d.ts +0 -11
  43. package/dist/types/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +0 -17
  44. package/dist/types/Document/Document.d.ts +0 -3
  45. package/dist/types/EncounterTimeline/EncounterTimeline.d.ts +0 -6
  46. package/dist/types/ErrorBoundary/ErrorBoundary.d.ts +0 -18
  47. package/dist/types/ExtensionInput/ExtensionInput.d.ts +0 -8
  48. package/dist/types/FhirPathDisplay/FhirPathDisplay.d.ts +0 -8
  49. package/dist/types/FhirPathTable/FhirPathTable.d.ts +0 -29
  50. package/dist/types/Form/Form.d.ts +0 -8
  51. package/dist/types/Form/FormUtils.d.ts +0 -6
  52. package/dist/types/FormSection/FormSection.d.ts +0 -11
  53. package/dist/types/GoogleButton/GoogleButton.d.ts +0 -7
  54. package/dist/types/GoogleButton/GoogleButton.utils.d.ts +0 -1
  55. package/dist/types/HumanNameDisplay/HumanNameDisplay.d.ts +0 -8
  56. package/dist/types/HumanNameInput/HumanNameInput.d.ts +0 -8
  57. package/dist/types/IdentifierDisplay/IdentifierDisplay.d.ts +0 -6
  58. package/dist/types/IdentifierInput/IdentifierInput.d.ts +0 -8
  59. package/dist/types/Loading/Loading.d.ts +0 -2
  60. package/dist/types/Logo/Logo.d.ts +0 -6
  61. package/dist/types/MedplumLink/MedplumLink.d.ts +0 -11
  62. package/dist/types/MoneyDisplay/MoneyDisplay.d.ts +0 -6
  63. package/dist/types/MoneyInput/MoneyInput.d.ts +0 -10
  64. package/dist/types/NoteDisplay/NoteDisplay.d.ts +0 -6
  65. package/dist/types/OperationOutcomeAlert/OperationOutcomeAlert.d.ts +0 -7
  66. package/dist/types/Panel/Panel.d.ts +0 -11
  67. package/dist/types/PatientTimeline/PatientTimeline.d.ts +0 -6
  68. package/dist/types/PeriodInput/PeriodInput.d.ts +0 -8
  69. package/dist/types/PlanDefinitionBuilder/PlanDefinitionBuilder.d.ts +0 -7
  70. package/dist/types/QuantityDisplay/QuantityDisplay.d.ts +0 -6
  71. package/dist/types/QuantityInput/QuantityInput.d.ts +0 -11
  72. package/dist/types/QuestionnaireBuilder/QuestionnaireBuilder.d.ts +0 -7
  73. package/dist/types/QuestionnaireForm/QuestionnaireForm.d.ts +0 -17
  74. package/dist/types/QuestionnaireForm/QuestionnaireFormItem/QuestionnaireFormItem.d.ts +0 -11
  75. package/dist/types/RangeDisplay/RangeDisplay.d.ts +0 -6
  76. package/dist/types/RangeInput/RangeInput.d.ts +0 -14
  77. package/dist/types/RatioDisplay/RatioDisplay.d.ts +0 -6
  78. package/dist/types/RatioInput/RatioInput.d.ts +0 -14
  79. package/dist/types/ReferenceDisplay/ReferenceDisplay.d.ts +0 -7
  80. package/dist/types/ReferenceInput/ReferenceInput.d.ts +0 -12
  81. package/dist/types/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +0 -26
  82. package/dist/types/RequestGroupDisplay/RequestGroupDisplay.d.ts +0 -8
  83. package/dist/types/ResourceArrayDisplay/ResourceArrayDisplay.d.ts +0 -11
  84. package/dist/types/ResourceArrayInput/ResourceArrayInput.d.ts +0 -11
  85. package/dist/types/ResourceAvatar/ResourceAvatar.d.ts +0 -8
  86. package/dist/types/ResourceBadge/ResourceBadge.d.ts +0 -7
  87. package/dist/types/ResourceBlame/ResourceBlame.d.ts +0 -8
  88. package/dist/types/ResourceBlame/ResourceBlame.utils.d.ts +0 -3
  89. package/dist/types/ResourceDiff/ResourceDiff.d.ts +0 -8
  90. package/dist/types/ResourceDiffTable/ResourceDiffTable.d.ts +0 -7
  91. package/dist/types/ResourceForm/ResourceForm.d.ts +0 -9
  92. package/dist/types/ResourceForm/ResourceForm.utils.d.ts +0 -2
  93. package/dist/types/ResourceHistoryTable/ResourceHistoryTable.d.ts +0 -8
  94. package/dist/types/ResourceInput/ResourceInput.d.ts +0 -12
  95. package/dist/types/ResourceName/ResourceName.d.ts +0 -8
  96. package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts +0 -17
  97. package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.utils.d.ts +0 -12
  98. package/dist/types/ResourcePropertyInput/ResourcePropertyInput.d.ts +0 -21
  99. package/dist/types/ResourceTable/ResourceTable.d.ts +0 -20
  100. package/dist/types/ResourceTimeline/ResourceTimeline.d.ts +0 -10
  101. package/dist/types/ResourceTypeInput/ResourceTypeInput.d.ts +0 -12
  102. package/dist/types/Scheduler/Scheduler.d.ts +0 -7
  103. package/dist/types/SearchControl/SearchControl.d.ts +0 -43
  104. package/dist/types/SearchControl/SearchControlField.d.ts +0 -40
  105. package/dist/types/SearchControl/SearchUtils.d.ts +0 -173
  106. package/dist/types/SearchExportDialog/SearchExportDialog.d.ts +0 -15
  107. package/dist/types/SearchFieldEditor/SearchFieldEditor.d.ts +0 -10
  108. package/dist/types/SearchFilterEditor/SearchFilterEditor.d.ts +0 -9
  109. package/dist/types/SearchFilterValueDialog/SearchFilterValueDialog.d.ts +0 -14
  110. package/dist/types/SearchFilterValueDisplay/SearchFilterValueDisplay.d.ts +0 -7
  111. package/dist/types/SearchFilterValueInput/SearchFilterValueInput.d.ts +0 -10
  112. package/dist/types/SearchPopupMenu/SearchPopupMenu.d.ts +0 -10
  113. package/dist/types/ServiceRequestTimeline/ServiceRequestTimeline.d.ts +0 -6
  114. package/dist/types/StatusBadge/StatusBadge.d.ts +0 -5
  115. package/dist/types/Timeline/Timeline.d.ts +0 -15
  116. package/dist/types/TimingInput/TimingInput.d.ts +0 -8
  117. package/dist/types/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +0 -15
  118. package/dist/types/auth/AuthenticationForm.d.ts +0 -27
  119. package/dist/types/auth/ChooseProfileForm.d.ts +0 -9
  120. package/dist/types/auth/ChooseScopeForm.d.ts +0 -8
  121. package/dist/types/auth/MfaForm.d.ts +0 -7
  122. package/dist/types/auth/NewProjectForm.d.ts +0 -7
  123. package/dist/types/auth/NewUserForm.d.ts +0 -11
  124. package/dist/types/auth/RegisterForm.d.ts +0 -11
  125. package/dist/types/auth/SignInForm.d.ts +0 -26
  126. package/dist/types/constants.d.ts +0 -1
  127. package/dist/types/index.d.ts +0 -92
  128. package/dist/types/stories/covid19.d.ts +0 -15
  129. package/dist/types/stories/healthgorilla.d.ts +0 -6
  130. package/dist/types/stories/referenceLab.d.ts +0 -6
  131. package/dist/types/test.setup.d.ts +0 -1
  132. package/dist/types/utils/blame.d.ts +0 -8
  133. package/dist/types/utils/date.d.ts +0 -7
  134. package/dist/types/utils/diff.d.ts +0 -16
  135. package/dist/types/utils/dom.d.ts +0 -15
  136. package/dist/types/utils/outcomes.d.ts +0 -3
  137. package/dist/types/utils/questionnaire.d.ts +0 -25
  138. package/dist/types/utils/recaptcha.d.ts +0 -12
  139. package/dist/types/utils/script.d.ts +0 -6
@@ -1,4 +1,4 @@
1
- import Ys,{useEffect as ei,useMemo as oi,useState as ti}from"react";import{createContext as ri,useContext as ai}from"react";import{deepEquals as fi,isReference as cn,isResource as li,normalizeOperationOutcome as si}from"@medplum/core";import{useCallback as ii,useEffect as sn,useState as ui}from"react";import{allOk as di,normalizeOperationOutcome as ci}from"@medplum/core";import{useEffect as mi,useState as mt}from"react";var dn=ri(void 0);function Uo(){return ai(dn)}function P(){return Uo().medplum}function Qe(){return Uo().navigate}function pt(){return Uo().profile}function Zh(e){let o=e.medplum,t=e.navigate??ni,[r,a]=ti({profile:o.getProfile(),loading:!1});ei(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]);let n=oi(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ys.createElement(dn.Provider,{value:n},e.children)}function ni(e){window.location.assign(e)}function X(e,o){let t=P(),[r,a]=ui(un(t,e)),n=ii(f=>{fi(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return cn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(si(s)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(li(o))return o;if(cn(o))return e.getCachedReference(o)}}function rC(e,o){return yr("search",e,o)}function aC(e,o){return yr("searchOne",e,o)}function mn(e,o){return yr("searchResources",e,o)}function yr(e,o,t){let r=P(),[a,n]=mt(),[f,s]=mt(!1),[l,i]=mt(),[u,d]=mt();return mi(()=>{let c=r.fhirSearchUrl(o,t).toString();c!==a&&(n(c),r[e](o,t).then(x=>{s(!1),i(x),d(di)}).catch(x=>{s(!1),i(void 0),d(ci(x))}))},[r,e,o,t,a,i]),[l,f,u]}import{formatAddress as pi}from"@medplum/core";import pn from"react";function xn(e){let o=e.value;return o?pn.createElement(pn.Fragment,null,pi(o)):null}import{Group as xi,NativeSelect as In,TextInput as Qo}from"@mantine/core";import ze,{useRef as Ii,useState as gi}from"react";function gn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function hn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Cn(e){let[o,t]=gi(e.defaultValue||{}),r=Ii();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function s(c){a(hn(r.current||{},0,c))}function l(c){a(hn(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 ze.createElement(xi,{spacing:"xs",grow:!0,noWrap:!0},ze.createElement(In,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),ze.createElement(In,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),ze.createElement(Qo,{placeholder:"Line 1",defaultValue:gn(o,0),onChange:c=>s(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"Line 2",defaultValue:gn(o,1),onChange:c=>l(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as hi}from"@mantine/core";import{createReference as Ci}from"@medplum/core";import yi,{useRef as vi,useState as Si}from"react";function yn(e){let o=pt(),[t,r]=Si(e.defaultValue||{}),a=vi();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&Ci(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return yi.createElement(hi,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as _u,useMantineTheme as Zu}from"@mantine/core";import{showNotification as Yu}from"@mantine/notifications";import ao,{Suspense as ed,useEffect as od,useState as td}from"react";import{Alert as Ai}from"@mantine/core";import{normalizeErrorString as Fi}from"@medplum/core";import{forwardRef as bi,createElement as Sn}from"react";import to from"prop-types";var vn={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 Pi=Object.defineProperty,Di=Object.defineProperties,Ti=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,Dn=Object.prototype.hasOwnProperty,Tn=Object.prototype.propertyIsEnumerable,bn=(e,o,t)=>o in e?Pi(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,Pn=(e,o)=>{for(var t in o||(o={}))Dn.call(o,t)&&bn(e,t,o[t]);if(xt)for(var t of xt(o))Tn.call(o,t)&&bn(e,t,o[t]);return e},ki=(e,o)=>Di(e,Ti(o)),Bi=(e,o)=>{var t={};for(var r in e)Dn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&xt)for(var r of xt(e))o.indexOf(r)<0&&Tn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=bi((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=Bi(f,["color","size","stroke","children"]);return Sn("svg",Pn(ki(Pn({ref:n},vn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,x])=>Sn(c,x)),...u||[]])});return r.propTypes={color:to.string,size:to.oneOfType([to.string,to.number]),stroke:to.oneOfType([to.string,to.number])},r.displayName=`${o}`,r};var vr=p("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var ro=p("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var Sr=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var br=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var Pr=p("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var Dr=p("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Tr=p("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var kr=p("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Br=p("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var Ar=p("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ne=p("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var zo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Fr=p("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Mr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var We=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Wo=p("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var wr=p("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Or=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Er=p("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Lr=p("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Rr=p("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var xo=p("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var It=p("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Nr=p("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Hr=p("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Vr=p("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var qr=p("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var gt=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var ht=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Gr=p("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Ur=p("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Qr=p("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var zr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Wr=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Xr=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=p("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Xo=p("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jo=p("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jr=p("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var $r=p("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Kr=p("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var $o=p("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var jr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import _r from"react";var ho=class extends _r.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?_r.createElement(Ai,{icon:_r.createElement(ro,{size:16}),title:"Something went wrong",color:"red"},Fi(this.state.error)):this.props.children}};import{Center as Mi,Loader as wi}from"@mantine/core";import kn from"react";function Zr(){return kn.createElement(Mi,{style:{width:"100%",height:"100vh"}},kn.createElement(wi,null))}import{Avatar as uu,createStyles as du,Group as vt,Header as cu,Menu as He,Stack as mu,Text as Ko,UnstyledButton as Hn}from"@mantine/core";import{formatHumanName as pu,getReferenceString as Vn}from"@medplum/core";import U,{useState as xu}from"react";import{formatHumanName as Oi}from"@medplum/core";import Bn from"react";function Ct(e){let o=e.value;return o?Bn.createElement(Bn.Fragment,null,Oi(o,e.options)):null}import{Avatar as Fn}from"@mantine/core";import{getDisplayString as Ui,getImageSrc as Qi}from"@medplum/core";import Yr from"react";import{Anchor as Ei}from"@mantine/core";import{isReference as Li,isResource as Ri}from"@medplum/core";import Ni from"react";function N(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(An(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&An(o[0]))return!0}return!1}function An(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Hi(t);return r&&(l+="/"+r),Ni.createElement(Ei,{href:l,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(l)},...s},f)}function Hi(e){if(e){if(typeof e=="string")return Vi(e);if(Ri(e))return qi(e);if(Li(e))return Gi(e)}return"#"}function Vi(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function qi(e){return`/${e.resourceType}/${e.id}`}function Gi(e){return`/${e.reference}`}function he(e){let o=X(e.value),t=o?Ui(o):e.alt??"",r=(o&&Qi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Yr.createElement(se,{to:o},Yr.createElement(Fn,{src:r,alt:t,radius:a,...n})):Yr.createElement(Fn,{src:r,alt:t,radius:a,...n})}import{createStyles as ji,Group as _i,Text as wn}from"@mantine/core";import{formatHumanName as Zi,getDisplayString as Rn,getReferenceString as Yi,isUUID as eu}from"@medplum/core";import Xe,{forwardRef as ou,useCallback as On}from"react";import{Loader as zi,MultiSelect as Wi}from"@mantine/core";import{showNotification as Xi}from"@mantine/notifications";import{normalizeErrorString as Ji}from"@medplum/core";import Mn,{useCallback as Co,useEffect as $i,useRef as yo,useState as vo}from"react";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Ki(o),u=yo(null),[d,c]=vo(),[x,y]=vo(),[k,T]=vo(),[B,A]=vo(),[I,O]=vo(i.map(r)),[g,M]=vo([]),Y=yo();Y.current=d;let ne=yo();ne.current=x;let Le=yo();Le.current=k;let oo=yo();oo.current=B;let me=yo();me.current=g;let C=Co(()=>{y(void 0);let fe=u.current?.value.trim()||"";if(fe===Y.current)return;c(fe);let te=new AbortController;T(te),a(fe,te.signal).then(be=>{te.signal.aborted||(M(be.map(r)),T(void 0),oo.current&&(be.length>0&&n(be.slice(0,1)),A(!1)))}).catch(be=>{te.signal.aborted||be.message.includes("aborted")||Xi({color:"red",message:Ji(be)})})},[a,n,r]),V=Co(()=>{Le.current&&(Le.current.abort(),T(void 0)),ne.current!==void 0&&window.clearTimeout(ne.current);let fe=window.setTimeout(()=>C(),100);y(fe)},[C]),we=Co(fe=>{let te=[],be=[];for(let ln of fe){let ct=me.current?.find(Zs=>Zs.value===ln),Go=ct?.resource;!Go&&s!==!1&&f&&(Go=f(ln),ct=r(Go)),Go&&te.push(Go),ct&&be.push(ct)}n(te),O(be)},[s,n,f,r]),v=Co(fe=>{fe.key==="Enter"&&(!ne.current&&!Le.current?(N(fe),me.current&&me.current.length>0&&(M(me.current.slice(0,1)),we([me.current[0].value]))):A(!0))},[we]),z=Co(fe=>{let te=r(f(fe));return M([...me.current,te]),te},[f,M,r]),Re=Co((fe,te)=>!te,[]);return $i(()=>()=>{Le.current&&Le.current.abort()},[]),Mn.createElement(Wi,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:v,onSearchChange:V,data:[...I,...g],onFocus:C,onChange:we,onCreate:z,rightSectionWidth:40,rightSection:k?Mn.createElement(zi,{size:16}):null,filter:Re,creatable:!0})}function Ki(e){return e?Array.isArray(e)?e:[e]:[]}var tu=ji(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function ru(e){return e.id}function au(e){return{value:e.id,label:Rn(e),resource:e}}function Nn(e){let{classes:o}=tu(),t=Qe(),r=P(),a=On(async(f,s)=>{let l=fu(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return lu(u,f)},[r]),n=On(f=>{f.length>0&&t(`/${Yi(f[0])}`)},[t]);return Xe.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Xe.createElement(Xr,{size:16}),placeholder:"Search",itemComponent:nu,toKey:ru,toOption:au,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var nu=ou(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Xe.createElement("div",{ref:t,...o},Xe.createElement(_i,{noWrap:!0},Xe.createElement(he,{value:e}),Xe.createElement("div",null,Xe.createElement(wn,null,Rn(e)),Xe.createElement(wn,{size:"xs",color:"dimmed"},r))))});function fu(e){let o=JSON.stringify(e);return eu(e)?`{
1
+ import ti,{useEffect as ri,useMemo as ai,useState as ni}from"react";import{createContext as fi,useContext as li}from"react";import{deepEquals as ii,isReference as pn,isResource as ui,normalizeOperationOutcome as di}from"@medplum/core";import{useCallback as ci,useEffect as dn,useState as mi}from"react";import{allOk as pi,normalizeOperationOutcome as xi}from"@medplum/core";import{useEffect as Ii,useState as pt}from"react";var mn=fi(void 0);function Qo(){return li(mn)}function P(){return Qo().medplum}function Ue(){return Qo().navigate}function xt(){return Qo().profile}function iC(e){let o=e.medplum,t=e.navigate??si,[r,a]=ni({profile:o.getProfile(),loading:!1});ri(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]);let n=ai(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return ti.createElement(mn.Provider,{value:n},e.children)}function si(e){window.location.assign(e)}function W(e,o){let t=P(),[r,a]=mi(cn(t,e)),n=ci(f=>{ii(f,r)||a(f)},[r,a]);return dn(()=>{n(cn(t,e))},[t,e,n]),dn(()=>{let f=!0;return pn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(di(s)))}),()=>f=!1},[t,r,e,n,o]),r}function cn(e,o){if(o){if(ui(o))return o;if(pn(o))return e.getCachedReference(o)}}function pC(e,o){return Sr("search",e,o)}function xC(e,o){return Sr("searchOne",e,o)}function xn(e,o){return Sr("searchResources",e,o)}function Sr(e,o,t){let r=P(),[a,n]=pt(),[f,s]=pt(!1),[l,i]=pt(),[u,c]=pt();return Ii(()=>{let d=r.fhirSearchUrl(o,t).toString();d!==a&&(n(d),r[e](o,t).then(x=>{s(!1),i(x),c(pi)}).catch(x=>{s(!1),i(void 0),c(xi(x))}))},[r,e,o,t,a,i]),[l,f,u]}import{formatAddress as gi}from"@medplum/core";import In from"react";function gn(e){let o=e.value;return o?In.createElement(In.Fragment,null,gi(o)):null}import{Group as hi,NativeSelect as hn,TextInput as zo}from"@mantine/core";import Qe,{useRef as Ci,useState as yi}from"react";function Cn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function yn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function vn(e){let[o,t]=yi(e.defaultValue||{}),r=Ci();r.current=o;function a(d){t(d),e.onChange&&e.onChange(d)}function n(d){a({...r.current,use:d})}function f(d){a({...r.current,type:d})}function s(d){a(yn(r.current||{},0,d))}function l(d){a(yn(r.current||{},1,d))}function i(d){a({...r.current,city:d})}function u(d){a({...r.current,state:d})}function c(d){a({...r.current,postalCode:d})}return Qe.createElement(hi,{spacing:"xs",grow:!0,noWrap:!0},Qe.createElement(hn,{"data-testid":"address-use",defaultValue:o.use,onChange:d=>n(d.currentTarget.value),data:["","home","work","temp","old","billing"]}),Qe.createElement(hn,{"data-testid":"address-type",defaultValue:o.type,onChange:d=>f(d.currentTarget.value),data:["","postal","physical","both"]}),Qe.createElement(zo,{placeholder:"Line 1",defaultValue:Cn(o,0),onChange:d=>s(d.currentTarget.value)}),Qe.createElement(zo,{placeholder:"Line 2",defaultValue:Cn(o,1),onChange:d=>l(d.currentTarget.value)}),Qe.createElement(zo,{placeholder:"City",defaultValue:o.city,onChange:d=>i(d.currentTarget.value)}),Qe.createElement(zo,{placeholder:"State",defaultValue:o.state,onChange:d=>u(d.currentTarget.value)}),Qe.createElement(zo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:d=>c(d.currentTarget.value)}))}import{TextInput as vi}from"@mantine/core";import{createReference as Si}from"@medplum/core";import bi,{useRef as Pi,useState as Di}from"react";function Sn(e){let o=xt(),[t,r]=Di(e.defaultValue||{}),a=Pi();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&Si(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return bi.createElement(vi,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as ed,useMantineTheme as od}from"@mantine/core";import{showNotification as td}from"@mantine/notifications";import ao,{Suspense as rd,useEffect as ad,useState as nd}from"react";import{Alert as wi}from"@mantine/core";import{normalizeErrorString as Oi}from"@medplum/core";import{forwardRef as ki,createElement as Pn}from"react";import to from"prop-types";var bn={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 Ti=Object.defineProperty,Bi=Object.defineProperties,Ai=Object.getOwnPropertyDescriptors,It=Object.getOwnPropertySymbols,Tn=Object.prototype.hasOwnProperty,Bn=Object.prototype.propertyIsEnumerable,Dn=(e,o,t)=>o in e?Ti(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,kn=(e,o)=>{for(var t in o||(o={}))Tn.call(o,t)&&Dn(e,t,o[t]);if(It)for(var t of It(o))Bn.call(o,t)&&Dn(e,t,o[t]);return e},Fi=(e,o)=>Bi(e,Ai(o)),Mi=(e,o)=>{var t={};for(var r in e)Tn.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&&Bn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=ki((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,c=Mi(f,["color","size","stroke","children"]);return Pn("svg",kn(Fi(kn({ref:n},bn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),c),[...t.map(([d,x])=>Pn(d,x)),...u||[]])});return r.propTypes={color:to.string,size:to.oneOfType([to.string,to.number]),stroke:to.oneOfType([to.string,to.number])},r.displayName=`${o}`,r};var br=p("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var ro=p("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var Pr=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var Dr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var kr=p("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var Tr=p("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Br=p("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var Ar=p("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Fr=p("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var Mr=p("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ne=p("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var Wo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var wr=p("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Or=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Xo=p("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var Er=p("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Lr=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Rr=p("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Nr=p("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Hr=p("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var xo=p("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var gt=p("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Vr=p("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var qr=p("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Gr=p("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Ur=p("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var ht=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var Ct=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Qr=p("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var zr=p("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Wr=p("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Xr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Jr=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var $r=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=p("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Jo=p("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var $o=p("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Kr=p("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var jr=p("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var _r=p("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Ko=p("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Zr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Yr from"react";var ho=class extends Yr.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?Yr.createElement(wi,{icon:Yr.createElement(ro,{size:16}),title:"Something went wrong",color:"red"},Oi(this.state.error)):this.props.children}};import{Center as Ei,Loader as Li}from"@mantine/core";import An from"react";function ea(){return An.createElement(Ei,{style:{width:"100%",height:"100vh"}},An.createElement(Li,null))}import{Avatar as mu,createStyles as pu,Group as St,Header as xu,Menu as He,Stack as Iu,Text as jo,UnstyledButton as qn}from"@mantine/core";import{formatHumanName as gu,getReferenceString as Gn}from"@medplum/core";import G,{useState as hu}from"react";import{formatHumanName as Ri}from"@medplum/core";import Fn from"react";function yt(e){let o=e.value;return o?Fn.createElement(Fn.Fragment,null,Ri(o,e.options)):null}import{Avatar as wn}from"@mantine/core";import{getDisplayString as Wi,getImageSrc as Xi}from"@medplum/core";import oa from"react";import{Anchor as Ni}from"@mantine/core";import{isReference as Hi,isResource as Vi}from"@medplum/core";import qi from"react";function R(e){e.preventDefault(),e.stopPropagation()}function vt(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 fe(e){let o=Ue(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Gi(t);return r&&(l+="/"+r),qi.createElement(Ni,{href:l,"aria-label":a,onClick:i=>{R(i),n?n(i):t&&o(l)},...s},f)}function Gi(e){if(e){if(typeof e=="string")return Ui(e);if(Vi(e))return Qi(e);if(Hi(e))return zi(e)}return"#"}function Ui(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Qi(e){return`/${e.resourceType}/${e.id}`}function zi(e){return`/${e.reference}`}function Ie(e){let o=W(e.value),t=o?Wi(o):e.alt??"",r=(o&&Xi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?oa.createElement(fe,{to:o},oa.createElement(wn,{src:r,alt:t,radius:a,...n})):oa.createElement(wn,{src:r,alt:t,radius:a,...n})}import{createStyles as Yi,Group as eu,Text as En}from"@mantine/core";import{formatHumanName as ou,getDisplayString as Hn,getReferenceString as tu,isUUID as ru}from"@medplum/core";import We,{forwardRef as au,useCallback as Ln}from"react";import{Loader as Ji,MultiSelect as $i}from"@mantine/core";import{showNotification as Ki}from"@mantine/notifications";import{normalizeErrorString as ji}from"@medplum/core";import On,{useCallback as Co,useEffect as _i,useRef as yo,useState as vo}from"react";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Zi(o),u=yo(null),[c,d]=vo(),[x,y]=vo(),[g,k]=vo(),[B,T]=vo(),[A,z]=vo(i.map(r)),[v,L]=vo([]),_=yo();_.current=c;let re=yo();re.current=x;let Le=yo();Le.current=g;let oo=yo();oo.current=B;let de=yo();de.current=v;let h=Co(()=>{y(void 0);let ae=u.current?.value.trim()||"";if(ae===_.current)return;d(ae);let ee=new AbortController;k(ee),a(ae,ee.signal).then(ye=>{ee.signal.aborted||(L(ye.map(r)),k(void 0),oo.current&&(ye.length>0&&n(ye.slice(0,1)),T(!1)))}).catch(ye=>{ee.signal.aborted||ye.message.includes("aborted")||Ki({color:"red",message:ji(ye)})})},[a,n,r]),H=Co(()=>{Le.current&&(Le.current.abort(),k(void 0)),re.current!==void 0&&window.clearTimeout(re.current);let ae=window.setTimeout(()=>h(),100);y(ae)},[h]),Me=Co(ae=>{let ee=[],ye=[];for(let un of ae){let mt=de.current?.find(oi=>oi.value===un),Uo=mt?.resource;!Uo&&s!==!1&&f&&(Uo=f(un),mt=r(Uo)),Uo&&ee.push(Uo),mt&&ye.push(mt)}n(ee),z(ye)},[s,n,f,r]),C=Co(ae=>{ae.key==="Enter"&&(!re.current&&!Le.current?(R(ae),de.current&&de.current.length>0&&(L(de.current.slice(0,1)),Me([de.current[0].value]))):T(!0))},[Me]),U=Co(ae=>{let ee=r(f(ae));return L([...de.current,ee]),ee},[f,L,r]),Re=Co((ae,ee)=>!ee,[]);return _i(()=>()=>{Le.current&&Le.current.abort()},[]),On.createElement($i,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:C,onSearchChange:H,data:[...A,...v],onFocus:h,onChange:Me,onCreate:U,rightSectionWidth:40,rightSection:g?On.createElement(Ji,{size:16}):null,filter:Re,creatable:!0,withinPortal:!0})}function Zi(e){return e?Array.isArray(e)?e:[e]:[]}var nu=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 fu(e){return e.id}function lu(e){return{value:e.id,label:Hn(e),resource:e}}function Vn(e){let{classes:o}=nu(),t=Ue(),r=P(),a=Ln(async(f,s)=>{let l=iu(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return uu(u,f)},[r]),n=Ln(f=>{f.length>0&&t(`/${tu(f[0])}`)},[t]);return We.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement($r,{size:16}),placeholder:"Search",itemComponent:su,toKey:fu,toOption:lu,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var su=au(({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(eu,{noWrap:!0},We.createElement(Ie,{value:e}),We.createElement("div",null,We.createElement(En,null,Hn(e)),We.createElement(En,{size:"xs",color:"dimmed"},r))))});function iu(e){let o=JSON.stringify(e);return ru(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import Ys,{useEffect as ei,useMemo as oi,useState as ti}from"react";import{creat
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function lu(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),iu(su(t),o).slice(0,5)}function su(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 iu(e,o){return e.sort((t,r)=>En(r,o)-En(t,o))}function En(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Ln(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Ln(Zi(r),o));return t}function Ln(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Iu=du(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 qn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=Iu(),[l,i]=xu(!1);return U.createElement(cu,{height:60,p:8,style:{zIndex:101}},U.createElement(vt,{position:"apart"},U.createElement(vt,{spacing:"xs"},U.createElement(Hn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&U.createElement(Nn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},U.createElement(He.Target,null,U.createElement(Hn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},U.createElement(vt,{spacing:7},U.createElement(he,{value:r,radius:"xl",size:24}),U.createElement(Ko,{size:"sm",className:f.userName},pu(r?.name?.[0])),U.createElement(Mr,{size:12,stroke:1.5})))),U.createElement(He.Dropdown,null,U.createElement(mu,{align:"center",p:"xl"},U.createElement(he,{size:"xl",radius:100,value:o.profile}),U.createElement(Ct,{value:o.profile?.name?.[0]}),U.createElement(Ko,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(He.Divider,null),n.map(u=>u.profile.reference!==Vn(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(uu,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(Ko,{size:"sm",weight:500},u.profile.display),U.createElement(Ko,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(He.Divider,null),U.createElement(He.Item,{icon:U.createElement($r,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(He.Item,{icon:U.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Vn(r)}`)},"Account settings"),U.createElement(He.Item,{icon:U.createElement(qr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(Ko,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Gu,createStyles as Uu,Navbar as oa,ScrollArea as Qu,Space as zu,Text as Wu}from"@mantine/core";import le,{useState as Xu}from"react";import{Button as yu,Group as vu,Modal as Su,NativeSelect as bu,Stack as Pu,TextInput as Du}from"@mantine/core";import{showNotification as Un}from"@mantine/notifications";import{deepClone as Tu,normalizeErrorString as ku}from"@medplum/core";import Je from"react";import Cu from"react";function Gn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?gu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&hu(o,t);return o}function gu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function hu(e,o){e[o.name]=o.value}function $(e){return Cu.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Gn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Qn(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=Tu(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Un({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Un({color:"red",message:ku(u)})})}return Je.createElement(Su,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Je.createElement($,{onSubmit:r},Je.createElement(Pu,null,Je.createElement(Bu,{config:t}),Je.createElement(Du,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Je.createElement(vu,{position:"right"},Je.createElement(yu,{mt:"sm",type:"submit"},"OK")))))}function Bu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Je.createElement(bu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Hu,{useCallback as Vu,useState as qu}from"react";import Eu,{useState as Lu}from"react";import Au,{useCallback as Fu}from"react";function ea(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Mu(e){return typeof e.display=="string"?e.display:ea(e)}function wu(e){return{value:ea(e),label:Mu(e),resource:e}}function Ou(e){return{code:e,display:e}}function bo(e){let o=P(),{binding:t,creatable:r,clearable:a,...n}=e,f=Fu(async(s,l)=>{if(!t)return[];let u=(await o.searchValueSet(t,s,{signal:l})).expansion?.contains,d=[];for(let c of u)c.code&&!d.some(x=>x.code===c.code)&&d.push(c);return d},[o,t]);return Au.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:ea,toOption:wu,loadOptions:f,onCreate:Ou,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function St(e){let[o,t]=Lu(e.defaultValue);function r(a){let n=a[0],f=Nu(n);t(f),e.onChange&&e.onChange(f)}return Eu.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Ru(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Ru(e){return e?{code:e}:void 0}function Nu(e){return e?.code}function Po(e){let[o,t]=qu(e.defaultValue),r=e.onChange,a=Vu(n=>{t(n),r&&r(n)},[r]);return Hu.createElement(St,{"data-autofocus":e.autoFocus,"data-testid":e.testId,defaultValue:o,onChange:a,name:e.name,placeholder:e.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var zn=Uu(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}=zn(),t=Qe(),r=Ku(e.pathname,e.searchParams,e.menus),[a,n]=Xu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return le.createElement(le.Fragment,null,le.createElement(oa,{width:{sm:250},p:"xs"},le.createElement(Qu,null,!e.resourceTypeSearchDisabled&&le.createElement(oa.Section,{mb:"sm"},le.createElement(Po,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),le.createElement(oa.Section,{grow:!0},e.menus?.map(l=>le.createElement(le.Fragment,{key:`menu-${l.title}`},le.createElement(Wu,{className:o.menuTitle},l.title),l.links?.map(i=>le.createElement(Ju,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},le.createElement($u,{to:i.href,icon:i.icon}),le.createElement("span",null,i.label))))),e.displayAddBookmark&&le.createElement(Gu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:le.createElement(zr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&le.createElement(Qn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Ju(e){let{classes:o,cx:t}=zn();return le.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function $u(e){return e.icon?e.icon:le.createElement(zu,{w:30})}function Ku(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let s=ju(e,o,f.href);s>a&&(a=s,r=f)}return r}function ju(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function Vb(e){let o=Zu(),[t,r]=td(localStorage.navbarOpen==="true"),a=P(),n=pt();od(()=>{function i(){Yu({color:"red",message:"No connection to server",autoClose:!1})}return a.addEventListener("offline",i),()=>a.removeEventListener("offline",i)},[a]);function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ao.createElement(Zr,null):ao.createElement(_u,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ao.createElement(qn,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ao.createElement(Wn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0},ao.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},ao.createElement(ed,{fallback:ao.createElement(Zr,null)},e.children)))}import ta from"react";import{Anchor as rd}from"@mantine/core";import $e from"react";function Oe(e){let{contentType:o,url:t,title:r}=e.value??{};return t?$e.createElement("div",{"data-testid":"attachment-display"},o?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:t,alt:r}),o?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:o,src:t})),o==="application/pdf"&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:t+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(rd,{href:t,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:ad(r)},r||"Download"))):null}function ad(e){return e?.includes(".")?e:void 0}function Xn(e){return ta.createElement("div",null,e.values?.map((o,t)=>ta.createElement("div",{key:"attatchment-"+t},ta.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Jn}from"@mantine/core";import ie,{useRef as ld,useState as sd}from"react";import ra,{useRef as nd}from"react";import{normalizeOperationOutcome as fd}from"@medplum/core";function Do(e){let o=P(),t=nd(null);function r(f){N(f),t.current?.click()}function a(f){N(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{e.onUploadError&&e.onUploadError(fd(u))})}return ra.createElement(ra.Fragment,null,ra.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function $n(e){let[o,t]=sd(e.defaultValue??[]),r=ld();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Oe,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(Jn,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(We,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(Do,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(Jn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Wo,{size:16})))))))}import{Button as Kn}from"@mantine/core";import To,{useState as id}from"react";function bt(e){let[o,t]=id(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?To.createElement(To.Fragment,null,To.createElement(Oe,{value:o,maxWidth:200}),To.createElement(Kn,{onClick:a=>{N(a),r(void 0)}},"Remove")):To.createElement(Do,{onUpload:r},a=>To.createElement(Kn,{...a},"Upload..."))}import{normalizeOperationOutcome as Ud}from"@medplum/core";import Mt,{useEffect as Qd,useState as nf}from"react";import jn from"react";import{Container as ud,createStyles as dd}from"@mantine/core";import cd from"react";var md=dd(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=md();return cd.createElement(ud,{className:r.root,...t},o)}import{createStyles as pd,Paper as xd,useComponentDefaultProps as Id}from"@mantine/core";import gd from"react";var hd=pd((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%"}}})),Cd={shadow:"xs",radius:"md",withBorder:!0};function ko(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Id("Panel",Cd,e),{classes:s,cx:l}=hd({width:r,fill:a},{name:"Panel",unstyled:n});return gd.createElement(xd,{className:l(s.paper,o),...f},t)}function Pt(e){let{children:o,...t}=e;return jn.createElement(Ke,null,jn.createElement(ko,{...t},o))}import{Anchor as Zn,Button as yd,Center as vd,Group as Sd,Stack as bd,Text as Pd,TextInput as Dd,Title as Td}from"@mantine/core";import{normalizeOperationOutcome as kd}from"@medplum/core";import ke,{useState as Bd}from"react";import no from"react";function je(e){return no.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},no.createElement("title",null,"Medplum Logo"),no.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),no.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),no.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),no.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),no.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function pe(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function Dt(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))}function _n(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Tt(e){let o=P(),[t,r]=Bd();return ke.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(kd(n))}}},ke.createElement(vd,{sx:{flexDirection:"column"}},ke.createElement(je,{size:32}),ke.createElement(Td,null,"Create project")),ke.createElement(bd,{spacing:"xl"},ke.createElement(Dd,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:pe(t,"firstName")}),ke.createElement(Pd,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",ke.createElement(Zn,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",ke.createElement(Zn,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),ke.createElement(Sd,{position:"right",mt:"xl",noWrap:!0},ke.createElement(yd,{type:"submit"},"Create project")))}import{Anchor as Ft,Button as Ed,Center as Ld,Checkbox as Rd,Divider as Nd,Group as of,PasswordInput as Hd,Stack as Vd,Text as tf,TextInput as fa}from"@mantine/core";import{normalizeOperationOutcome as rf}from"@medplum/core";import _,{useEffect as qd,useState as Gd}from"react";import Ad,{useEffect as Fd,useRef as Md,useState as aa}from"react";function kt(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function Bt(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=Md(null),[n,f]=aa(typeof google<"u"),[s,l]=aa(!1),[i,u]=aa(!1);return Fd(()=>{if(typeof google>"u"){kt("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?Ad.createElement("div",{ref:a}):null}function At(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}import{Alert as wd}from"@mantine/core";import{operationOutcomeIssueToString as Od}from"@medplum/core";import na from"react";function Bo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:na.createElement(wd,{icon:na.createElement(ro,{size:16}),color:"red"},o.map(t=>na.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},Od(t))))}function Yn(e){typeof grecaptcha>"u"&&kt("https://www.google.com/recaptcha/api.js?render="+e)}function ef(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function af(e){let o=At(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=Gd(),f=Dt(a,void 0);return qd(()=>{t&&Yn(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await ef(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(rf(l))}}},_.createElement(Ld,{sx:{flexDirection:"column"}},e.children),_.createElement(Bo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(of,{position:"center",p:"xl",style:{height:70}},_.createElement(Bt,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(rf(l))}}})),_.createElement(Nd,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Vd,{spacing:"xl"},_.createElement(fa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:pe(a,"firstName")}),_.createElement(fa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:pe(a,"lastName")}),_.createElement(fa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:pe(a,"email")}),_.createElement(Hd,{name:"password",label:"Password",autoComplete:"off",required:!0,error:pe(a,"password")}),_.createElement(tf,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(Ft,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Ft,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(tf,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(Ft,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Ft,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(of,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Rd,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Ed,{type:"submit"},"Create account")))}function xD(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=P(),[l,i]=nf(),[u,d]=nf();Qd(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(x=>s.processCode(x.code)).then(()=>f()).catch(x=>d(Ud(x)))},[s,o,t,l,f]);function c(x){x.code?s.processCode(x.code).then(()=>f()).catch(console.log):x.login&&i(x.login)}return Mt.createElement(Pt,{width:450},u&&Mt.createElement("pre",null,JSON.stringify(u,null,2)),!l&&Mt.createElement(af,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&Mt.createElement(Tt,{login:l,handleAuthResponse:c}))}import{showNotification as hf}from"@mantine/notifications";import{normalizeErrorString as Cf}from"@medplum/core";import fo,{useCallback as sa,useEffect as Cc,useState as ia}from"react";import{Anchor as ff,Button as lf,Center as sf,Checkbox as zd,Divider as Wd,Group as la,PasswordInput as Xd,Stack as Jd,TextInput as $d}from"@mantine/core";import{normalizeOperationOutcome as Kd}from"@medplum/core";import K,{useCallback as wt,useState as uf}from"react";function df(e){let[o,t]=uf();return o?K.createElement(_d,{email:o,...e}):K.createElement(jd,{setEmail:t,...e})}function jd(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=P(),l=!e.disableGoogleAuth&&At(e.googleClientId),i=wt(async c=>{if(!c.authorizeUrl)return!1;let x=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",x),window.location.assign(y.toString()),!0},[s,f]),u=wt(async c=>{let x=await s.post("auth/method",{email:c.email});await i(x)||o(c.email)},[s,i,o]),d=wt(async c=>{let x=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(x)||r(x)},[s,f,i,r]);return K.createElement($,{style:{maxWidth:400},onSubmit:u},K.createElement(sf,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(la,{position:"center",p:"xl",style:{height:70}},K.createElement(Bt,{googleClientId:l,handleGoogleCredential:d})),!n&&K.createElement(Wd,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement($d,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(la,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(ff,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(lf,{type:"submit"},"Next")))}function _d(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,s]=uf(),l=Dt(f,void 0),i=wt(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(Kd(d)))},[n,a,t]);return K.createElement($,{style:{maxWidth:400},onSubmit:i},K.createElement(sf,{sx:{flexDirection:"column"}},r),K.createElement(Bo,{issues:l}),K.createElement(Jd,{spacing:"xl"},K.createElement(Xd,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:pe(f,"password")})),K.createElement(la,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(ff,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(zd,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(lf,{type:"submit"},"Sign in")))}import{Avatar as Zd,Center as Yd,Group as ec,Stack as oc,Text as cf,Title as tc,UnstyledButton as rc}from"@mantine/core";import{normalizeOperationOutcome as ac}from"@medplum/core";import Be,{useState as nc}from"react";function mf(e){let o=P(),[t,r]=nc();return Be.createElement(oc,null,Be.createElement(Yd,{sx:{flexDirection:"column"}},Be.createElement(je,{size:32}),Be.createElement(tc,{order:3},"Choose profile")),Be.createElement(Bo,{outcome:t}),e.memberships.map(a=>Be.createElement(rc,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(ac(n)))}},Be.createElement(ec,null,Be.createElement(Zd,{radius:"xl"}),Be.createElement("div",{style:{flex:1}},Be.createElement(cf,{size:"sm",weight:500},a.profile?.display),Be.createElement(cf,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as fc,Center as lc,Checkbox as sc,Group as ic,Stack as pf,Title as uc}from"@mantine/core";import Ve from"react";function xf(e){let o=P();return Ve.createElement($,{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(pf,null,Ve.createElement(lc,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(uc,null,"Choose scope")),Ve.createElement(pf,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(sc,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement(ic,{position:"right",mt:"xl"},Ve.createElement(fc,{type:"submit"},"Set scope"))))}import{Alert as dc,Button as cc,Center as mc,Group as pc,Stack as If,TextInput as xc,Title as Ic}from"@mantine/core";import{normalizeErrorString as gc}from"@medplum/core";import Ae,{useState as hc}from"react";function gf(e){let o=P(),[t,r]=hc();return Ae.createElement($,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(gc(n)))}},Ae.createElement(If,null,Ae.createElement(mc,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(Ic,null,"Enter MFA code")),t&&Ae.createElement(dc,{icon:Ae.createElement(ro,{size:16}),title:"Error",color:"red"},t),Ae.createElement(If,null,Ae.createElement(xc,{name:"token",label:"MFA code",required:!0})),Ae.createElement(pc,{position:"right",mt:"xl"},Ae.createElement(cc,{type:"submit"},"Submit code"))))}function cT(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=P(),[i,u]=ia(),[d,c]=ia(!1),[x,y]=ia(),k=sa(A=>{f?f(A):l.processCode(A).then(()=>{r&&r()}).catch(I=>hf({color:"red",message:Cf(I)}))},[l,f,r]),T=sa(A=>{c(!!A.mfaRequired),A.login&&u(A.login),A.memberships&&y(A.memberships),A.code&&(t?y(void 0):k(A.code))},[t,k]),B=sa(A=>{k(A.code)},[k]);return Cc(()=>{o&&!i&&l.get("auth/login/"+o).then(T).catch(A=>hf({color:"red",message:Cf(A)}))},[l,o,i,T]),fo.createElement(Pt,{width:450},(()=>i?d?fo.createElement(gf,{login:i,handleAuthResponse:T}):x?fo.createElement(mf,{login:i,memberships:x,handleAuthResponse:T}):e.projectId==="new"?fo.createElement(Tt,{login:i,handleAuthResponse:T}):e.chooseScopes?fo.createElement(xf,{login:i,scope:e.scope,handleAuthResponse:B}):fo.createElement("div",null,"Success"):fo.createElement(df,{onForgotPassword:a,onRegister:n,handleAuthResponse:T,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}import{getPropertyDisplayName as Nc,tryGetDataType as Hc}from"@medplum/core";import Yo from"react";var Ot=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as yc}from"@mantine/core";import jo from"react";var vc=yc(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 yf(e){let{children:o,compact:t}=e,{classes:r,cx:a}=vc();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function vf(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{ActionIcon as Ac,Box as Fc,CopyButton as Mc,Tooltip as wc}from"@mantine/core";import{formatDateTime as Oc,formatPeriod as Ec,formatTiming as Lc,PropertyType as H}from"@medplum/core";import E from"react";import{formatCodeableConcept as Sc}from"@medplum/core";import Sf from"react";function Ao(e){return Sf.createElement(Sf.Fragment,null,Sc(e.value))}import{formatCoding as bc}from"@medplum/core";import bf from"react";function Pf(e){return bf.createElement(bf.Fragment,null,bc(e.value))}import ua from"react";import Df from"react";function Et(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Df.createElement(Df.Fragment,null,t.join("").trim())}function Tf(e){let o=e.value;return o?ua.createElement(ua.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>ua.createElement(Et,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Pc from"react";function kf(e){return Pc.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Dc}from"@medplum/core";import Bf from"react";function Af(e){return Bf.createElement(Bf.Fragment,null,Dc(e.value))}import{formatQuantity as Tc}from"@medplum/core";import Ff from"react";function _o(e){return Ff.createElement(Ff.Fragment,null,Tc(e.value))}import{formatRange as kc}from"@medplum/core";import Mf from"react";function Lt(e){return Mf.createElement(Mf.Fragment,null,kc(e.value))}import Rt from"react";function wf(e){let o=e.value;return o?Rt.createElement(Rt.Fragment,null,Rt.createElement(_o,{value:o.numerator}),"\xA0/\xA0",Rt.createElement(_o,{value:o.denominator})):null}import{stringify as Bc}from"@medplum/core";import da from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Bc(e.value);return e.link!==!1&&e.value.reference?da.createElement(se,{to:e.value},o):da.createElement(da.Fragment,null,o)}import Fo from"react";function Of(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?Fo.createElement(Fo.Fragment,null,t.map((a,n)=>Fo.createElement("div",{key:`${n}-${t.length}`},Fo.createElement(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Fo.createElement(Fo.Fragment,null)}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Fc,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Mc,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(wc,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Ac,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(Or,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===H.Attachment?E.createElement(Xn,{values:r,maxWidth:e.maxWidth}):E.createElement(Of,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case H.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case H.SystemString:case H.string:return E.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 E.createElement(E.Fragment,null,r);case H.canonical:return E.createElement(lo,{value:{reference:r},link:e.link});case H.dateTime:case H.instant:return E.createElement(E.Fragment,null,Oc(r));case H.markdown:return E.createElement("pre",null,r);case H.Address:return E.createElement(xn,{value:r});case H.Annotation:return E.createElement(E.Fragment,null,r?.text);case H.Attachment:return E.createElement(Oe,{value:r,maxWidth:e.maxWidth});case H.CodeableConcept:return E.createElement(Ao,{value:r});case H.Coding:return E.createElement(Pf,{value:r});case H.ContactDetail:return E.createElement(Tf,{value:r});case H.ContactPoint:return E.createElement(Et,{value:r});case H.HumanName:return E.createElement(Ct,{value:r});case H.Identifier:return E.createElement(kf,{value:r});case H.Money:return E.createElement(Af,{value:r});case H.Period:return E.createElement(E.Fragment,null,Ec(r));case H.Quantity:case H.Duration:return E.createElement(_o,{value:r});case H.Range:return E.createElement(Lt,{value:r});case H.Ratio:return E.createElement(wf,{value:r});case H.Reference:return E.createElement(lo,{value:r,link:e.link});case H.Timing:return E.createElement(E.Fragment,null,Lc(r));case H.Dosage:case H.UsageContext:return E.createElement(Zo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o)throw Error(`Displaying property of type ${e.propertyType} requires element schema`);return E.createElement(Zo,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}import{getTypedPropertyValue as Rc}from"@medplum/core";function ve(e,o){let t=Rc(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Hc(r);return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Yo.createElement("div",null,t.name):Yo.createElement(yf,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Ot.includes(f))return null;let[l,i]=ve(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:Yo.createElement(vf,{key:f,term:Nc(f)},Yo.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as up}from"@mantine/core";import{getPropertyDisplayName as fl,tryGetDataType as dp}from"@medplum/core";import Oo,{useState as cp}from"react";import{Group as Vc,Input as qc}from"@mantine/core";import Nt from"react";function Ht(e){return Nt.createElement(Vc,{noWrap:!0},Nt.createElement("div",null,e.children),Nt.createElement("div",null,Nt.createElement(qc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Gc}from"@mantine/core";import Uc from"react";function Se(e){return Uc.createElement(Gc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:pe(e.outcome,e.htmlFor)},e.children)}import{capitalize as Qc}from"@medplum/core";function et(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",Qc(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as tp,Group as rp,NativeSelect as ap,Textarea as np,TextInput as ya}from"@mantine/core";import{capitalize as fp,PropertyType as L}from"@medplum/core";import G,{useState as lp}from"react";import zc,{useState as Wc}from"react";function Ef(e){let[o,t]=Wc(e.defaultValue);function r(a){let n=Jc(a);t(n),e.onChange&&e.onChange(n)}return zc.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Xc(o),maxSelectedValues:1,onChange:r})}function Xc(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Jc(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import $c,{useState as Kc}from"react";function Vt(e){let[o,t]=Kc(e.defaultValue);function r(a){let n=a[0],f=n&&_c(n);t(f),e.onChange&&e.onChange(f)}return $c.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&jc(o),maxSelectedValues:1,onChange:r})}function jc(e){return{system:e.system,code:e.code,display:e.display}}function _c(e){return{system:e.system,code:e.code,display:e.display}}import{Group as tm,TextInput as rm}from"@mantine/core";import ca,{useRef as am,useState as nm}from"react";import{Group as Zc,NativeSelect as Lf,TextInput as Yc}from"@mantine/core";import qt,{useRef as em,useState as om}from"react";function Gt(e){let[o,t]=om(e.defaultValue),r=em();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return qt.createElement(Zc,{spacing:"xs",grow:!0,noWrap:!0},qt.createElement(Lf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),qt.createElement(Lf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),qt.createElement(Yc,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function Rf(e){let[o,t]=nm(e.defaultValue),r=am();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return ca.createElement(tm,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(rm,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),ca.createElement(Gt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as fm}from"@mantine/core";import lm from"react";import{isValidDate as Nf}from"@medplum/core";function Hf(e){if(!e)return"";let o=new Date(e);return Nf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Vf(e){if(!e)return"";let o=new Date(e);return Nf(o)?o.toISOString():""}function Fe(e){return lm.createElement(fm,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:sm(),defaultValue:Hf(e.defaultValue),autoFocus:e.autoFocus,error:pe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Vf(t))}}})}function sm(){return"datetime-local"}import{JsonInput as im}from"@mantine/core";import{stringify as um}from"@medplum/core";import dm from"react";function qf(e){return dm.createElement(im,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:um(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as cm,NativeSelect as mm,TextInput as Ut}from"@mantine/core";import Mo,{useRef as pm,useState as xm}from"react";function Gf(e){let[o,t]=xm(e.defaultValue),r=pm();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Mo.createElement(cm,{spacing:"xs",grow:!0,noWrap:!0},Mo.createElement(mm,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Mo.createElement(Ut,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Mo.createElement(Ut,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Mo.createElement(Ut,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Mo.createElement(Ut,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Im,TextInput as Uf}from"@mantine/core";import ma,{useState as gm}from"react";function Qf(e){let[o,t]=gm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ma.createElement(Im,{spacing:"xs",grow:!0,noWrap:!0},ma.createElement(Uf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ma.createElement(Uf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as hm,TextInput as Cm}from"@mantine/core";import pa,{useCallback as xa,useState as ym}from"react";var vm=["USD","EUR","CAD","GBP","AUD"];function zf(e){let{onChange:o}=e,[t,r]=ym(e.defaultValue),a=xa(l=>{r(l),o&&o(l)},[o]),n=xa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=xa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=pa.createElement(hm,{defaultValue:t?.currency,data:vm,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return pa.createElement(Cm,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:pa.createElement(Er,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as Sm}from"@mantine/core";import Ia,{useState as bm}from"react";function Wf(e){let[o,t]=bm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ia.createElement(Sm,{spacing:"xs",grow:!0,noWrap:!0},Ia.createElement(Fe,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Ia.createElement(Fe,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Pm,NativeSelect as Dm,TextInput as Xf}from"@mantine/core";import Qt,{useState as Tm}from"react";function Pe(e){let[o,t]=Tm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qt.createElement(Pm,{spacing:"xs",grow:!0,noWrap:!0},Qt.createElement(Dm,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Qt.createElement(Xf,{id:e.name,name:e.name,required:e.required,"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:km(a.currentTarget.value)})}}),Qt.createElement(Xf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function km(e){if(e)return parseFloat(e)}import{Group as Bm}from"@mantine/core";import ga,{useState as Am}from"react";function ot(e){let[o,t]=Am(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ga.createElement(Bm,{spacing:"xs",grow:!0,noWrap:!0},ga.createElement(Pe,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ga.createElement(Pe,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Fm}from"@mantine/core";import ha,{useState as Mm}from"react";function Jf(e){let[o,t]=Mm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ha.createElement(Fm,{spacing:"xs",grow:!0,noWrap:!0},ha.createElement(Pe,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ha.createElement(Pe,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Gm,NativeSelect as Um}from"@mantine/core";import{createReference as Qm}from"@medplum/core";import Wt,{useState as _f}from"react";import{Group as wm,Text as $f}from"@mantine/core";import{getDisplayString as Om,getReferenceString as jf}from"@medplum/core";import so,{forwardRef as Em,useCallback as Kf,useState as Lm}from"react";var Rm={Observation:"code",User:"email:contains"},Nm=["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 Hm(e){return{value:jf(e),label:Om(e),resource:e}}function zt(e){let o=P(),t=e.resourceType,[r,a]=Lm(),n=X(e.defaultValue,a),f=e.onChange,s=Kf(async(i,u)=>{let d=qm(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Kf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(So,{name:e.name,required:e.required,itemComponent:Vm,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:jf,toOption:Hm,loadOptions:s,onChange:l,clearable:!0})}var Vm=Em(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(wm,{noWrap:!0},so.createElement(he,{value:o}),so.createElement("div",null,so.createElement($f,null,e),so.createElement($f,{size:"xs",color:"dimmed"},o.birthDate)))));function qm(e){return Rm[e]??(Nm.includes(e)?"name":"_id")}function wo(e){let o=zm(e.targetTypes),t=Wm(e.defaultValue,o),[r,a]=_f(e.defaultValue),[n,f]=_f(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Wt.createElement(Gm,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Wt.createElement(Um,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:l=>f(l.currentTarget.value),data:o}),!o&&Wt.createElement(Po,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Wt.createElement(zt,{resourceType:n,name:e.name+"-id",required:e.required,placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?Qm(l):void 0)}}))}function zm(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Wm(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as Zf}from"@mantine/core";import Ie,{useRef as Xm,useState as Jm}from"react";function Yf(e){let[o,t]=Jm(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Xm();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(qe,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Zf,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=[...r.current];l.splice(f,1),a(l)}},Ie.createElement(We,null))))),Ie.createElement("tr",null,Ie.createElement("td",null),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Zf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},Ie.createElement(po,null))))))}import{Button as tl,Chip as el,Group as Xt,Modal as $m,NativeSelect as Km,Stack as jm,Switch as _m,TextInput as Zm}from"@mantine/core";import{formatTiming as Ym}from"@medplum/core";import j,{useRef as rl,useState as Ca}from"react";var ep=["sun","mon","tue","wed","thu","fri","sat"];function al(e){let[o,t]=Ca(e.defaultValue),[r,a]=Ca(!1),n=rl();return n.current=o,j.createElement(j.Fragment,null,j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement("span",null,Ym(n.current)||"No repeat"),j.createElement(tl,{onClick:()=>a(!0)},"Edit")),j.createElement(op,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var ol={repeat:{period:1,periodUnit:"d"}};function op(e){let[o,t]=Ca(e.defaultValue||ol),r=rl();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return j.createElement($m,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},j.createElement(jm,null,j.createElement(Se,{title:"Starts on",htmlFor:"timing-dialog-start"},j.createElement(Fe,{name:"timing-dialog-start",onChange:i=>a(i)})),j.createElement(_m,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?ol.repeat:void 0)}),o.repeat&&j.createElement(j.Fragment,null,j.createElement(Se,{title:"Repeat every",htmlFor:"timing-dialog-period"},j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(Zm,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),j.createElement(Km,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>s(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&j.createElement(Se,{title:"Repeat on"},j.createElement(el.Group,{multiple:!0,onChange:l},j.createElement(Xt,{position:"apart",mt:"md",spacing:"xs"},ep.map(i=>j.createElement(el,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),j.createElement(Xt,{position:"right"},j.createElement(tl,{onClick:()=>e.onOk(o)},"OK"))))}function qe(e){let o=e.property,t=e.defaultPropertyType??o.type[0].code,r=e.name,a=e.defaultValue;if(o.max>1&&!e.arrayElement)return t===L.Attachment?G.createElement($n,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Yf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(sp,{elementDefinitionTypes:n,...e}):G.createElement(nl,{elementDefinitionType:n[0],...e})}function sp(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=lp(t);return G.createElement(rp,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(ap,{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(nl,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",fp(r.code)))}}))}function nl(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(ya,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.date:return G.createElement(ya,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Fe,{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(ya,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(St,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(tp,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(np,{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(Cn,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(yn,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(bt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(Ef,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(Vt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Rf,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Gt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(qf,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(Gf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(Qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(zf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(Wf,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(Pe,{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(Jf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(wo,{name:r,defaultValue:a,targetTypes:ip(o),onChange:e.onChange});case L.Timing:return G.createElement(al,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(tt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(tt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function ip(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=cp(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=dp(a);if(!n)return Oo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Oo.createElement(up,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Ot.includes(s)||!l.type)return null;let[i,u]=ve(f,s),d=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Oo.createElement(Ht,{key:s,title:fl(s),description:l.description,htmlFor:s},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}})):Oo.createElement(Se,{key:s,title:fl(s),description:l.description,withAsterisk:d,htmlFor:s,outcome:e.outcome},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}}))}))}import{Button as va,createStyles as mp,Group as sl}from"@mantine/core";import oe,{useMemo as pp,useState as xp}from"react";function ll(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Jt(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var Ip=mp(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 il(e){let{classes:o}=Ip(),{onChangeMonth:t,onClick:r}=e,[a,n]=xp(Jt);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=pp(()=>gp(a,e.slots),[a,e.slots]);return oe.createElement("div",null,oe.createElement(sl,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},oe.createElement("p",{style:{flex:1}},ll(a)),oe.createElement(sl,{position:"right",spacing:"xs"},oe.createElement(va,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),oe.createElement(va,{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,s.map((l,i)=>oe.createElement("tr",{key:"week-"+i},l.map((u,d)=>oe.createElement("td",{key:"day-"+d},u&&oe.createElement(va,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function gp(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:hp(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 hp(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 vx from"react";import{ActionIcon as kl,Center as nx,createStyles as fx,Group as lx,Loader as sx,Menu as Ge,ScrollArea as ix,TextInput as ux}from"@mantine/core";import{showNotification as dx,updateNotification as jt}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as Bl}from"@medplum/core";import D,{useCallback as _t,useEffect as cx,useRef as Al,useState as Fl}from"react";import{createStyles as wp,Group as Kt,List as cl,Stack as ml,Text as De,Title as pl}from"@mantine/core";import{capitalize as Op,formatCodeableConcept as Ep,formatDateTime as Pa,formatObservationValue as Lp,isReference as Rp}from"@medplum/core";import h,{useEffect as Np,useState as Hp}from"react";import{Blockquote as Cp,createStyles as yp,Stack as vp}from"@mantine/core";import ul from"react";var Sp=yp(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function Sa({value:e}){let{classes:o}=Sp();return e?ul.createElement(vp,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&ul.createElement(Cp,{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 Bp}from"@mantine/core";import ba from"react";import{Text as bp}from"@mantine/core";import{getDisplayString as Pp,isOk as Dp,normalizeErrorString as Tp}from"@medplum/core";import dl,{useState as kp}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=kp(),f=X(o,n),s;if(a&&!Dp(a))s=`[${Tp(a)}]`;else if(f)s=Pp(f);else return null;return t?dl.createElement(se,{to:o,...r},s):dl.createElement(bp,{component:"span",...r},s)}function _e(e){return ba.createElement(Bp,{spacing:"xs"},ba.createElement(he,{size:24,radius:12,value:e.value,link:e.link}),ba.createElement(Ee,{value:e.value,link:e.link}))}import{Badge as Ap}from"@mantine/core";import Fp from"react";var Mp={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function $t(e){return Fp.createElement(Ap,{color:Mp[e.status]},e.status)}var xl=wp(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));Da.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function Da(e){let o=P(),t=X(e.value),[r,a]=Hp();if(Np(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(ml,null,h.createElement(pl,null,"Diagnostic Report"),h.createElement(Vp,{value:t}),r&&!e.hideSpecimenInfo&&qp(r),t.result&&h.createElement(Gp,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(Sa,{value:n}))}function Vp({value:e}){return h.createElement(Kt,{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(_e,{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(_e,{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(_e,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(De,null,Pa(e.issued))),e.status&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(De,null,Op(e.status))))}function qp(e){return h.createElement(ml,{spacing:"xs"},h.createElement(pl,{order:2,size:"h6"},"Specimens"),h.createElement(cl,{type:"ordered"},e?.map(o=>h.createElement(cl.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Kt,{spacing:20},h.createElement(Kt,{spacing:5},h.createElement(De,{fw:500},"Collected:")," ",Pa(o.collection?.collectedDateTime)),h.createElement(Kt,{spacing:5},h.createElement(De,{fw:500},"Received:")," ",Pa(o.receivedTime)))))))}function Gp(e){let{classes:o}=xl();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(Il,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Il(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(Up,{key:`obs-${Rp(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Up(e){let{classes:o,cx:t}=xl(),r=X(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Wp(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(se,{to:r},h.createElement(Ao,{value:r.code}))),h.createElement("td",null,h.createElement(Qp,{value:r})),h.createElement("td",null,h.createElement(zp,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Ao,{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-${Ep(f)}`},h.createElement(Ao,{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($t,{status:r.status}))),r.hasMember&&h.createElement(Il,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(Sa,{value:r.note}))))}function Qp(e){let o=e.value;return h.createElement(h.Fragment,null,Lp(o))}function zp(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(Lt,{value:o}):null}function Wp(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Xp}from"@mantine/core";import{getDataType as Jp,getPropertyDisplayName as $p,stringify as gl,toTypedValue as hl}from"@medplum/core";import ue,{useEffect as Kp,useState as jp}from"react";var _p=Xp(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 yl(e){let{classes:o}=_p(),t=P(),[r,a]=jp(!1);if(Kp(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=Jp(e.original.resourceType);return ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.elements).map(([f,s])=>{if(f==="id"||f==="meta")return null;let[l,i]=ve(hl(e.original),f),[u,d]=ve(hl(e.revised),f);return Cl(l)&&Cl(u)||gl(l)===gl(u)?null:ue.createElement("tr",{key:f},ue.createElement("td",null,$p(f)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:s,propertyType:d,value:u,ignoreMissingValues:!0})))})))}function Cl(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Zp,{useEffect as Yp,useState as ex}from"react";function Ta(e){let o=P(),t=X(e.value),[r,a]=ex(!1);return Yp(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:Zp.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as ox,Group as tx,Menu as vl,Text as ka}from"@mantine/core";import{formatDateTime as rx,getReferenceString as ax}from"@medplum/core";import re from"react";function Sl(e){return re.createElement(Ke,null,e.children)}function Ze(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return re.createElement(ko,{"data-testid":"timeline-item",fill:!0,...n},re.createElement(tx,{position:"apart",spacing:8,mx:"xs",my:"sm"},re.createElement(he,{value:f,link:!0,size:"md"}),re.createElement("div",{style:{flex:1}},re.createElement(ka,{size:"sm"},re.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),re.createElement(ka,{size:"xs"},re.createElement(se,{color:"dimmed",to:e.resource},rx(s)),re.createElement(ka,{component:"span",color:"dimmed",mx:8},"\xB7"),re.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&re.createElement(vl,{position:"bottom-end",shadow:"md",width:200},re.createElement(vl.Target,null,re.createElement(ox,{radius:"xl","aria-label":`Actions for ${ax(e.resource)}`},re.createElement(Lr,null))),a)),re.createElement(ho,null,r&&re.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&re.createElement(re.Fragment,null,e.children)))}function Dl(e,o){e.sort((t,r)=>{let a=bl(t,o),n=bl(r,o);return a>n?1:a<n?-1:Pl(t,o)-Pl(r,o)})}function bl(e,o){if(!Tl(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Pl(e,o){if(!Tl(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 Tl(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var mx=fx(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ye(e){let o=P(),t=Qe(),r=o.getProfile(),a=Al(null),n=X(e.value),[f,s]=Fl(),[l,i]=Fl([]),u=e.loadTimelineResources,d=Al(l);d.current=l;let c=_t(C=>{Dl(C,n),C.reverse(),i(C)},[n]),x=_t(C=>{let V=[];for(let we of C){if(we.status!=="fulfilled")continue;let v=we.value;if(v.type==="history"&&s(v),v.entry)for(let z of v.entry)V.push(z.resource)}c(V)},[c]),y=_t(C=>c([...d.current,C]),[c]),k=_t(()=>{let C,V;"resourceType"in e.value?(C=e.value.resourceType,V=e.value.id):[C,V]=e.value.reference?.split("/"),u(o,C,V).then(x).catch(console.log)},[o,e.value,u,x]);cx(()=>k(),[k]);function T(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(V=>y(V)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(V=>y(V)).then(()=>jt({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement(zo,{size:16}),autoClose:2e3})).catch(V=>jt({id:"upload-notification",color:"red",title:"Upload error",message:Bl(V),icon:D.createElement(It,{size:16}),autoClose:2e3}))}function A(C,V){return o.updateResource({...C,priority:V})}function I(C){A(C,"stat").then(k).catch(console.log)}function O(C){A(C,"routine").then(k).catch(console.log)}function g(C){t(`/${C.resourceType}/${C.id}`)}function M(C){t(`/${C.resourceType}/${C.id}/edit`)}function Y(C){t(`/${C.resourceType}/${C.id}/delete`)}function ne(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Le(){dx({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function oo(C){jt({id:"upload-notification",loading:!0,title:"Uploading...",message:yx(C),autoClose:!1,withCloseButton:!1})}function me(C){jt({id:"upload-notification",color:"red",title:"Upload error",message:Bl(C),icon:D.createElement(It,{size:16}),autoClose:2e3})}return n?D.createElement(Sl,null,e.createCommunication&&D.createElement(ko,null,D.createElement($,{testid:"timeline-form",onSubmit:C=>{T(C.text);let V=a.current;V&&(V.value="",V.focus())}},D.createElement(lx,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(he,{value:r}),D.createElement(ux,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement(kl,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(Gr,{size:16})),D.createElement(Do,{onUpload:B,onUploadStart:Le,onUploadProgress:oo,onUploadError:me},C=>D.createElement(kl,{...C,radius:"xl",color:"blue",variant:"filled"},D.createElement(Wo,{size:16})))))),l.map(C=>{if(!C)return null;let V=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return D.createElement(px,{key:V,history:f,resource:C,onDetails:ne});switch(C.resourceType){case"AuditEvent":return D.createElement(hx,{key:V,resource:C,onDetails:g});case"Communication":return D.createElement(Ix,{key:V,resource:C,onPin:C.priority!=="stat"?I:void 0,onUnpin:C.priority==="stat"?O:void 0,onDetails:g,onEdit:M,onDelete:Y});case"DiagnosticReport":return D.createElement(Cx,{key:V,resource:C,onDetails:g,onEdit:M,onDelete:Y});case"Media":return D.createElement(gx,{key:V,resource:C,onDetails:g,onEdit:M,onDelete:Y});default:return D.createElement(Ze,{key:V,resource:C,padding:!0},D.createElement(Ta,{value:C,ignoreMissingValues:!0}))}})):D.createElement(nx,{style:{width:"100%",height:"100%"}},D.createElement(sx,null))}function Eo(e){return D.createElement(Ge.Dropdown,null,D.createElement(Ge.Label,null,"Resource"),e.onPin&&D.createElement(Ge.Item,{icon:D.createElement(Ur,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(Ge.Item,{icon:D.createElement(Qr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(Ge.Item,{icon:D.createElement(Vr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&D.createElement(Ge.Item,{icon:D.createElement(Rr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&D.createElement(D.Fragment,null,D.createElement(Ge.Divider,null),D.createElement(Ge.Label,null,"Danger zone"),D.createElement(Ge.Item,{color:"red",icon:D.createElement($o,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function px(e){let o=xx(e.history,e.resource);return o?D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(yl,{original:o,revised:e.resource})):D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("h3",null,"Created"),D.createElement(Ta,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function xx(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 Ix(e){let{classes:o}=mx(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return D.createElement(Ze,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("p",null,e.resource.payload?.[0]?.contentString))}function gx(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return D.createElement(Ze,{resource:e.resource,padding:!!t,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Oe,{value:e.resource.content}))}function hx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(ix,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function Cx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Da,{value:e.resource}))}function yx(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${Ba(e.loaded)} / ${Ba(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${Ba(e.loaded)}`}function Ba(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function hM(e){return vx.createElement(Ye,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import{createReference as Zt}from"@medplum/core";import Sx from"react";function DM(e){return Sx.createElement(Ye,{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 MI,Loader as wI,Table as OI}from"@mantine/core";import{normalizeOperationOutcome as EI}from"@medplum/core";import ae,{useEffect as ss,useRef as is,useState as fr}from"react";import{evalFhirPath as bx}from"@medplum/core";import Px from"react";function Ml(e){let o;try{o=bx(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 Px.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as II,Button as Ho,Center as ar,createStyles as gI,Group as nr,Loader as hI,Menu as ns,Pagination as CI,Table as yI,Text as Na,UnstyledButton as vI}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ga,formatSearchQuery as SI}from"@medplum/core";import S,{useCallback as fs,useEffect as ls,useRef as bI,useState as Ha}from"react";import{Box as Dx,Button as Tx,Modal as kx,Text as Bx}from"@mantine/core";import Lo from"react";function Ol(e){return Lo.createElement(kx,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Lo.createElement(Dx,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Lo.createElement(wl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Lo.createElement(wl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Lo.createElement(Bx,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function wl(e){return Lo.createElement(Tx,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as Hx}from"@mantine/core";import{getDataType as Vx,getSearchParameters as qx,stringify as Gx}from"@medplum/core";import J,{useEffect as Ux,useRef as $l,useState as Qx}from"react";import{capitalize as Ax,DEFAULT_SEARCH_COUNT as Fx,evalFhirPathTyped as Mx,formatDateTime as wx,Operator as w}from"@medplum/core";import Yt from"react";var Ox={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]},Ex={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function at(e,o){return{...e,filters:o,offset:0,name:void 0}}function GM(e){return at(e,[])}function er(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function Ro(e,o,t,r,a){a&&(e=er(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function UM(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 Ll(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 Aa(e,o,-1)}function Nl(e,o){return Aa(e,o,0)}function Hl(e,o){return Aa(e,o,1)}function Aa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Ma(e,o,r,a)}function Vl(e,o){return Fa(e,o,-1)}function ql(e,o){return Fa(e,o,0)}function Gl(e,o){return Fa(e,o,1)}function Fa(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Ma(e,o,r,a)}function Ul(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ma(e,o,t,new Date)}function Ma(e,o,t,r){return e=er(e,o),e=El(e,o,w.GREATER_THAN_OR_EQUALS,t),e=El(e,o,w.LESS_THAN_OR_EQUALS,r),e}function El(e,o,t,r){return Ro(e,o,t,r.toISOString())}function wa(e,o,t=!0){return Ro(e,o,w.MISSING,t.toString())}function Lx(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Ql(e,o){let t=e.count??Fx,r=(o-1)*t;return Lx(e,r)}function Oa(e,o,t){return o===zl(e)&&t!==void 0&&t===Wl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function QM(e,o){let t=!1;return zl(e)===o&&(t=!Wl(e)),Oa(e,o,t)}function zl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function Wl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Xl(e){return Ox[e.type]}function nt(e){return Ex[e]??""}function Ce(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"||o==="Id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(Ax).join(" "))}function Jl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?wx(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Rx(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Nx(e,o.searchParams[0]):null}function Rx(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=ve({type:e.resourceType,value:e},t);return r?Yt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Nx(e,o){let t=Mx(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Yt.createElement(Yt.Fragment,null,t.map((r,a)=>Yt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Kl(e){let[o,t]=Qx({search:JSON.parse(Gx(e.search))}),r=$l(null),a=$l(null);Ux(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function s(I){I.key==="Enter"&&u()}function l(){u()}function i(){let I=o.search.fields??[],O=r.current?.value;if(O){let g=[...I,O];t({search:{...o.search,fields:g}})}}function u(){let I=o.search.fields??[],O=a.current?.value;if(O){let g=[...I];g.splice(g.indexOf(O),1),t({search:{...o.search,fields:g}})}}function d(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M<=0||(x(g,M,M-1),t({search:{...o.search,fields:g}}))}function c(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M>=g.length-1||(x(g,M,M+1),t({search:{...o.search,fields:g}}))}function x(I,O,g){let M=I[O];I[O]=I[g],I[g]=M}if(!e.visible)return null;let y=e.search.resourceType,k=Vx(y),T=qx(y),B=o.search.fields??[],A=zx(k,T).filter(I=>!B.includes(I)).sort((I,O)=>I.localeCompare(O));return J.createElement(Hx,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:I=>n(I),onDoubleClick:()=>f(),"data-testid":"available"},A.map(I=>J.createElement("option",{key:I,value:I},Ce(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>s(I),onDoubleClick:()=>l(),"data-testid":"selected"},B.map(I=>J.createElement("option",{key:I,value:I},Ce(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function zx(e,o){let t=[],r=new Set,a=new Set;for(let n of Object.keys(e.elements))t.push(n),r.add(n.toLowerCase()),a.add(Ce(n));if(o)for(let n of Object.keys(o)){let f=Ce(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(Ce(n)))}return t}import{Button as st,Group as Zx,Modal as Yx,NativeSelect as _l}from"@mantine/core";import{getSearchParameters as eI,stringify as Zl}from"@medplum/core";import R,{useEffect as oI,useRef as es,useState as La}from"react";import{formatDateTime as Wx,getSearchParameterDetails as Xx,globalSchema as Jx,Operator as jl,SearchParameterType as $x}from"@medplum/core";import lt from"react";function or(e){let{resourceType:o,filter:t}=e,r=Jx.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===jl.EQUALS||t.operator===jl.NOT_EQUALS))return lt.createElement(Ee,{value:{reference:t.value}});let a=Xx(o,r);if(t.code==="_lastUpdated"||a.type===$x.DATETIME)return lt.createElement(lt.Fragment,null,Wx(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Kx,TextInput as Ea}from"@mantine/core";import{getSearchParameterDetails as jx,SearchParameterType as No}from"@medplum/core";import io from"react";function tr(e){let o=jx(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case No.REFERENCE:return io.createElement(wo,{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 No.BOOLEAN:return io.createElement(Kx,{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 No.DATE:return io.createElement(Ea,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case No.DATETIME:return io.createElement(Fe,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case No.NUMBER:return io.createElement(Ea,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case No.QUANTITY:return io.createElement(Pe,{name:t,defaultValue:_x(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(Ea,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function _x(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function os(e){let[o,t]=La(JSON.parse(Zl(e.search))),[r,a]=La(-1),n=es(o);n.current=o,oI(()=>{t(JSON.parse(Zl(e.search)))},[e.search]);function f(u){t(Ro(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=eI(s)??{},i=o.filters||[];return R.createElement(Yx,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(Yl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let x=[...i];x[d]=c,t(at(n.current,x)),a(-1)},onCancel:()=>a(-1)}):R.createElement(tI,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(Ll(n.current,d))})),R.createElement(Yl,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),R.createElement(Zx,{position:"right",mt:"xl"},R.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function tI(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,Ce(o.code)),R.createElement("td",null,nt(o.operator)),R.createElement("td",null,R.createElement(or,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Yl(e){let[o,t]=La(e.defaultValue??{}),r=es(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let s=e.searchParams[o.code],l=s&&Xl(s);return R.createElement("tr",null,R.createElement("td",null,R.createElement(_l,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:Ce(i)}))]})),R.createElement("td",null,l&&R.createElement(_l,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:nt(i)}))]})),R.createElement("td",null,s&&o.operator&&R.createElement(tr,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&R.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as rI,Grid as Ra,Modal as aI}from"@mantine/core";import uo,{useState as nI}from"react";function ts(e){let[o,t]=nI(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(aI,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement($,{onSubmit:r},uo.createElement(Ra,null,uo.createElement(Ra.Col,{span:10},uo.createElement(tr,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Ra.Col,{span:2},uo.createElement(rI,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function rs(e){if(!e.searchParams)return null;function o(n,f){a(Oa(e.search,n.code,f))}function t(n){a(er(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(fI,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(F.Dropdown,null,e.searchParams.map(n=>m.createElement(F.Item,{key:n.code},Ce(n.code))))}function fI(e){switch(e.searchParam.type){case"date":return m.createElement(lI,{...e});case"number":case"quantity":return m.createElement(sI,{...e});case"reference":return m.createElement(iI,{...e});case"string":case"token":case"uri":return m.createElement(uI,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function lI(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(kr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Hl(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Nl(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Rl(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Gl(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ql(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Vl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Ul(e.search,t))},"Year to date"),m.createElement(rr,{...e}))}function sI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(rr,{...e}))}function iI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(rr,{...e}))}function uI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ar,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(Br,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(rr,{...e}))}function rr(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Dr,{size:14}),onClick:()=>e.onChange(wa(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(Pr,{size:14}),onClick:()=>e.onChange(wa(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(jr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as dI,getSearchParameter as cI,getSearchParameterDetails as mI,getSearchParameters as pI}from"@medplum/core";function as(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(xI(o,r));return t}function xI(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=dI(e,o),r=cI(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=pI(e),n;if(a){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(a).filter(s=>s.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=mI(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var Va=class extends Event{constructor(t){super("change");this.definition=t}},qa=class extends Event{constructor(t){super("load");this.response=t}},co=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},PI=gI(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 DI(e){let{classes:o}=PI(),t=P(),[r,a]=Ha(!1),[n,f]=Ha(),{search:s,onLoad:l}=e,[i,u]=Ha({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=bI(i);d.current=i;let c=s.total??"accurate",x=fs(v=>{f(void 0),t.search(s.resourceType,SI({...s,total:c,fields:void 0}),v).then(z=>{u({...d.current,searchResponse:z}),l&&l(new qa(z))}).catch(z=>{u({...d.current,searchResponse:void 0}),f(z)})},[t,s,c,l]),y=fs(()=>{u({...d.current,searchResponse:void 0}),x({cache:"reload"})},[x]);ls(()=>{x()},[x]);function k(v,z){v.stopPropagation();let fe=v.target.checked,te={...d.current.selected};fe?te[z]=!0:delete te[z],u({...d.current,selected:te})}function T(v){v.stopPropagation();let Re=v.target.checked,fe={},te=d.current.searchResponse;Re&&te?.entry&&te.entry.forEach(be=>{be.resource?.id&&(fe[be.resource.id]=!0)}),u({...d.current,selected:fe})}function B(){let v=d.current;if(!v.searchResponse?.entry||v.searchResponse.entry.length===0)return!1;for(let z of v.searchResponse.entry)if(z.resource?.id&&!v.selected[z.resource.id])return!1;return!0}function A(v){e.onChange&&e.onChange(new Va(v))}function I(v,z){if(yt(v.target)||v.button===2)return;N(v);let Re=v.button===1||v.ctrlKey||v.metaKey;!Re&&e.onClick&&e.onClick(new co(z,v)),Re&&e.onAuxClick&&e.onAuxClick(new co(z,v))}function O(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(ls(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return S.createElement(ar,{style:{width:"100%",height:"100%"}},S.createElement(hI,null));let g=e.checkboxesEnabled,M=as(s),Y=s.resourceType,ne=i.searchResponse,oo=ne?.entry?.map(v=>v.resource),me="subtle",C="gray",V=16,we=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(nr,{position:"apart",mb:"xl"},S.createElement(nr,{spacing:2},S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(wr,{size:V}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Hr,{size:V}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Nr,{size:V}),onClick:e.onNew},"New..."),!we&&O()&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Kr,{size:V}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!we&&e.onDelete&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement($o,{size:V}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!we&&e.onBulk&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Tr,{size:V}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(nr,{spacing:2},ne&&S.createElement(Na,{size:"xs",color:"dimmed"},AI(s,ne.total),"-",FI(s,ne.total)," of"," ",`${c==="estimate"?"~":""}${ne.total?.toLocaleString()}`),S.createElement(II,{title:"Refresh",onClick:y},S.createElement(Wr,{size:"1.125rem"})))),S.createElement(yI,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,g&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:v=>T(v)})),M.map(v=>S.createElement("th",{key:v.name},S.createElement(ns,{shadow:"md",width:240,position:"bottom-end"},S.createElement(ns.Target,null,S.createElement(vI,{className:o.control},S.createElement(nr,{position:"apart",noWrap:!0},S.createElement(Na,{weight:500,size:"sm"},Ce(v.name)),S.createElement(ar,{className:o.icon},S.createElement(vr,{size:14,stroke:1.5}))))),S.createElement(rs,{search:e.search,searchParams:v.searchParams,onPrompt:(z,Re)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:z,filterDialogFilter:Re})},onChange:z=>{A(z)}}))))),!e.hideFilters&&S.createElement("tr",null,g&&S.createElement("th",null),M.map(v=>S.createElement("th",{key:v.name},v.searchParams&&S.createElement(TI,{resourceType:Y,searchParams:v.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,oo?.map(v=>v&&S.createElement("tr",{key:v.id,className:o.tr,"data-testid":"search-control-row",onClick:z=>I(z,v),onAuxClick:z=>I(z,v)},g&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${v.id}`,checked:!!i.selected[v.id],onChange:z=>k(z,v.id)})),M.map(z=>S.createElement("td",{key:z.name},Jl(v,z))))))),oo?.length===0&&S.createElement(Ke,null,S.createElement(ar,{style:{height:150}},S.createElement(Na,{size:"xl",color:"dimmed"},"No results"))),ne?.total!==void 0&&ne.total>0&&S.createElement(ar,{m:"md",p:"md"},S.createElement(CI,{value:kI(s),total:BI(s,ne.total),onChange:v=>A(Ql(s,v)),getControlProps:v=>{switch(v){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(Kl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:v=>{A(v),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),S.createElement(os,{search:e.search,visible:d.current.filterEditorVisible,onOk:v=>{A(v),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),S.createElement(Ol,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),S.createElement(ts,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?Ce(i.filterDialogSearchParam.code):"",resourceType:Y,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:v=>{A(Ro(e.search,v.code,v.operator,v.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var eO=S.memo(DI);function TI(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},nt(t.operator),"\xA0",S.createElement(or,{resourceType:e.resourceType,filter:t}))))}function kI(e){return Math.floor((e.offset??0)/(e.count??Ga))+1}function BI(e,o){let t=e.count??Ga;return Math.ceil(o/t)}function AI(e,o){return Math.min(o,(e.offset??0)+1)}function FI(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ga))}function LI(e){let o=P(),[t,r]=fr(!1),[a,n]=fr(),{query:f,fields:s}=e,[l,i]=fr(),[u,d]=fr({}),c=is();c.current=l;let x=is({});x.current=u,ss(()=>{n(void 0),o.graphql(f).then(i).catch(I=>n(EI(I)))},[o,f]);function y(I,O){I.stopPropagation();let M=I.target.checked,Y={...x.current};M?Y[O]=!0:delete Y[O],d(Y)}function k(I){I.stopPropagation();let g=I.target.checked,M={},Y=c.current?.data.ResourceList;g&&Y&&Y.forEach(ne=>{ne.id&&(M[ne.id]=!0)}),d(M)}function T(){let I=c.current?.data.ResourceList;if(!I||I.length===0)return!1;for(let O of I)if(O.id&&!x.current[O.id])return!1;return!0}function B(I,O){yt(I.target)||(N(I),I.button!==1&&e.onClick&&e.onClick(new co(O,I)),I.button===1&&e.onAuxClick&&e.onAuxClick(new co(O,I)))}if(ss(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return ae.createElement(wI,null);let A=e.checkboxesEnabled;return ae.createElement("div",{onContextMenu:I=>N(I),"data-testid":"search-control"},ae.createElement(OI,null,ae.createElement("thead",null,ae.createElement("tr",null,A&&ae.createElement("th",null,ae.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:I=>k(I)})),s.map(I=>ae.createElement("th",{key:I.name},I.name)))),ae.createElement("tbody",null,l?.data.ResourceList.map(I=>I&&ae.createElement("tr",{key:I.id,"data-testid":"search-control-row",onClick:O=>B(O,I),onAuxClick:O=>B(O,I)},A&&ae.createElement("td",null,ae.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${I.id}`,checked:!!u[I.id],onChange:O=>y(O,I.id)})),s.map(O=>ae.createElement("td",{key:O.name},ae.createElement(Ml,{propertyType:O.propertyType,path:O.fhirPath,resource:I}))))))),l?.data.ResourceList.length===0&&ae.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ae.createElement("div",{"data-testid":"search-error"},ae.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ae.createElement(MI,{onClick:()=>e.onBulk(Object.keys(x.current))},"Bulk..."))}var iO=ae.memo(LI);import{createReference as lr}from"@medplum/core";import RI,{useCallback as NI}from"react";function IO(e){let o=NI((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 RI.createElement(Ye,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:lr(t),sender:lr(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:lr(t),operator:lr(r),issued:new Date().toISOString(),content:a})})}import{Anchor as ds,Button as HI,createStyles as VI,NativeSelect as qI,Stack as GI,TextInput as Qa}from"@mantine/core";import{getReferenceString as UI}from"@medplum/core";import q,{useEffect as us,useRef as cs,useState as it}from"react";var ms=VI(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 wO(e){let o=P(),t=X(e.value),[r,a]=it(!1),[n,f]=it(),[s,l]=it(),[i,u]=it();function d(){l(void 0)}function c(){f(void 0)}let x=cs();if(x.current=i,us(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),us(()=>(u($I(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(k,T){u({...x.current,[k]:T})}return q.createElement("div",null,q.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Qa,{label:"Plan Title",defaultValue:i.title,onChange:k=>y("title",k.currentTarget.value)}),q.createElement(ps,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:k=>y("action",k)}),q.createElement(HI,{type:"submit"},"Save")))}function ps(e){let{classes:o}=ms(),t=cs();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(QI,{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(ds,{href:"#",onClick:f=>{N(f),a({id:Is()})}},"Add action")))}function QI(e){let{classes:o,cx:t}=ms(),{action:r}=e,a=JI(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){N(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?q.createElement(WI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(zI,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(ds,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var za={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function zI(e){let{action:o,actionType:t}=e,[r,a]=xs(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(xe,{property:za,propertyType:a,value:r})))}function WI(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(GI,{spacing:"xl"},q.createElement(Qa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Qa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(qI,{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(ps,{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(sr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(sr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(sr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(sr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Se,{title:"Timing",description:"When the action should take place."},q.createElement(XI,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function sr(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(zt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:UI(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function XI(e){let o=e.action,t="timing",[r,a]=xs(o);return q.createElement(qe,{property:za,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,za,n))}})}function JI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function xs(e){return ve({type:"PlanDefinitionAction",value:e},"timing")}var Ua=1;function Is(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ua=Math.max(Ua,o+1))}return e}return"id-"+Ua++}function $I(e){return{...e,action:gs(e.action)}}function gs(e){if(e)return e.map(o=>({...o,id:Is(o.id),action:gs(o.action)}))}import{Anchor as Te,Box as _a,Button as xg,createStyles as Ig,Group as gg,NativeSelect as hg,Space as Cg,Textarea as yg,TextInput as Za,Title as vg}from"@mantine/core";import{getElementDefinition as Sg,isResource as bg}from"@medplum/core";import b,{useEffect as ks,useRef as Pg,useState as mr}from"react";import{Checkbox as eg,Group as og,MultiSelect as tg,NativeSelect as rg,Radio as bs,Textarea as ag,TextInput as ut}from"@mantine/core";import{capitalize as Ja,deepEquals as ng,formatCoding as $a,getElementDefinition as fg,getTypedPropertyValue as Ue,stringify as Ps}from"@medplum/core";import Z from"react";import{deepClone as KI,evalFhirPathTyped as jI,formatCoding as _I,getExtension as hs,getTypedPropertyValue as Wa}from"@medplum/core";var ir=(B=>(B.group="group",B.display="display",B.question="question",B.boolean="boolean",B.decimal="decimal",B.integer="integer",B.date="date",B.dateTime="dateTime",B.time="time",B.string="string",B.text="text",B.url="url",B.choice="choice",B.openChoice="open-choice",B.attachment="attachment",B.reference="reference",B.quantity="quantity",B))(ir||{});function Cs(e){return e.type==="choice"||e.type==="open-choice"}function ys(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Ss(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=YI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function vs(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>_I(f.valueCoding)===r||f[o]===r),n=Wa({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function Ss(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=Ss(t.item,o);if(r)return r}}}function ZI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=jI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function YI(e,o,t){let r=o||[],a=Wa({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Wa({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(ZI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function ur(e){let o=hs(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(o){if(o.valueCode!==void 0)return[o.valueCode];if(o.valueCodeableConcept)return o.valueCodeableConcept?.coding?.map(t=>t.code)}}function dr(e,o){let t=KI(e),r=hs(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?(r&&(t.extension=t.extension?.filter(a=>a!==r)),t):(r||(t.extension||(t.extension=[]),r={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},t.extension.push(r)),o.length===1?(r.valueCode=o[0],delete r.valueCodeableConcept):(r.valueCodeableConcept={coding:o.map(a=>({code:a}))},delete r.valueCode),t)}function cr(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(x=>x.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=ug(d[0]?.answer??[],u,l),e.onChange({id:d[0].id,linkId:o.linkId,text:o.text,answer:c})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=ja(e.allResponses,o,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Z.createElement(Ht,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Z.createElement(eg,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Z.createElement(ut,{type:"number",step:"any",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Z.createElement(ut,{type:"number",step:1,id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Z.createElement(ut,{type:"date",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Z.createElement(Fe,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Z.createElement(ut,{type:"time",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Z.createElement(ut,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Z.createElement(ag,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Z.createElement(og,{py:4},Z.createElement(bt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)}));case"reference":return Z.createElement(wo,{name:n,required:o.required,targetTypes:ur(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Z.createElement(Pe,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return dg(o)?Z.createElement(lg,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Z.createElement(sg,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function lg(e){let{name:o,item:t,initial:r}=e,a=Ue({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=Ue({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(Xa(l))}let f=ja(e.allResponses,t,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=cg(e.item),i=mg(e.allResponses,t,e.groupSequence);return Z.createElement(tg,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Xa(a)],onChange:u=>{let d=vs(u,s,t);e.onChangeAnswer(d)}})}return Z.createElement(rg,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=Ue({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Ja(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:($a(f?.value)||f?.value)??Xa(a),data:n})}function sg(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Z.createElement(Vt,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):Z.createElement(ig,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function ig(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=fg("QuestionnaireItemAnswerOption","value[x]"),f=Ue({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],x=`${o}-option-${d}`,y=Ue({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&Ps(y)===Ps(f)&&(l=x),s.push([x,y])}let i=ja(e.allResponses,t,e.index,e.groupSequence),u=pg(s,i);return Z.createElement(bs.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(x=>x[0]===d);if(c){let x=c[1],y="value"+Ja(x.type);a({[y]:x.value})}}},s.map(([d,c])=>Z.createElement(bs,{key:d,id:d,value:d,py:4,label:Z.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function ug(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 dg(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function cg(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=Ue({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Ja(t.type),a=(e.answerOption??[]).map(n=>({value:Ds(n,r),label:Ds(n,r)}));return{propertyName:r,data:a}}function Ds(e,o){return $a(e.valueCoding)||e[o]?.toString()}function Xa(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ka(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Ka(r.item,o)));return t}function Ts(e){return Ue({type:"QuestionnaireItemAnswer",value:e},"value")}function ja(e,o,t=0,r=0){let n=Ka(e,o.linkId??"")[r]?.answer;return Ts(n?.[t]??{})}function mg(e,o,t=0){let a=Ka(e,o.linkId??"")[t]?.answer;return a?a.map(f=>Ts(f)).map(f=>$a(f?.value)||f?.value):[]}function pg(e,o){return e.find(t=>ng(t[1].value,o?.value))?.[0]}var Dg=Ig(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:32,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function i0(e){let o=P(),t=X(e.questionnaire),[r,a]=mr(!1),[n,f]=mr(),[s,l]=mr(),[i,u]=mr();function d(){u(void 0)}function c(){l(void 0)}return ks(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),ks(()=>(f(Ag(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:b.createElement("div",null,b.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},b.createElement(Bs,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),b.createElement(xg,{type:"submit"},"Save")))}function Bs(e){let{classes:o,cx:t}=Dg(),r=e.item,a=e.item,n=bg(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Pg();u.current=e.item;function d(g){N(g),e.setSelectedKey(e.item.id)}function c(g){N(g),e.setHoverKey(e.item.id)}function x(g){let M=u.current;e.onChange({...M,item:M.item?.map(Y=>Y.id===g.id?g:Y)})}function y(g){e.onChange({...e.item,item:[...e.item.item??[],g]})}function k(g){e.onChange({...e.item,item:e.item.item?.filter(M=>M!==g)})}function T(g,M){e.onChange({...u.current,[g]:M})}function B(g){e.onChange({...e.item,...g})}function A(g){e.onChange({...e.item,item:e.item.item?.map(M=>M===g?{...M,repeats:!M.repeats}:M)})}function I(g,M){let Y=wg(e.item.item,g,M);e.onChange({...e.item,item:Y})}let O=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return b.createElement("div",{"data-testid":a.linkId,className:O,onClick:d,onMouseOver:c},b.createElement("div",{className:o.questionBody},l?b.createElement(b.Fragment,null,n&&b.createElement(Za,{size:"xl",defaultValue:r.title,onChange:g=>T("title",g.currentTarget.value)}),!n&&b.createElement(yg,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>T("text",g.currentTarget.value)}),a.type==="reference"&&b.createElement(Bg,{item:a,onChange:B}),Cs(a)&&b.createElement(Tg,{item:a,onChange:g=>B(g)})):b.createElement(b.Fragment,null,r.title&&b.createElement(vg,null,r.title),a.text&&b.createElement("div",null,a.text),!f&&b.createElement(cr,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((g,M)=>b.createElement("div",{key:g.id},b.createElement(Bs,{item:g,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:M===0,isLast:M===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:x,onRemove:()=>k(g),onRepeatable:A,onMoveUp:()=>I(M,-1),onMoveDown:()=>I(M,1)}))),!f&&b.createElement("div",{className:o.topActions},l?b.createElement(b.Fragment,null,b.createElement(Za,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>T("linkId",g.currentTarget.value)}),!f&&b.createElement(hg,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:g=>T("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"}]})):b.createElement("div",null,s)),!n&&b.createElement(_a,{className:o.movementActions},b.createElement(_a,{className:o.columnAlignment},!e.isFirst&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveUp&&e.onMoveUp()}},b.createElement(br,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveDown&&e.onMoveDown()}},b.createElement(Sr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),b.createElement("div",{className:o.bottomActions},f&&b.createElement(b.Fragment,null,b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("q"),type:"string",text:"Question"})}},"Add item"),b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("g"),type:"group",text:"Group"})}},"Add group")),n&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y(Mg())}},"Add Page"),l&&!n&&b.createElement(b.Fragment,null,b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function Tg(e){let o=Sg("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return b.createElement("div",null,e.item.answerValueSet!==void 0?b.createElement(Za,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):b.createElement(kg,{options:t,property:o,item:e.item,onChange:e.onChange}),b.createElement(_a,{display:"flex"},b.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:mo()}]})}},"Add choice"),b.createElement(Cg,{w:"lg"}),b.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function kg(e){return b.createElement("div",null,e.options.map(o=>{let[t,r]=ve({type:"QuestionnaireItemAnswerOption",value:o},"value");return b.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},b.createElement("div",null,b.createElement(qe,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),b.createElement("div",null,b.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function Bg(e){let o=ur(e.item)??[];return b.createElement(b.Fragment,null,o.map((t,r)=>b.createElement(gg,{key:`${t}-${r}`},b.createElement(Po,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(dr(e.item,o.map(n=>n===t?a:n)))}}),b.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange(dr(e.item,o.filter(n=>n!==t)))}},"Remove"))),b.createElement(Te,{href:"#",onClick:t=>{N(t),e.onChange(dr(e.item,[...o,""]))}},"Add Resource Type"))}var Ya=1,en=1;function on(e){return e+Ya++}function mo(){return"id-"+en++}function Ag(e){return{...e,id:e.id||mo(),item:As(e.item)}}function As(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(en=Math.max(en,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ya=Math.max(Ya,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||mo(),item:As(o.item),answerOption:Fg(o.answerOption)}))}function Fg(e){if(e)return e.map(o=>({...o,id:o.id||mo()}))}function Mg(){return{id:mo(),linkId:on("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function wg(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Anchor as Os,Button as tn,Group as Og,Stack as Eg,Stepper as Fs,Title as Es}from"@mantine/core";import{createReference as Lg,getExtension as Rg,getReferenceString as Ls}from"@medplum/core";import Q,{useEffect as Ms,useState as Vo}from"react";function Rs(e){let o=P(),t=o.getProfile(),[r,a]=Vo(!1),n=X(e.questionnaire),[f,s]=Vo(),[l,i]=Vo(0);Ms(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Ms(()=>{s(n?Hg(n):void 0)},[n]);function u(y){let k=f?.item??[],B={resourceType:"QuestionnaireResponse",item:Vs(k,y)};s(B)}if(!r||!n)return null;let d=Ug(n),c=()=>i(y=>y+1),x=()=>i(y=>y-1);return Q.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Ls(n),subject:e.subject,source:Lg(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&Q.createElement(Es,null,n.title),n.item&&Q.createElement(Ns,{items:n.item??[],allResponses:f?.item??[],onChange:u,renderPages:d>1,activePage:l}),Q.createElement(Ng,{activePage:l,numberOfPages:d,nextStep:c,prevStep:x,submitButtonText:e.submitButtonText}))}function Ns(e){let[o,t]=Vo(an(e.items));function r(n,f){let s=o.some(i=>i.id===n),l;s?l=o.map(i=>i.id===n?f:i):l=[...o,f],t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?Q.createElement(Fs.Step,{label:n.text,key:n.linkId},Q.createElement(ws,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):Q.createElement(ws,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?Q.createElement(Fs,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):Q.createElement(Eg,null,a)}function ws(e){return ys(e.item,e.allResponses)?e.item.type==="display"?Q.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?Q.createElement(rn,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):e.item.type==="boolean"?Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):Q.createElement(Se,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text,withAsterisk:e.item.required},Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function rn(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(s=>s.linkId===o.linkId);e.onChange({id:Wg(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?Q.createElement(Qg,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):Q.createElement(zg,{item:e.item,key:e.item.linkId},({index:r})=>Q.createElement(cr,{...e,index:r}))}function Ng(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return Q.createElement(Og,{position:"right",mt:"xl",spacing:"xs"},o&&Q.createElement(tn,{onClick:e.prevStep},"Back"),t&&Q.createElement(tn,{onClick:a=>{a.currentTarget.closest("form").reportValidity()&&e.nextStep()}},"Next"),r&&Q.createElement(tn,{type:"submit"},e.submitButtonText??"Submit"))}function Hg(e){return{resourceType:"QuestionnaireResponse",questionnaire:Ls(e),item:an(e.item)}}function an(e){return e?.map(Vg)??[]}function Vg(e){return{id:Hs(),linkId:e.linkId,text:e.text,item:an(e.item),answer:e.initial?.map(Gg)??[]}}var qg=1;function Hs(){return"id-"+qg++}function Gg(e){return{...e}}function Ug(e){let o=e?.item?.[0];return o&&Rg(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function Qg(e){let[o,t]=Vo(Xg(e.item,e.allResponses)),r=e.item;return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement("div",{key:n},e.text&&Q.createElement(Es,{order:3,mb:"md"},e.text),Q.createElement(Ns,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&Q.createElement(Os,{onClick:()=>t(a=>a+1)},"Add Group"))}function zg(e){let[o,t]=Vo(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement(Q.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&Q.createElement(Os,{onClick:()=>t(a=>a+1)},"Add Item"))}function Wg(e,o){return e.length===0||e.length<o+1?Hs():e[o].id}function Xg(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function Jg(e,o){let t=Vs(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function $g(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(Jg(e[a],o[a])):o[a]&&t.push(o[a]);return t}function Vs(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat($g(a,n))}return t}import{ActionIcon as pr,Button as Kg,createStyles as jg,Divider as _g,Group as dt,NativeSelect as nn,Stack as xr,Text as Zg,TextInput as Yg}from"@mantine/core";import{formatRange as qs,getCodeBySystem as eh}from"@medplum/core";import W,{useEffect as oh,useState as fn}from"react";var th=jg(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"}})),rh=["gender","age","gestationalAge","context","appliesTo","category"],ah={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function A0(e){e=Object.assign(ah,e);let o=e.definition,[t,r]=fn([]),[a,n]=fn(1),[f,s]=fn(1);return oh(()=>{let y=lh(o,s);r(sh(y.qualifiedInterval||[],n))},[o]),W.createElement($,{testid:"reference-range-editor",onSubmit:l},W.createElement(xr,null,t.map(y=>W.createElement(nh,{unit:uh(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:x,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),W.createElement(pr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},W.createElement(po,null)),W.createElement(dt,{position:"right"},W.createElement(Kg,{type:"submit"},"Save")));function l(){let y=t.flatMap(k=>k.intervals).filter(k=>!dh(k));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(k=>[...k,y])}function u(y){r(k=>k.filter(T=>T.id!==y.id))}function d(y,k){r(T=>{T=[...T];let B=T.find(I=>I.id===y),A=B?.intervals.findIndex(I=>I.id===k.id);return A!==void 0&&B?.intervals[A]&&(B.intervals[A]=k),T})}function c(y,k){k.id===void 0&&(k.id=`id-${f}`,s(T=>T+1)),r(T=>{T=[...T];let B=T.findIndex(A=>A.id===y);if(B!==-1){let A={...T[B]};k={...k,...A.filters},A.intervals=[...A.intervals,k],T[B]=A}return T})}function x(y,k){r(T=>{T=[...T];let B=T.find(A=>A.id===y);return B&&(B.intervals=B.intervals.filter(A=>A.id!==k.id)),T})}}function nh(e){let{intervalGroup:o,unit:t}=e,{classes:r}=th();return W.createElement(Ke,{"data-testid":o.id,className:r.section},W.createElement(xr,{spacing:"lg"},W.createElement(dt,{position:"right"},W.createElement(pr,{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)}},W.createElement(We,null))),W.createElement(fh,{intervalGroup:o,onChange:e.onChange}),W.createElement(_g,null),o.intervals.map(a=>W.createElement(xr,{key:`interval-${a.id}`,spacing:"xs"},W.createElement(dt,null,W.createElement(Yg,{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()})}}),W.createElement(pr,{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)}},W.createElement(We,null))),W.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),W.createElement(pr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},W.createElement(po,null))))}function fh(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 W.createElement(xr,{style:{maxWidth:"50%"}},W.createElement(dt,null,W.createElement(nn,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),W.createElement(dt,{spacing:"xs"},W.createElement(Zg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),W.createElement("div",{id:`div-age-${o.id}`},W.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})}}))),W.createElement(nn,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),W.createElement(nn,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function lh(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 sh(e,o){let t=1,r={};for(let a of e){let n=ih(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(rh.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function ih(e){return[`gender=${e.gender}`,`age=${qs(e.age)}`,`gestationalAge=${qs(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function uh(e){return e&&(eh(e,"http://unitsofmeasure.org")||e.text)}function dh(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Gs,Grid as Ir,Text as ch}from"@mantine/core";import{formatDateTime as mh,getReferenceString as ph}from"@medplum/core";import ge,{useEffect as xh,useState as Us}from"react";function H0(e){let o=P(),t=X(e.value),[r,a]=Us(!1),[n,f]=Us();if(xh(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ge.createElement(Ir,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,x=d?.output?.[0]?.valueReference;return ge.createElement(ge.Fragment,{key:`action-${u}`},ge.createElement(Ir.Col,{span:1,p:"md"},d?.status==="completed"?ge.createElement(Fr,null):ge.createElement(Jr,{color:"gray"})),ge.createElement(Ir.Col,{span:9,p:"xs"},ge.createElement(ch,{weight:500},i.title),i.description&&ge.createElement("div",null,i.description),ge.createElement("div",null,"Last edited by\xA0",ge.createElement(Ee,{value:d?.meta?.author}),"\xA0on\xA0",mh(d?.meta?.lastUpdated)),ge.createElement("div",null,"Status: ",ge.createElement($t,{status:d?.status||"unknown"}))),ge.createElement(Ir.Col,{span:2,p:"md"},c&&!x&&ge.createElement(Gs,{onClick:()=>e.onStart(d,c)},"Start"),c&&x&&ge.createElement(Gs,{onClick:()=>e.onEdit(d,c,x)},"Edit")))}));function s(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===ph(u.resource))return u.resource}}import{createStyles as Sh}from"@mantine/core";import ye,{useEffect as bh,useState as Ph}from"react";import{stringify as Ch}from"@medplum/core";function gr(e,o){let t=Ih(e,o);return gh(t,e,o)}function Ih(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,d=u+1,c=u-1,x=s[d],y=s[c],k,T=0;i===-l||i!==l&&y.i<x.i?(T=x.i,k=x):(T=y.i+1,k=y),s[c]=void 0;let B=T-i,A={i:T,j:B,prev:hh(k),snake:!1};for(;T<t&&B<r&&e[T]===o[B];)T++,B++;if(T>A.i&&(A={i:T,j:B,prev:A,snake:!0}),s[u]=A,T>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function gh(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function hh(e){return e&&!e.snake&&e.prev?e.prev:e}function Qs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:Ch(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 yh(t,o),vh(t),t}function yh(e,o){for(let t=1;t<o.length;t++){let r=gr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function vh(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}function zs(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Ws(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return qo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return qo(r,"month");let a=Math.floor(o/86400);if(a>0)return qo(a,"day");let n=Math.floor(o/3600);if(n>0)return qo(n,"hour");let f=Math.floor(o/60);return f>0?qo(f,"minute"):qo(o,"second")}function qo(e,o){return`${e} ${e===1?o:o+"s"} ago`}var Dh=Sh(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 Z0(e){let{classes:o}=Dh(),t=P(),[r,a]=Ph(e.history);if(bh(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ye.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Qs(r);return ye.createElement("div",{className:o.container},ye.createElement("table",{className:o.root},ye.createElement("tbody",null,f.map((s,l)=>ye.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&ye.createElement(ye.Fragment,null,ye.createElement("td",{className:o.author,rowSpan:s.span},ye.createElement(_e,{value:s.meta.author,link:!0})),ye.createElement("td",{className:o.dateTime,rowSpan:s.span},ye.createElement(se,{to:zs(n,s.meta.versionId)},Ws(s.meta.lastUpdated)))),ye.createElement("td",{className:o.lineNumber},l+1),ye.createElement("td",{className:o.line},ye.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as Th}from"@mantine/core";import{stringify as Xs}from"@medplum/core";import eo from"react";var kh=Th(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function n1(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Xs(o,!0).match(/[^\r\n]+/g),a=Xs(t,!0).match(/[^\r\n]+/g),n=gr(r,a);return eo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>eo.createElement(Bh,{key:"delta"+s,delta:f})))}function Bh(e){let{classes:o}=kh();return eo.createElement(eo.Fragment,null,"...",eo.createElement("br",null),e.delta.original.lines.length>0&&eo.createElement("div",{className:o.removed},e.delta.original.lines.join(`
64
+ }`.replace(/\s+/g," ")}function uu(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),cu(du(t),o).slice(0,5)}function du(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 cu(e,o){return e.sort((t,r)=>Rn(r,o)-Rn(t,o))}function Rn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Nn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Nn(ou(r),o));return t}function Nn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Cu=pu(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 Un(e){let o=Qo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=Cu(),[l,i]=hu(!1);return G.createElement(xu,{height:60,p:8,style:{zIndex:101}},G.createElement(St,{position:"apart"},G.createElement(St,{spacing:"xs"},G.createElement(qn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&G.createElement(Vn,{pathname:e.pathname,searchParams:e.searchParams})),G.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},G.createElement(He.Target,null,G.createElement(qn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},G.createElement(St,{spacing:7},G.createElement(Ie,{value:r,radius:"xl",size:24}),G.createElement(jo,{size:"sm",className:f.userName},gu(r?.name?.[0])),G.createElement(Or,{size:12,stroke:1.5})))),G.createElement(He.Dropdown,null,G.createElement(Iu,{align:"center",p:"xl"},G.createElement(Ie,{size:"xl",radius:100,value:o.profile}),G.createElement(yt,{value:o.profile?.name?.[0]}),G.createElement(jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&G.createElement(He.Divider,null),n.map(u=>u.profile.reference!==Gn(o.profile)&&G.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},G.createElement(St,null,G.createElement(mu,{radius:"xl"}),G.createElement("div",{style:{flex:1}},G.createElement(jo,{size:"sm",weight:500},u.profile.display),G.createElement(jo,{color:"dimmed",size:"xs"},u.project.display))))),G.createElement(He.Divider,null),G.createElement(He.Item,{icon:G.createElement(jr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),G.createElement(He.Item,{icon:G.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Gn(r)}`)},"Account settings"),G.createElement(He.Item,{icon:G.createElement(Ur,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),G.createElement(jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as zu,createStyles as Wu,Navbar as ra,ScrollArea as Xu,Space as Ju,Text as $u}from"@mantine/core";import ne,{useState as Ku}from"react";import{Button as bu,Group as Pu,Modal as Du,NativeSelect as ku,Stack as Tu,TextInput as Bu}from"@mantine/core";import{showNotification as zn}from"@mantine/notifications";import{deepClone as Au,normalizeErrorString as Fu}from"@medplum/core";import Xe from"react";import Su from"react";function Qn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?yu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&vu(o,t);return o}function yu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function vu(e,o){e[o.name]=o.value}function J(e){return Su.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Qn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Wn(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=Au(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),zn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{zn({color:"red",message:Fu(u)})})}return Xe.createElement(Du,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement(J,{onSubmit:r},Xe.createElement(Tu,null,Xe.createElement(Mu,{config:t}),Xe.createElement(Bu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Xe.createElement(Pu,{position:"right"},Xe.createElement(bu,{mt:"sm",type:"submit"},"OK")))))}function Mu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(ku,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Gu,{useCallback as Uu,useState as Qu}from"react";import Nu,{useState as Hu}from"react";import wu,{useCallback as Ou}from"react";function ta(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Eu(e){return typeof e.display=="string"?e.display:ta(e)}function Lu(e){return{value:ta(e),label:Eu(e),resource:e}}function Ru(e){return{code:e,display:e}}function bo(e){let o=P(),{binding:t,creatable:r,clearable:a,...n}=e,f=Ou(async(s,l)=>{if(!t)return[];let u=(await o.searchValueSet(t,s,{signal:l})).expansion?.contains,c=[];for(let d of u)d.code&&!c.some(x=>x.code===d.code)&&c.push(d);return c},[o,t]);return wu.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:ta,toOption:Lu,loadOptions:f,onCreate:Ru,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function bt(e){let[o,t]=Hu(e.defaultValue);function r(a){let n=a[0],f=qu(n);t(f),e.onChange&&e.onChange(f)}return Nu.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Vu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Vu(e){return e?{code:e}:void 0}function qu(e){return e?.code}function Po(e){let[o,t]=Qu(e.defaultValue),r=e.onChange,a=Uu(n=>{t(n),r&&r(n)},[r]);return Gu.createElement(bt,{"data-autofocus":e.autoFocus,"data-testid":e.testId,defaultValue:o,onChange:a,name:e.name,placeholder:e.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Xn=Wu(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 Jn(e){let{classes:o}=Xn(),t=Ue(),r=Zu(e.pathname,e.searchParams,e.menus),[a,n]=Ku(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return ne.createElement(ne.Fragment,null,ne.createElement(ra,{width:{sm:250},p:"xs"},ne.createElement(Xu,null,!e.resourceTypeSearchDisabled&&ne.createElement(ra.Section,{mb:"sm"},ne.createElement(Po,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),ne.createElement(ra.Section,{grow:!0},e.menus?.map(l=>ne.createElement(ne.Fragment,{key:`menu-${l.title}`},ne.createElement($u,{className:o.menuTitle},l.title),l.links?.map(i=>ne.createElement(ju,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},ne.createElement(_u,{to:i.href,icon:i.icon}),ne.createElement("span",null,i.label))))),e.displayAddBookmark&&ne.createElement(zu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:ne.createElement(Xr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&ne.createElement(Wn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function ju(e){let{classes:o,cx:t}=Xn();return ne.createElement(fe,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function _u(e){return e.icon?e.icon:ne.createElement(Ju,{w:30})}function Zu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let s=Yu(e,o,f.href);s>a&&(a=s,r=f)}return r}function Yu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function jb(e){let o=od(),[t,r]=nd(localStorage.navbarOpen==="true"),a=P(),n=xt();ad(()=>{function i(){td({color:"red",message:"No connection to server",autoClose:!1})}return a.addEventListener("offline",i),()=>a.removeEventListener("offline",i)},[a]);function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ao.createElement(ea,null):ao.createElement(ed,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ao.createElement(Un,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ao.createElement(Jn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0},ao.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},ao.createElement(rd,{fallback:ao.createElement(ea,null)},e.children)))}import aa from"react";import{Anchor as fd}from"@mantine/core";import Je from"react";function we(e){let{contentType:o,url:t,title:r}=e.value??{};return t?Je.createElement("div",{"data-testid":"attachment-display"},o?.startsWith("image/")&&Je.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:t,alt:r}),o?.startsWith("video/")&&Je.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Je.createElement("source",{type:o,src:t})),o==="application/pdf"&&Je.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Je.createElement("iframe",{width:"100%",height:"400",src:t+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Je.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Je.createElement(fd,{href:t,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:ld(r)},r||"Download"))):null}function ld(e){return e?.includes(".")?e:void 0}function $n(e){return aa.createElement("div",null,e.values?.map((o,t)=>aa.createElement("div",{key:"attatchment-"+t},aa.createElement(we,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Kn}from"@mantine/core";import le,{useRef as ud,useState as dd}from"react";import na,{useRef as sd}from"react";import{normalizeOperationOutcome as id}from"@medplum/core";function Do(e){let o=P(),t=sd(null);function r(f){R(f),t.current?.click()}function a(f){R(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{e.onUploadError&&e.onUploadError(id(u))})}return na.createElement(na.Fragment,null,na.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function jn(e){let[o,t]=dd(e.defaultValue??[]),r=ud();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return le.createElement("table",{style:{width:"100%"}},le.createElement("colgroup",null,le.createElement("col",{width:"97%"}),le.createElement("col",{width:"3%"})),le.createElement("tbody",null,o.map((n,f)=>le.createElement("tr",{key:`${f}-${o.length}`},le.createElement("td",null,le.createElement(we,{value:n,maxWidth:200})),le.createElement("td",null,le.createElement(Kn,{title:"Remove",size:"sm",onClick:s=>{R(s);let l=o.slice();l.splice(f,1),a(l)}},le.createElement(ze,null))))),le.createElement("tr",null,le.createElement("td",null),le.createElement("td",null,le.createElement(Do,{onUpload:n=>{a([...r.current,n])}},n=>le.createElement(Kn,{...n,title:"Add",size:"sm",color:"green"},le.createElement(Xo,{size:16})))))))}import{Button as _n}from"@mantine/core";import ko,{useState as cd}from"react";function Pt(e){let[o,t]=cd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?ko.createElement(ko.Fragment,null,ko.createElement(we,{value:o,maxWidth:200}),ko.createElement(_n,{onClick:a=>{R(a),r(void 0)}},"Remove")):ko.createElement(Do,{onUpload:r},a=>ko.createElement(_n,{...a},"Upload..."))}import{getPropertyDisplayName as Fd,tryGetDataType as Md}from"@medplum/core";import et from"react";var Dt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as md}from"@mantine/core";import _o from"react";var pd=md(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 Zn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=pd();return _o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Yn(e){return _o.createElement(_o.Fragment,null,_o.createElement("dt",null,e.term),_o.createElement("dd",null,e.children))}import{ActionIcon as Sd,Box as bd,CopyButton as Pd,Tooltip as Dd}from"@mantine/core";import{formatDateTime as kd,formatPeriod as Td,formatTiming as Bd,PropertyType as N}from"@medplum/core";import w from"react";import{formatCodeableConcept as xd}from"@medplum/core";import ef from"react";function To(e){return ef.createElement(ef.Fragment,null,xd(e.value))}import{formatCoding as Id}from"@medplum/core";import of from"react";function tf(e){return of.createElement(of.Fragment,null,Id(e.value))}import fa from"react";import rf from"react";function kt(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("]")),rf.createElement(rf.Fragment,null,t.join("").trim())}function af(e){let o=e.value;return o?fa.createElement(fa.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>fa.createElement(kt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import gd from"react";function nf(e){return gd.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as hd}from"@medplum/core";import ff from"react";function lf(e){return ff.createElement(ff.Fragment,null,hd(e.value))}import{formatQuantity as Cd}from"@medplum/core";import sf from"react";function Zo(e){return sf.createElement(sf.Fragment,null,Cd(e.value))}import{formatRange as yd}from"@medplum/core";import uf from"react";function Tt(e){return uf.createElement(uf.Fragment,null,yd(e.value))}import Bt from"react";function df(e){let o=e.value;return o?Bt.createElement(Bt.Fragment,null,Bt.createElement(Zo,{value:o.numerator}),"\xA0/\xA0",Bt.createElement(Zo,{value:o.denominator})):null}import{stringify as vd}from"@medplum/core";import la from"react";function no(e){if(!e.value)return null;let o=e.value.display||e.value.reference||vd(e.value);return e.link!==!1&&e.value.reference?la.createElement(fe,{to:e.value},o):la.createElement(la.Fragment,null,o)}import Bo from"react";function cf(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?Bo.createElement(Bo.Fragment,null,t.map((a,n)=>Bo.createElement("div",{key:`${n}-${t.length}`},Bo.createElement(ce,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Bo.createElement(Bo.Fragment,null)}function ce(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return w.createElement(bd,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,w.createElement(Pd,{value:r,timeout:2e3},({copied:n,copy:f})=>w.createElement(Dd,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},w.createElement(Sd,{color:n?"teal":"gray",onClick:f},n?w.createElement(Wo,{size:"1rem"}):w.createElement(Lr,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===N.Attachment?w.createElement($n,{values:r,maxWidth:e.maxWidth}):w.createElement(cf,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case N.boolean:return w.createElement(w.Fragment,null,r===void 0?"":(!!r).toString());case N.SystemString:case N.string:return w.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case N.code:case N.date:case N.decimal:case N.integer:case N.positiveInt:case N.unsignedInt:case N.uri:case N.url:return w.createElement(w.Fragment,null,r);case N.canonical:return w.createElement(no,{value:{reference:r},link:e.link});case N.dateTime:case N.instant:return w.createElement(w.Fragment,null,kd(r));case N.markdown:return w.createElement("pre",null,r);case N.Address:return w.createElement(gn,{value:r});case N.Annotation:return w.createElement(w.Fragment,null,r?.text);case N.Attachment:return w.createElement(we,{value:r,maxWidth:e.maxWidth});case N.CodeableConcept:return w.createElement(To,{value:r});case N.Coding:return w.createElement(tf,{value:r});case N.ContactDetail:return w.createElement(af,{value:r});case N.ContactPoint:return w.createElement(kt,{value:r});case N.HumanName:return w.createElement(yt,{value:r});case N.Identifier:return w.createElement(nf,{value:r});case N.Money:return w.createElement(lf,{value:r});case N.Period:return w.createElement(w.Fragment,null,Td(r));case N.Quantity:case N.Duration:return w.createElement(Zo,{value:r});case N.Range:return w.createElement(Tt,{value:r});case N.Ratio:return w.createElement(df,{value:r});case N.Reference:return w.createElement(no,{value:r,link:e.link});case N.Timing:return w.createElement(w.Fragment,null,Bd(r));case N.Dosage:case N.UsageContext:return w.createElement(Yo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o)throw Error(`Displaying property of type ${e.propertyType} requires element schema`);return w.createElement(Yo,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}import{getTypedPropertyValue as Ad}from"@medplum/core";function he(e,o){let t=Ad(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=Md(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(Zn,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Dt.includes(f))return null;let[l,i]=he(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:et.createElement(Yn,{key:f,term:Fd(f)},et.createElement(ce,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):et.createElement("div",null,r,"\xA0not implemented")}import{Stack as rm}from"@mantine/core";import{getPropertyDisplayName as qf,tryGetDataType as am}from"@medplum/core";import Mo,{useState as nm}from"react";import{Group as wd,Input as Od}from"@mantine/core";import At from"react";function Ft(e){return At.createElement(wd,{noWrap:!0},At.createElement("div",null,e.children),At.createElement("div",null,At.createElement(Od.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ed}from"@mantine/core";import Ld from"react";function me(e,o){return e?.issue?.filter(t=>mf(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function Mt(e,o){return e?.issue?.filter(t=>mf(t.expression?.[0],o))}function mf(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 Ce(e){return Ld.createElement(Ed.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{capitalize as Rd}from"@medplum/core";function ot(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",Rd(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as Kc,Group as jc,NativeSelect as _c,Textarea as Zc,TextInput as Ia}from"@mantine/core";import{capitalize as Yc,PropertyType as O}from"@medplum/core";import q,{useState as em}from"react";import Nd,{useState as Hd}from"react";function pf(e){let[o,t]=Hd(e.defaultValue);function r(a){let n=qd(a);t(n),e.onChange&&e.onChange(n)}return Nd.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Vd(o),maxSelectedValues:1,onChange:r})}function Vd(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function qd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import Gd,{useState as Ud}from"react";function wt(e){let[o,t]=Ud(e.defaultValue);function r(a){let n=a[0],f=n&&zd(n);t(f),e.onChange&&e.onChange(f)}return Gd.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Qd(o),maxSelectedValues:1,onChange:r})}function Qd(e){return{system:e.system,code:e.code,display:e.display}}function zd(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Kd,TextInput as jd}from"@mantine/core";import sa,{useRef as _d,useState as Zd}from"react";import{Group as Wd,NativeSelect as xf,TextInput as Xd}from"@mantine/core";import Ot,{useRef as Jd,useState as $d}from"react";function Et(e){let[o,t]=$d(e.defaultValue),r=Jd();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return Ot.createElement(Wd,{spacing:"xs",grow:!0,noWrap:!0},Ot.createElement(xf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ot.createElement(xf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ot.createElement(Xd,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function If(e){let[o,t]=Zd(e.defaultValue),r=_d();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return sa.createElement(Kd,{spacing:"xs",grow:!0,noWrap:!0},sa.createElement(jd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),sa.createElement(Et,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Yd}from"@mantine/core";import ec from"react";import{isValidDate as gf}from"@medplum/core";function hf(e){if(!e)return"";let o=new Date(e);return gf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Cf(e){if(!e)return"";let o=new Date(e);return gf(o)?o.toISOString():""}function ke(e){return ec.createElement(Yd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:oc(),defaultValue:hf(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Cf(t))}}})}function oc(){return"datetime-local"}import{JsonInput as tc}from"@mantine/core";import{stringify as rc}from"@medplum/core";import ac from"react";function yf(e){return ac.createElement(tc,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:rc(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as nc,NativeSelect as fc,TextInput as Lt}from"@mantine/core";import Ao,{useRef as lc,useState as sc}from"react";function vf(e){let[o,t]=sc(e.defaultValue),r=lc();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Ao.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},Ao.createElement(fc,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Ao.createElement(Lt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Ao.createElement(Lt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Ao.createElement(Lt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Ao.createElement(Lt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as ic,TextInput as Sf}from"@mantine/core";import ia,{useState as uc}from"react";function bf(e){let[o,t]=uc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ia.createElement(ic,{spacing:"xs",grow:!0,noWrap:!0},ia.createElement(Sf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ia.createElement(Sf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as dc,TextInput as cc}from"@mantine/core";import ua,{useCallback as da,useState as mc}from"react";var pc=["USD","EUR","CAD","GBP","AUD"];function Pf(e){let{onChange:o}=e,[t,r]=mc(e.defaultValue),a=da(l=>{r(l),o&&o(l)},[o]),n=da(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=da(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=ua.createElement(dc,{defaultValue:t?.currency,data:pc,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ua.createElement(cc,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ua.createElement(Rr,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as xc}from"@mantine/core";import ca,{useState as Ic}from"react";function Df(e){let[o,t]=Ic(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ca.createElement(xc,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(ke,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),ca.createElement(ke,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as gc,NativeSelect as hc,TextInput as kf}from"@mantine/core";import Rt,{useState as Cc}from"react";function ve(e){let[o,t]=Cc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Rt.createElement(gc,{spacing:"xs",grow:!0,noWrap:!0},Rt.createElement(hc,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Rt.createElement(kf,{id:e.name,name:e.name,required:e.required,"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:yc(a.currentTarget.value)})}}),Rt.createElement(kf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function yc(e){if(e)return parseFloat(e)}import{Group as vc}from"@mantine/core";import ma,{useState as Sc}from"react";function tt(e){let[o,t]=Sc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ma.createElement(vc,{spacing:"xs",grow:!0,noWrap:!0},ma.createElement(ve,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ma.createElement(ve,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as bc}from"@mantine/core";import pa,{useState as Pc}from"react";function Tf(e){let[o,t]=Pc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return pa.createElement(bc,{spacing:"xs",grow:!0,noWrap:!0},pa.createElement(ve,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),pa.createElement(ve,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Ec,NativeSelect as Lc}from"@mantine/core";import{createReference as Rc}from"@medplum/core";import Ht,{useState as Mf}from"react";import{Group as Dc,Text as Bf}from"@mantine/core";import{getDisplayString as kc,getReferenceString as Ff}from"@medplum/core";import fo,{forwardRef as Tc,useCallback as Af,useState as Bc}from"react";var Ac={Observation:"code",User:"email:contains"},Fc=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function Mc(e){return{value:Ff(e),label:kc(e),resource:e}}function Nt(e){let o=P(),t=e.resourceType,[r,a]=Bc(),n=W(e.defaultValue,a),f=e.onChange,s=Af(async(i,u)=>{let c=Oc(t),d=new URLSearchParams({[c]:i,_count:"10"});return await o.searchResources(t,d,{signal:u})},[o,t]),l=Af(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:fo.createElement(So,{name:e.name,required:e.required,itemComponent:wc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:Ff,toOption:Mc,loadOptions:s,onChange:l,clearable:!0})}var wc=Tc(({label:e,resource:o,...t},r)=>fo.createElement("div",{ref:r,...t},fo.createElement(Dc,{noWrap:!0},fo.createElement(Ie,{value:o}),fo.createElement("div",null,fo.createElement(Bf,null,e),fo.createElement(Bf,{size:"xs",color:"dimmed"},o.birthDate)))));function Oc(e){return Ac[e]??(Fc.includes(e)?"name":"_id")}function Fo(e){let o=Nc(e.targetTypes),t=Hc(e.defaultValue,o),[r,a]=Mf(e.defaultValue),[n,f]=Mf(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Ht.createElement(Ec,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Ht.createElement(Lc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:l=>f(l.currentTarget.value),data:o}),!o&&Ht.createElement(Po,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Ht.createElement(Nt,{resourceType:n,name:e.name+"-id",required:e.required,placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?Rc(l):void 0)}}))}function Nc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Hc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as wf}from"@mantine/core";import pe,{useRef as Vc,useState as qc}from"react";function Of(e){let[o,t]=qc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Vc();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(Ve,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(wf,{title:"Remove",size:"sm",onClick:s=>{R(s);let l=[...r.current];l.splice(f,1),a(l)}},pe.createElement(ze,null))))),pe.createElement("tr",null,pe.createElement("td",null),pe.createElement("td",{style:{textAlign:"right"}},pe.createElement(wf,{title:"Add",size:"sm",color:"green",onClick:n=>{R(n);let f=[...r.current];f.push(void 0),a(f)}},pe.createElement(po,null))))))}import{Button as Rf,Chip as Ef,Group as Vt,Modal as Gc,NativeSelect as Uc,Stack as Qc,Switch as zc,TextInput as Wc}from"@mantine/core";import{formatTiming as Xc}from"@medplum/core";import $,{useRef as Nf,useState as xa}from"react";var Jc=["sun","mon","tue","wed","thu","fri","sat"];function Hf(e){let[o,t]=xa(e.defaultValue),[r,a]=xa(!1),n=Nf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Vt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,Xc(n.current)||"No repeat"),$.createElement(Rf,{onClick:()=>a(!0)},"Edit")),$.createElement($c,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var Lf={repeat:{period:1,periodUnit:"d"}};function $c(e){let[o,t]=xa(e.defaultValue||Lf),r=Nf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(Gc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(Qc,null,$.createElement(Ce,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(ke,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(zc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?Lf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Ce,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Vt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(Wc,{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=>s(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Ce,{title:"Repeat on"},$.createElement(Ef.Group,{multiple:!0,onChange:l},$.createElement(Vt,{position:"apart",mt:"md",spacing:"xs"},Jc.map(i=>$.createElement(Ef,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Vt,{position:"right"},$.createElement(Rf,{onClick:()=>e.onOk(o)},"OK"))))}function Ve(e){let o=e.property,t=e.defaultPropertyType??o.type[0].code,r=e.name,a=e.defaultValue;if(o.max>1&&!e.arrayElement)return t===O.Attachment?q.createElement(jn,{name:r,defaultValue:a,onChange:e.onChange}):q.createElement(Of,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?q.createElement(om,{elementDefinitionTypes:n,...e}):q.createElement(Vf,{elementDefinitionType:n[0],...e})}function om(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=em(t);return q.createElement(jc,{spacing:"xs",grow:!0,noWrap:!0},q.createElement(_c,{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}))}),q.createElement(Vf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Yc(r.code)))}}))}function Vf(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 O.SystemString:case O.canonical:case O.string:case O.time:case O.uri:case O.url:return q.createElement(Ia,{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 O.date:return q.createElement(Ia,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case O.dateTime:case O.instant:return q.createElement(ke,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case O.decimal:case O.integer:case O.positiveInt:case O.unsignedInt:return q.createElement(Ia,{type:"number",step:t===O.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case O.code:return q.createElement(bt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case O.boolean:return q.createElement(Kc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case O.markdown:return q.createElement(Zc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case O.Address:return q.createElement(vn,{name:r,defaultValue:a,onChange:e.onChange});case O.Annotation:return q.createElement(Sn,{name:r,defaultValue:a,onChange:e.onChange});case O.Attachment:return q.createElement(Pt,{name:r,defaultValue:a,onChange:e.onChange});case O.CodeableConcept:return q.createElement(pf,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case O.Coding:return q.createElement(wt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case O.ContactDetail:return q.createElement(If,{name:r,defaultValue:a,onChange:e.onChange});case O.ContactPoint:return q.createElement(Et,{name:r,defaultValue:a,onChange:e.onChange});case O.Extension:return q.createElement(yf,{name:r,defaultValue:a,onChange:e.onChange});case O.HumanName:return q.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case O.Identifier:return q.createElement(bf,{name:r,defaultValue:a,onChange:e.onChange});case O.Money:return q.createElement(Pf,{name:r,defaultValue:a,onChange:e.onChange});case O.Period:return q.createElement(Df,{name:r,defaultValue:a,onChange:e.onChange});case O.Duration:case O.Quantity:return q.createElement(ve,{name:r,defaultValue:a,onChange:e.onChange});case O.Range:return q.createElement(tt,{name:r,defaultValue:a,onChange:e.onChange});case O.Ratio:return q.createElement(Tf,{name:r,defaultValue:a,onChange:e.onChange});case O.Reference:return q.createElement(Fo,{name:r,defaultValue:a,targetTypes:tm(o),onChange:e.onChange});case O.Timing:return q.createElement(Hf,{name:r,defaultValue:a,onChange:e.onChange});case O.Dosage:case O.UsageContext:return q.createElement(rt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return q.createElement(rt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function tm(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function rt(e){let[o,t]=nm(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=am(a);if(!n)return Mo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Mo.createElement(rm,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Dt.includes(s)||!l.type)return null;let[i,u]=he(f,s),c=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Mo.createElement(Ft,{key:s,title:qf(s),description:l.description,htmlFor:s},Mo.createElement(Ve,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(d,x)=>{r(ot(o,s,x??s,l,d))}})):Mo.createElement(Ce,{key:s,title:qf(s),description:l.description,withAsterisk:c,htmlFor:s,outcome:e.outcome},Mo.createElement(Ve,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(d,x)=>{r(ot(o,s,x??s,l,d))}}))}))}import{Button as ga,createStyles as fm,Group as Uf}from"@mantine/core";import Y,{useMemo as lm,useState as sm}from"react";function Gf(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function qt(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var im=fm(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 Qf(e){let{classes:o}=im(),{onChangeMonth:t,onClick:r}=e,[a,n]=sm(qt);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=lm(()=>um(a,e.slots),[a,e.slots]);return Y.createElement("div",null,Y.createElement(Uf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},Y.createElement("p",{style:{flex:1}},Gf(a)),Y.createElement(Uf,{position:"right",spacing:"xs"},Y.createElement(ga,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),Y.createElement(ga,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),Y.createElement("table",{className:o.table},Y.createElement("thead",null,Y.createElement("tr",null,Y.createElement("th",null,"SUN"),Y.createElement("th",null,"MON"),Y.createElement("th",null,"TUE"),Y.createElement("th",null,"WED"),Y.createElement("th",null,"THU"),Y.createElement("th",null,"FRI"),Y.createElement("th",null,"SAT"))),Y.createElement("tbody",null,s.map((l,i)=>Y.createElement("tr",{key:"week-"+i},l.map((u,c)=>Y.createElement("td",{key:"day-"+c},u&&Y.createElement(ga,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function um(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:dm(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 dm(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 cm,createStyles as mm}from"@mantine/core";import pm from"react";var xm=mm(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function $e(e){let{children:o,...t}=e,{classes:r}=xm();return pm.createElement(cm,{className:r.root,...t},o)}import Pp from"react";import{ActionIcon as ll,Center as sp,createStyles as ip,Group as up,Loader as dp,Menu as qe,ScrollArea as cp,TextInput as mp}from"@mantine/core";import{showNotification as pp,updateNotification as Qt}from"@mantine/notifications";import{getReferenceString as at,normalizeErrorString as sl}from"@medplum/core";import D,{useCallback as zt,useEffect as xp,useRef as il,useState as ul}from"react";import{createStyles as Am,Group as Ut,List as Xf,Stack as Jf,Text as Se,Title as $f}from"@mantine/core";import{capitalize as Fm,formatCodeableConcept as Mm,formatDateTime as ya,formatObservationValue as wm,isReference as Om}from"@medplum/core";import I,{useEffect as Em,useState as Lm}from"react";import{Blockquote as Im,createStyles as gm,Stack as hm}from"@mantine/core";import zf from"react";var Cm=gm(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ha({value:e}){let{classes:o}=Cm();return e?zf.createElement(hm,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&zf.createElement(Im,{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 Dm}from"@mantine/core";import Ca from"react";import{Text as ym}from"@mantine/core";import{getDisplayString as vm,isOk as Sm,normalizeErrorString as bm}from"@medplum/core";import Wf,{useState as Pm}from"react";function Oe(e){let{value:o,link:t,...r}=e,[a,n]=Pm(),f=W(o,n),s;if(a&&!Sm(a))s=`[${bm(a)}]`;else if(f)s=vm(f);else return null;return t?Wf.createElement(fe,{to:o,...r},s):Wf.createElement(ym,{component:"span",...r},s)}function Ke(e){return Ca.createElement(Dm,{spacing:"xs"},Ca.createElement(Ie,{size:24,radius:12,value:e.value,link:e.link}),Ca.createElement(Oe,{value:e.value,link:e.link}))}import{Badge as km}from"@mantine/core";import Tm from"react";var Bm={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 Gt(e){return Tm.createElement(km,{color:Bm[e.status]},e.status)}var Kf=Am(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}}));va.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function va(e){let o=P(),t=W(e.value),[r,a]=Lm();if(Em(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(Jf,null,I.createElement($f,null,"Diagnostic Report"),I.createElement(Rm,{value:t}),r&&!e.hideSpecimenInfo&&Nm(r),t.result&&I.createElement(Hm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(ha,{value:n}))}function Rm({value:e}){return I.createElement(Ut,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(Se,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(Se,null,I.createElement(Ke,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Se,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(Se,null,I.createElement(Ke,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Se,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(Se,null,I.createElement(Ke,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(Se,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(Se,null,ya(e.issued))),e.status&&I.createElement("div",null,I.createElement(Se,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(Se,null,Fm(e.status))))}function Nm(e){return I.createElement(Jf,{spacing:"xs"},I.createElement($f,{order:2,size:"h6"},"Specimens"),I.createElement(Xf,{type:"ordered"},e?.map(o=>I.createElement(Xf.Item,{ml:"sm",key:`specimen-${o.id}`},I.createElement(Ut,{spacing:20},I.createElement(Ut,{spacing:5},I.createElement(Se,{fw:500},"Collected:")," ",ya(o.collection?.collectedDateTime)),I.createElement(Ut,{spacing:5},I.createElement(Se,{fw:500},"Received:")," ",ya(o.receivedTime)))))))}function Hm(e){let{classes:o}=Kf();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,I.createElement(jf,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function jf(e){return I.createElement(I.Fragment,null,e.value?.map(o=>I.createElement(Vm,{key:`obs-${Om(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Vm(e){let{classes:o,cx:t}=Kf(),r=W(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Um(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(fe,{to:r},I.createElement(To,{value:r.code}))),I.createElement("td",null,I.createElement(qm,{value:r})),I.createElement("td",null,I.createElement(Gm,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(To,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement(I.Fragment,null,r.category.map(f=>I.createElement("div",{key:`category-${Mm(f)}`},I.createElement(To,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(no,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Gt,{status:r.status}))),r.hasMember&&I.createElement(jf,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(ha,{value:r.note}))))}function qm(e){let o=e.value;return I.createElement(I.Fragment,null,wm(o))}function Gm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(Tt,{value:o}):null}function Um(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Qm,Paper as zm,useComponentDefaultProps as Wm}from"@mantine/core";import Xm from"react";var Jm=Qm((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%"}}})),$m={shadow:"xs",radius:"md",withBorder:!0};function wo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Wm("Panel",$m,e),{classes:s,cx:l}=Jm({width:r,fill:a},{name:"Panel",unstyled:n});return Xm.createElement(zm,{className:l(s.paper,o),...f},t)}import{createStyles as Km}from"@mantine/core";import{getDataType as jm,getPropertyDisplayName as _m,stringify as _f,toTypedValue as Zf}from"@medplum/core";import se,{useEffect as Zm,useState as Ym}from"react";var ep=Km(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 el(e){let{classes:o}=ep(),t=P(),[r,a]=Ym(!1);if(Zm(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=jm(e.original.resourceType);return se.createElement("table",{className:o.root},se.createElement("colgroup",null,se.createElement("col",{style:{width:"30%"}}),se.createElement("col",{style:{width:"35%"}}),se.createElement("col",{style:{width:"35%"}})),se.createElement("thead",null,se.createElement("tr",null,se.createElement("th",null,"Property"),se.createElement("th",null,"Before"),se.createElement("th",null,"After"))),se.createElement("tbody",null,Object.entries(n.elements).map(([f,s])=>{if(f==="id"||f==="meta")return null;let[l,i]=he(Zf(e.original),f),[u,c]=he(Zf(e.revised),f);return Yf(l)&&Yf(u)||_f(l)===_f(u)?null:se.createElement("tr",{key:f},se.createElement("td",null,_m(f)),se.createElement("td",{className:o.removed},se.createElement(ce,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),se.createElement("td",{className:o.added},se.createElement(ce,{property:s,propertyType:c,value:u,ignoreMissingValues:!0})))})))}function Yf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import op,{useEffect as tp,useState as rp}from"react";function Sa(e){let o=P(),t=W(e.value),[r,a]=rp(!1);return tp(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:op.createElement(Yo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as ap,Group as np,Menu as ol,Text as ba}from"@mantine/core";import{formatDateTime as fp,getReferenceString as lp}from"@medplum/core";import oe from"react";function tl(e){return oe.createElement($e,null,e.children)}function je(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return oe.createElement(wo,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(np,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ie,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(ba,{size:"sm"},oe.createElement(Oe,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(ba,{size:"xs"},oe.createElement(fe,{color:"dimmed",to:e.resource},fp(s)),oe.createElement(ba,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(fe,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(ol,{position:"bottom-end",shadow:"md",width:200},oe.createElement(ol.Target,null,oe.createElement(ap,{radius:"xl","aria-label":`Actions for ${lp(e.resource)}`},oe.createElement(Nr,null))),a)),oe.createElement(ho,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function nl(e,o){e.sort((t,r)=>{let a=rl(t,o),n=rl(r,o);return a>n?1:a<n?-1:al(t,o)-al(r,o)})}function rl(e,o){if(!fl(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function al(e,o){if(!fl(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 fl(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Ip=ip(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function _e(e){let o=P(),t=Ue(),r=o.getProfile(),a=il(null),n=W(e.value),[f,s]=ul(),[l,i]=ul([]),u=e.loadTimelineResources,c=il(l);c.current=l;let d=zt(h=>{nl(h,n),h.reverse(),i(h)},[n]),x=zt(h=>{let H=[];for(let Me of h){if(Me.status!=="fulfilled")continue;let C=Me.value;if(C.type==="history"&&s(C),C.entry)for(let U of C.entry)H.push(U.resource)}d(H)},[d]),y=zt(h=>d([...c.current,h]),[d]),g=zt(()=>{let h,H;"resourceType"in e.value?(h=e.value.resourceType,H=e.value.id):[h,H]=e.value.reference?.split("/"),u(o,h,H).then(x).catch(console.log)},[o,e.value,u,x]);xp(()=>g(),[g]);function k(h){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,h)).then(H=>y(H)).catch(console.log)}function B(h){!n||!e.createMedia||o.createResource(e.createMedia(n,r,h)).then(H=>y(H)).then(()=>Qt({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement(Wo,{size:16}),autoClose:2e3})).catch(H=>Qt({id:"upload-notification",color:"red",title:"Upload error",message:sl(H),icon:D.createElement(gt,{size:16}),autoClose:2e3}))}function T(h,H){return o.updateResource({...h,priority:H})}function A(h){T(h,"stat").then(g).catch(console.log)}function z(h){T(h,"routine").then(g).catch(console.log)}function v(h){t(`/${h.resourceType}/${h.id}`)}function L(h){t(`/${h.resourceType}/${h.id}/edit`)}function _(h){t(`/${h.resourceType}/${h.id}/delete`)}function re(h){t(`/${h.resourceType}/${h.id}/_history/${h.meta?.versionId}`)}function Le(){pp({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function oo(h){Qt({id:"upload-notification",loading:!0,title:"Uploading...",message:bp(h),autoClose:!1,withCloseButton:!1})}function de(h){Qt({id:"upload-notification",color:"red",title:"Upload error",message:sl(h),icon:D.createElement(gt,{size:16}),autoClose:2e3})}return n?D.createElement(tl,null,e.createCommunication&&D.createElement(wo,null,D.createElement(J,{testid:"timeline-form",onSubmit:h=>{k(h.text);let H=a.current;H&&(H.value="",H.focus())}},D.createElement(up,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(Ie,{value:r}),D.createElement(mp,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement(ll,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(Qr,{size:16})),D.createElement(Do,{onUpload:B,onUploadStart:Le,onUploadProgress:oo,onUploadError:de},h=>D.createElement(ll,{...h,radius:"xl",color:"blue",variant:"filled"},D.createElement(Xo,{size:16})))))),l.map(h=>{if(!h)return null;let H=`${h.resourceType}/${h.id}/${h.meta?.versionId}`;if(h.resourceType===n.resourceType&&h.id===n.id)return D.createElement(gp,{key:H,history:f,resource:h,onDetails:re});switch(h.resourceType){case"AuditEvent":return D.createElement(vp,{key:H,resource:h,onDetails:v});case"Communication":return D.createElement(Cp,{key:H,resource:h,onPin:h.priority!=="stat"?A:void 0,onUnpin:h.priority==="stat"?z:void 0,onDetails:v,onEdit:L,onDelete:_});case"DiagnosticReport":return D.createElement(Sp,{key:H,resource:h,onDetails:v,onEdit:L,onDelete:_});case"Media":return D.createElement(yp,{key:H,resource:h,onDetails:v,onEdit:L,onDelete:_});default:return D.createElement(je,{key:H,resource:h,padding:!0},D.createElement(Sa,{value:h,ignoreMissingValues:!0}))}})):D.createElement(sp,{style:{width:"100%",height:"100%"}},D.createElement(dp,null))}function Oo(e){return D.createElement(qe.Dropdown,null,D.createElement(qe.Label,null,"Resource"),e.onPin&&D.createElement(qe.Item,{icon:D.createElement(zr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${at(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(qe.Item,{icon:D.createElement(Wr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${at(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(qe.Item,{icon:D.createElement(Gr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${at(e.resource)}`},"Details"),e.onEdit&&D.createElement(qe.Item,{icon:D.createElement(Hr,{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 gp(e){let o=hp(e.history,e.resource);return o?D.createElement(je,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Oo,{...e})},D.createElement(el,{original:o,revised:e.resource})):D.createElement(je,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Oo,{...e})},D.createElement("h3",null,"Created"),D.createElement(Sa,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function hp(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 Cp(e){let{classes:o}=Ip(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return D.createElement(je,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:D.createElement(Oo,{...e})},D.createElement("p",null,e.resource.payload?.[0]?.contentString))}function yp(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return D.createElement(je,{resource:e.resource,padding:!!t,popupMenuItems:D.createElement(Oo,{...e})},D.createElement(we,{value:e.resource.content}))}function vp(e){return D.createElement(je,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Oo,{...e})},D.createElement(cp,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function Sp(e){return D.createElement(je,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Oo,{...e})},D.createElement(va,{value:e.resource}))}function bp(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${Pa(e.loaded)} / ${Pa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${Pa(e.loaded)}`}function Pa(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function LA(e){return Pp.createElement(_e,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import dl from"react";function Wt(e){let{children:o,...t}=e;return dl.createElement($e,null,dl.createElement(wo,{...t},o))}import{createReference as Xt}from"@medplum/core";import Dp from"react";function JA(e){return Dp.createElement(_e,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Xt(o),subject:o.subject,sender:Xt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Xt(o),subject:o.subject,operator:Xt(t),issued:new Date().toISOString(),content:r})})}import{Button as Vx,Loader as qx,Table as Gx}from"@mantine/core";import{normalizeOperationOutcome as Ux}from"@medplum/core";import te,{useEffect as Ql,useRef as zl,useState as er}from"react";import{evalFhirPath as kp}from"@medplum/core";import Tp from"react";function cl(e){let o;try{o=kp(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 Tp.createElement(ce,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Px,Button as Ho,Center as Zt,createStyles as Dx,Group as Yt,Loader as kx,Menu as ql,Pagination as Tx,Table as Bx,Text as Oa,UnstyledButton as Ax}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Na,formatSearchQuery as Fx}from"@medplum/core";import S,{useCallback as Gl,useEffect as Ul,useRef as Mx,useState as Ea}from"react";import{Box as Bp,Button as Ap,Modal as Fp,Text as Mp}from"@mantine/core";import Eo from"react";function pl(e){return Eo.createElement(Fp,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Eo.createElement(Bp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Eo.createElement(ml,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Eo.createElement(ml,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Eo.createElement(Mp,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function ml(e){return Eo.createElement(Ap,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as Gp,Group as Up,Modal as Qp,MultiSelect as zp,Stack as Wp}from"@mantine/core";import{getDataType as Xp,getSearchParameters as Jp,stringify as $p}from"@medplum/core";import Ro,{useEffect as Kp,useMemo as jp,useRef as _p,useState as Al}from"react";import{capitalize as wp,DEFAULT_SEARCH_COUNT as Op,evalFhirPathTyped as Ep,formatDateTime as Lp,Operator as M}from"@medplum/core";import Jt from"react";var Rp={string:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],fulltext:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],token:[M.EQUALS,M.NOT],reference:[M.EQUALS,M.NOT],numeric:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],quantity:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],date:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY],datetime:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY]},Np={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function nt(e,o){return{...e,filters:o,offset:0,name:void 0}}function iF(e){return nt(e,[])}function $t(e,o){return nt(e,(e.filters??[]).filter(t=>t.code!==o))}function Lo(e,o,t,r,a){a&&(e=$t(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),nt(e,n)}function uF(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 Il(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function gl(e,o){return Da(e,o,-1)}function hl(e,o){return Da(e,o,0)}function Cl(e,o){return Da(e,o,1)}function Da(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),Ta(e,o,r,a)}function yl(e,o){return ka(e,o,-1)}function vl(e,o){return ka(e,o,0)}function Sl(e,o){return ka(e,o,1)}function ka(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),Ta(e,o,r,a)}function bl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ta(e,o,t,new Date)}function Ta(e,o,t,r){return e=$t(e,o),e=xl(e,o,M.GREATER_THAN_OR_EQUALS,t),e=xl(e,o,M.LESS_THAN_OR_EQUALS,r),e}function xl(e,o,t,r){return Lo(e,o,t,r.toISOString())}function Ba(e,o,t=!0){return Lo(e,o,M.MISSING,t.toString())}function Hp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Pl(e,o){let t=e.count??Op,r=(o-1)*t;return Hp(e,r)}function Aa(e,o,t){return o===Dl(e)&&t!==void 0&&t===kl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function dF(e,o){let t=!1;return Dl(e)===o&&(t=!kl(e)),Aa(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 kl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Tl(e){return Rp[e.type]}function ft(e){return Np[e]??""}function be(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),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.toLowerCase()==="id"?"ID":o.split(/\s/).map(wp).join(" "))}function Bl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Lp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Vp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?qp(e,o.searchParams[0]):null}function Vp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=he({type:e.resourceType,value:e},t);return r?Jt.createElement(ce,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function qp(e,o){let t=Ep(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Jt.createElement(Jt.Fragment,null,t.map((r,a)=>Jt.createElement(ce,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Fl(e){let o=_p(!1),[t,r]=Al({search:JSON.parse($p(e.search))}),[a,n]=Al(!1);Kp(()=>{r({search:e.search})},[e.search]);let f=jp(()=>{if(!e.visible)return[];let l=e.search.resourceType,i=Xp(l),u=Jp(l);return Zp(i,u).sort((c,d)=>c.localeCompare(d)).map(c=>({value:c,label:be(c)}))},[e.visible,e.search.resourceType]);if(!e.visible)return null;function s(l){r({search:{...t.search,fields:l}})}return Ro.createElement(Qp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>{e.onCancel()},size:"auto",withOverlay:!0,closeOnClickOutside:!1,overlayProps:{onMouseDownCapture:()=>{o.current=a},onClick:()=>{o.current||e.onCancel(),o.current=!1},children:Ro.createElement("div",{"data-testid":"overlay-child"})}},Ro.createElement(Wp,null,Ro.createElement(zp,{withinPortal:!0,style:{width:550},placeholder:"Select fields to display",data:f,value:t.search.fields??[],onChange:s,onDropdownOpen:()=>n(!0),onDropdownClose:()=>n(!1),maxDropdownHeight:"250px",dropdownPosition:"bottom",clearButtonProps:{"aria-label":"Clear selection"},clearable:!0,searchable:!0}),Ro.createElement(Up,{position:"right"},Ro.createElement(Gp,{onClick:()=>e.onOk(t.search)},"OK"))))}function Zp(e,o){let t=[],r=new Set,a=new Set;for(let n of Object.keys(e.elements))t.push(n),r.add(n.toLowerCase()),a.add(be(n));if(o)for(let n of Object.keys(o)){let f=be(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(f))}return t}import{Button as st,Group as fx,Modal as lx,NativeSelect as wl}from"@mantine/core";import{getSearchParameters as sx,stringify as Ol}from"@medplum/core";import E,{useEffect as ix,useRef as Ll,useState as Ma}from"react";import{formatDateTime as Yp,getSearchParameterDetails as ex,globalSchema as ox,Operator as Ml,SearchParameterType as tx}from"@medplum/core";import lt from"react";function Kt(e){let{resourceType:o,filter:t}=e,r=ox.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Ml.EQUALS||t.operator===Ml.NOT_EQUALS))return lt.createElement(Oe,{value:{reference:t.value}});let a=ex(o,r);if(t.code==="_lastUpdated"||a.type===tx.DATETIME)return lt.createElement(lt.Fragment,null,Yp(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as rx,TextInput as Fa}from"@mantine/core";import{getSearchParameterDetails as ax,SearchParameterType as No}from"@medplum/core";import lo from"react";function jt(e){let o=ax(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case No.REFERENCE:return lo.createElement(Fo,{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 No.BOOLEAN:return lo.createElement(rx,{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 No.DATE:return lo.createElement(Fa,{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 No.DATETIME:return lo.createElement(ke,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case No.NUMBER:return lo.createElement(Fa,{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 No.QUANTITY:return lo.createElement(ve,{name:t,defaultValue:nx(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return lo.createElement(Fa,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function nx(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Rl(e){let[o,t]=Ma(JSON.parse(Ol(e.search))),[r,a]=Ma(-1),n=Ll(o);n.current=o,ix(()=>{t(JSON.parse(Ol(e.search)))},[e.search]);function f(u){t(Lo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=sx(s)??{},i=o.filters||[];return E.createElement(lx,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},E.createElement("div",null,E.createElement("table",null,E.createElement("colgroup",null,E.createElement("col",{style:{width:200}}),E.createElement("col",{style:{width:200}}),E.createElement("col",{style:{width:380}}),E.createElement("col",{style:{width:120}})),E.createElement("thead",null,E.createElement("tr",null,E.createElement("th",null,"Field"),E.createElement("th",null,"Operation"),E.createElement("th",null,"Value"),E.createElement("th",null,"Actions"))),E.createElement("tbody",null,i.map((u,c)=>c===r?E.createElement(El,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:d=>{let x=[...i];x[c]=d,t(nt(n.current,x)),a(-1)},onCancel:()=>a(-1)}):E.createElement(ux,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(c),onDelete:()=>t(Il(n.current,c))})),E.createElement(El,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),E.createElement(fx,{position:"right",mt:"xl"},E.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function ux(e){let{filter:o}=e;return E.createElement("tr",null,E.createElement("td",null,be(o.code)),E.createElement("td",null,ft(o.operator)),E.createElement("td",null,E.createElement(Kt,{resourceType:e.resourceType,filter:o})),E.createElement("td",null,E.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),E.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function El(e){let[o,t]=Ma(e.defaultValue??{}),r=Ll(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let s=e.searchParams[o.code],l=s&&Tl(s);return E.createElement("tr",null,E.createElement("td",null,E.createElement(wl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:be(i)}))]})),E.createElement("td",null,l&&E.createElement(wl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:ft(i)}))]})),E.createElement("td",null,s&&o.operator&&E.createElement(jt,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),E.createElement("td",null,o.code&&o.operator&&E.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&E.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as dx,Grid as wa,Modal as cx}from"@mantine/core";import so,{useState as mx}from"react";function Nl(e){let[o,t]=mx(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return so.createElement(cx,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},so.createElement(J,{onSubmit:r},so.createElement(wa,null,so.createElement(wa.Col,{span:10},so.createElement(jt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),so.createElement(wa.Col,{span:2},so.createElement(dx,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as ie}from"@medplum/core";import m from"react";function Hl(e){if(!e.searchParams)return null;function o(n,f){a(Aa(e.search,n.code,f))}function t(n){a($t(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(px,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(F.Dropdown,null,e.searchParams.map(n=>m.createElement(F.Item,{key:n.code},be(n.code))))}function px(e){switch(e.searchParam.type){case"date":return m.createElement(xx,{...e});case"number":case"quantity":return m.createElement(Ix,{...e});case"reference":return m.createElement(gx,{...e});case"string":case"token":case"uri":return m.createElement(hx,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function xx(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ct,{size:14}),onClick:()=>e.onPrompt(o,ie.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,ie.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(Ar,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Cl(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(hl(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(gl(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Sl(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(vl(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(yl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(bl(e.search,t))},"Year to date"),m.createElement(_t,{...e}))}function Ix(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(Ct,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(_t,{...e}))}function gx(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),m.createElement(_t,{...e}))}function hx(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Mr,{size:14}),onClick:()=>e.onPrompt(o,ie.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(Fr,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Does not contain..."),m.createElement(_t,{...e}))}function _t(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Tr,{size:14}),onClick:()=>e.onChange(Ba(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(kr,{size:14}),onClick:()=>e.onChange(Ba(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Zr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as Cx,getSearchParameter as yx,getSearchParameterDetails as vx,getSearchParameters as Sx}from"@medplum/core";function Vl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(bx(o,r));return t}function bx(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=Cx(e,o),r=yx(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=Sx(e),n;if(a){let f=new RegExp(`${e}\\.${o.replaceAll("[x]","")}([^\\w-]|$)`);n=Object.values(a).filter(s=>!!s.expression&&f.test(s?.expression)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=vx(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var La=class extends Event{constructor(t){super("change");this.definition=t}},Ra=class extends Event{constructor(t){super("load");this.response=t}},io=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},wx=Dx(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 Ox(e){let{classes:o}=wx(),t=P(),[r,a]=Ea(!1),[n,f]=Ea(),{search:s,onLoad:l}=e,[i,u]=Ea({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),c=Mx(i);c.current=i;let d=s.total??"accurate",x=Gl(C=>{f(void 0),t.search(s.resourceType,Fx({...s,total:d,fields:void 0}),C).then(U=>{u({...c.current,searchResponse:U}),l&&l(new Ra(U))}).catch(U=>{u({...c.current,searchResponse:void 0}),f(U)})},[t,s,d,l]),y=Gl(()=>{u({...c.current,searchResponse:void 0}),x({cache:"reload"})},[x]);Ul(()=>{x()},[x]);function g(C,U){C.stopPropagation();let ae=C.target.checked,ee={...c.current.selected};ae?ee[U]=!0:delete ee[U],u({...c.current,selected:ee})}function k(C){C.stopPropagation();let Re=C.target.checked,ae={},ee=c.current.searchResponse;Re&&ee?.entry&&ee.entry.forEach(ye=>{ye.resource?.id&&(ae[ye.resource.id]=!0)}),u({...c.current,selected:ae})}function B(){let C=c.current;if(!C.searchResponse?.entry||C.searchResponse.entry.length===0)return!1;for(let U of C.searchResponse.entry)if(U.resource?.id&&!C.selected[U.resource.id])return!1;return!0}function T(C){e.onChange&&e.onChange(new La(C))}function A(C,U){if(vt(C.target)||C.button===2)return;R(C);let Re=C.button===1||C.ctrlKey||C.metaKey;!Re&&e.onClick&&e.onClick(new io(U,C)),Re&&e.onAuxClick&&e.onAuxClick(new io(U,C))}function z(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Ul(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return S.createElement(Zt,{style:{width:"100%",height:"100%"}},S.createElement(kx,null));let v=e.checkboxesEnabled,L=Vl(s),_=s.resourceType,re=i.searchResponse,oo=re?.entry?.map(C=>C.resource),de="subtle",h="gray",H=16,Me=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(Yt,{position:"apart",mb:"xl"},S.createElement(Yt,{spacing:2},S.createElement(Ho,{compact:!0,variant:de,color:h,leftIcon:S.createElement(Er,{size:H}),onClick:()=>u({...c.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Ho,{compact:!0,variant:de,color:h,leftIcon:S.createElement(qr,{size:H}),onClick:()=>u({...c.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Ho,{compact:!0,variant:de,color:h,leftIcon:S.createElement(Vr,{size:H}),onClick:e.onNew},"New..."),!Me&&z()&&S.createElement(Ho,{compact:!0,variant:de,color:h,leftIcon:S.createElement(_r,{size:H}),onClick:e.onExport?e.onExport:()=>u({...c.current,exportDialogVisible:!0})},"Export..."),!Me&&e.onDelete&&S.createElement(Ho,{compact:!0,variant:de,color:h,leftIcon:S.createElement(Ko,{size:H}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Me&&e.onBulk&&S.createElement(Ho,{compact:!0,variant:de,color:h,leftIcon:S.createElement(Br,{size:H}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(Yt,{spacing:2},re&&S.createElement(Oa,{size:"xs",color:"dimmed"},Nx(s,re.total),"-",Hx(s,re.total)," of"," ",`${d==="estimate"?"~":""}${re.total?.toLocaleString()}`),S.createElement(Px,{title:"Refresh",onClick:y},S.createElement(Jr,{size:"1.125rem"})))),S.createElement(Bx,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,v&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:C=>k(C)})),L.map(C=>S.createElement("th",{key:C.name},S.createElement(ql,{shadow:"md",width:240,position:"bottom-end"},S.createElement(ql.Target,null,S.createElement(Ax,{className:o.control},S.createElement(Yt,{position:"apart",noWrap:!0},S.createElement(Oa,{weight:500,size:"sm"},be(C.name)),S.createElement(Zt,{className:o.icon},S.createElement(br,{size:14,stroke:1.5}))))),S.createElement(Hl,{search:e.search,searchParams:C.searchParams,onPrompt:(U,Re)=>{u({...c.current,filterDialogVisible:!0,filterDialogSearchParam:U,filterDialogFilter:Re})},onChange:U=>{T(U)}}))))),!e.hideFilters&&S.createElement("tr",null,v&&S.createElement("th",null),L.map(C=>S.createElement("th",{key:C.name},C.searchParams&&S.createElement(Ex,{resourceType:_,searchParams:C.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,oo?.map(C=>C&&S.createElement("tr",{key:C.id,className:o.tr,"data-testid":"search-control-row",onClick:U=>A(U,C),onAuxClick:U=>A(U,C)},v&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!i.selected[C.id],onChange:U=>g(U,C.id)})),L.map(U=>S.createElement("td",{key:U.name},Bl(C,U))))))),oo?.length===0&&S.createElement($e,null,S.createElement(Zt,{style:{height:150}},S.createElement(Oa,{size:"xl",color:"dimmed"},"No results"))),re?.total!==void 0&&re.total>0&&S.createElement(Zt,{m:"md",p:"md"},S.createElement(Tx,{value:Lx(s),total:Rx(s,re.total),onChange:C=>T(Pl(s,C)),getControlProps:C=>{switch(C){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(Fl,{search:e.search,visible:c.current.fieldEditorVisible,onOk:C=>{T(C),u({...c.current,fieldEditorVisible:!1})},onCancel:()=>{u({...c.current,fieldEditorVisible:!1})}}),S.createElement(Rl,{search:e.search,visible:c.current.filterEditorVisible,onOk:C=>{T(C),u({...c.current,filterEditorVisible:!1})},onCancel:()=>{u({...c.current,filterEditorVisible:!1})}}),S.createElement(pl,{visible:c.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...c.current,exportDialogVisible:!1})}}),S.createElement(Nl,{key:i.filterDialogSearchParam?.code,visible:c.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?be(i.filterDialogSearchParam.code):"",resourceType:_,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:C=>{T(Lo(e.search,C.code,C.operator,C.value)),u({...c.current,filterDialogVisible:!1})},onCancel:()=>{u({...c.current,filterDialogVisible:!1})}}))}var SM=S.memo(Ox);function Ex(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},ft(t.operator),"\xA0",S.createElement(Kt,{resourceType:e.resourceType,filter:t}))))}function Lx(e){return Math.floor((e.offset??0)/(e.count??Na))+1}function Rx(e,o){let t=e.count??Na;return Math.ceil(o/t)}function Nx(e,o){return Math.min(o,(e.offset??0)+1)}function Hx(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Na))}function Qx(e){let o=P(),[t,r]=er(!1),[a,n]=er(),{query:f,fields:s}=e,[l,i]=er(),[u,c]=er({}),d=zl();d.current=l;let x=zl({});x.current=u,Ql(()=>{n(void 0),o.graphql(f).then(i).catch(A=>n(Ux(A)))},[o,f]);function y(A,z){A.stopPropagation();let L=A.target.checked,_={...x.current};L?_[z]=!0:delete _[z],c(_)}function g(A){A.stopPropagation();let v=A.target.checked,L={},_=d.current?.data.ResourceList;v&&_&&_.forEach(re=>{re.id&&(L[re.id]=!0)}),c(L)}function k(){let A=d.current?.data.ResourceList;if(!A||A.length===0)return!1;for(let z of A)if(z.id&&!x.current[z.id])return!1;return!0}function B(A,z){vt(A.target)||(R(A),A.button!==1&&e.onClick&&e.onClick(new io(z,A)),A.button===1&&e.onAuxClick&&e.onAuxClick(new io(z,A)))}if(Ql(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return te.createElement(qx,null);let T=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:A=>R(A),"data-testid":"search-control"},te.createElement(Gx,null,te.createElement("thead",null,te.createElement("tr",null,T&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:k(),onChange:A=>g(A)})),s.map(A=>te.createElement("th",{key:A.name},A.name)))),te.createElement("tbody",null,l?.data.ResourceList.map(A=>A&&te.createElement("tr",{key:A.id,"data-testid":"search-control-row",onClick:z=>B(z,A),onAuxClick:z=>B(z,A)},T&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${A.id}`,checked:!!u[A.id],onChange:z=>y(z,A.id)})),s.map(z=>te.createElement("td",{key:z.name},te.createElement(cl,{propertyType:z.propertyType,path:z.fhirPath,resource:A}))))))),l?.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(Vx,{onClick:()=>e.onBulk(Object.keys(x.current))},"Bulk..."))}var MM=te.memo(Qx);import uo from"react";function Ze(e){return uo.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},uo.createElement("title",null,"Medplum Logo"),uo.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),uo.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"}),uo.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"}),uo.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),uo.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as zx}from"@mantine/core";import{operationOutcomeIssueToString as Wx}from"@medplum/core";import Ha from"react";function Vo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Ha.createElement(zx,{icon:Ha.createElement(ro,{size:16}),color:"red"},o.map(t=>Ha.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},Wx(t))))}import{createReference as or}from"@medplum/core";import Xx,{useCallback as Jx}from"react";function WM(e){let o=Jx((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 Xx.createElement(_e,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:or(t),sender:or(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:or(t),operator:or(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Xl,Button as $x,createStyles as Kx,NativeSelect as jx,Stack as _x,TextInput as qa}from"@mantine/core";import{getReferenceString as Zx}from"@medplum/core";import V,{useEffect as Wl,useRef as Jl,useState as it}from"react";var $l=Kx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function lw(e){let o=P(),t=W(e.value),[r,a]=it(!1),[n,f]=it(),[s,l]=it(),[i,u]=it();function c(){l(void 0)}function d(){f(void 0)}let x=Jl();if(x.current=i,Wl(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),Wl(()=>(u(aI(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]),!r||!i)return null;function y(g,k){u({...x.current,[g]:k})}return V.createElement("div",null,V.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},V.createElement(qa,{label:"Plan Title",defaultValue:i.title,onChange:g=>y("title",g.currentTarget.value)}),V.createElement(Kl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:g=>y("action",g)}),V.createElement($x,{type:"submit"},"Save")))}function Kl(e){let{classes:o}=$l(),t=Jl();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return V.createElement("div",{className:o.section},e.actions.map(f=>V.createElement("div",{key:f.id},V.createElement(Yx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),V.createElement("div",{className:o.bottomActions},V.createElement(Xl,{href:"#",onClick:f=>{R(f),a({id:_l()})}},"Add action")))}function Yx(e){let{classes:o,cx:t}=$l(),{action:r}=e,a=rI(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){R(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return V.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?V.createElement(oI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):V.createElement(eI,{action:r,actionType:a}),V.createElement("div",{className:o.bottomActions},V.createElement(Xl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ga={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function eI(e){let{action:o,actionType:t}=e,[r,a]=jl(o);return V.createElement("div",null,V.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&V.createElement("div",null,V.createElement(no,{value:{reference:o.definitionCanonical}})),r&&V.createElement("div",null,V.createElement(ce,{property:Ga,propertyType:a,value:r})))}function oI(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return V.createElement(_x,{spacing:"xl"},V.createElement(qa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),V.createElement(qa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),V.createElement(jx,{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&&V.createElement(Kl,{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 V.createElement(tr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return V.createElement(tr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return V.createElement(tr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return V.createElement(tr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),V.createElement(Ce,{title:"Timing",description:"When the action should take place."},V.createElement(tI,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function tr(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return V.createElement(Nt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Zx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function tI(e){let o=e.action,t="timing",[r,a]=jl(o);return V.createElement(Ve,{property:Ga,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(ot(o,t,f??t,Ga,n))}})}function rI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function jl(e){return he({type:"PlanDefinitionAction",value:e},"timing")}var Va=1;function _l(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Va=Math.max(Va,o+1))}return e}return"id-"+Va++}function aI(e){return{...e,action:Zl(e.action)}}function Zl(e){if(e)return e.map(o=>({...o,id:_l(o.id),action:Zl(o.action)}))}import{Anchor as Pe,Box as Ja,Button as FI,createStyles as MI,Group as wI,NativeSelect as OI,Space as EI,Textarea as LI,TextInput as $a,Title as RI}from"@mantine/core";import{getElementDefinition as NI,isResource as HI}from"@medplum/core";import b,{useEffect as ms,useRef as VI,useState as lr}from"react";import{Checkbox as xI,Group as II,MultiSelect as gI,NativeSelect as hI,Radio as ls,Textarea as CI,TextInput as qo}from"@mantine/core";import{capitalize as Wa,deepEquals as yI,formatCodeableConcept as vI,formatCoding as fr,getElementDefinition as SI,getTypedPropertyValue as Ye,stringify as ss}from"@medplum/core";import X from"react";import{deepClone as nI,evalFhirPathTyped as fI,formatCoding as lI,getExtension as Qa,getTypedPropertyValue as Ua,getReferenceString as sI,stringify as iI}from"@medplum/core";var rr=(B=>(B.group="group",B.display="display",B.question="question",B.boolean="boolean",B.decimal="decimal",B.integer="integer",B.date="date",B.dateTime="dateTime",B.time="time",B.string="string",B.text="text",B.url="url",B.choice="choice",B.openChoice="open-choice",B.attachment="attachment",B.reference="reference",B.quantity="quantity",B))(rr||{});function Yl(e){return e.type==="choice"||e.type==="open-choice"}function es(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=ts(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=dI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function os(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>lI(f.valueCoding)===r||f[o]===r),n=Ua({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function ts(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=ts(t.item,o);if(r)return r}}}function uI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=fI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function dI(e,o,t){let r=o||[],a=Ua({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Ua({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(uI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function ar(e){let o=Qa(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(o){if(o.valueCode!==void 0)return[o.valueCode];if(o.valueCodeableConcept)return o.valueCodeableConcept?.coding?.map(t=>t.code)}}function nr(e,o){let t=nI(e),r=Qa(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?(r&&(t.extension=t.extension?.filter(a=>a!==r)),t):(r||(t.extension||(t.extension=[]),r={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},t.extension.push(r)),o.length===1?(r.valueCode=o[0],delete r.valueCodeableConcept):(r.valueCodeableConcept={coding:o.map(a=>({code:a}))},delete r.valueCode),t)}function rs(e){return{resourceType:"QuestionnaireResponse",questionnaire:sI(e),item:as(e.item)}}function as(e){return e?.map(za)??[]}function za(e){return{id:mI(),linkId:e.linkId,text:e.text,item:as(e.item),answer:e.initial?.map(pI)??[]}}var cI=1;function mI(){return"id-"+cI++}function pI(e){return{...e}}function ns(e){return e.value.display||e.value.reference||iI(e.value)}function fs(e){let o=e?.item?.[0];return o&&Qa(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function ut(e){let o=e.item,t=e.response;function r(l){let i;Array.isArray(l)?i=l:e.index>=(e.response?.answer?.length??0)?i=(e.response?.answer??[]).concat([l]):i=(e.response?.answer??[]).map((c,d)=>d===e.index?l:c)??[],e.onChange({id:t?.id,linkId:t?.linkId,text:o.text,answer:i})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=Xa(t,e.index)??Ye({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"display":return X.createElement("p",{key:e.item.linkId},e.item.text);case"boolean":return X.createElement(Ft,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},X.createElement(xI,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked})}));case"decimal":return X.createElement(qo,{type:"number",step:"any",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return X.createElement(qo,{type:"number",step:1,id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber})});case"date":return X.createElement(qo,{type:"date",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value})});case"dateTime":return X.createElement(ke,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDateTime:l})});case"time":return X.createElement(qo,{type:"time",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value})});case"string":case"url":return X.createElement(qo,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value})});case"text":return X.createElement(CI,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value})});case"attachment":return X.createElement(II,{py:4},X.createElement(Pt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l})}));case"reference":return X.createElement(Fo,{name:n,required:o.required,targetTypes:ar(o),defaultValue:s?.value,onChange:l=>r({valueReference:l})});case"quantity":return X.createElement(ve,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return BI(o)&&!o.answerValueSet?X.createElement(bI,{name:n,item:o,initial:f,response:t,onChangeAnswer:l=>r(l)}):X.createElement(PI,{name:n,item:o,initial:f,response:t,onChangeAnswer:l=>r(l)});default:return null}}function bI(e){let{name:o,item:t,initial:r,response:a}=e;if(!t.answerOption?.length)return X.createElement(ds,null);let n=Ye({type:"QuestionnaireItemInitial",value:r},"value"),f=[""];for(let l of t.answerOption){let i=Ye({type:"QuestionnaireItemAnswerOption",value:l},"value");f.push(is(i))}let s=Xa(a)??n;if(t.repeats){let{propertyName:l,data:i}=AI(e.item),u=kI(a);return X.createElement(gI,{data:i,placeholder:"Select items",searchable:!0,defaultValue:u||[is(n)],onChange:c=>{let d=os(c,l,t);e.onChangeAnswer(d)}})}return X.createElement(hI,{id:o,name:o,onChange:l=>{let i=l.currentTarget.selectedIndex;if(i===0){e.onChangeAnswer({});return}let u=t.answerOption[i-1],c=Ye({type:"QuestionnaireItemAnswerOption",value:u},"value"),d="value"+Wa(c.type);e.onChangeAnswer({[d]:c.value})},defaultValue:fr(s?.value)||s?.value,data:f})}function PI(e){let{name:o,item:t,initial:r,onChangeAnswer:a,response:n}=e;return!t.answerOption?.length&&!t.answerValueSet?X.createElement(ds,null):t.answerValueSet?X.createElement(wt,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):X.createElement(DI,{name:n?.id??o,item:t,initial:r,response:n,onChangeAnswer:a})}function DI(e){let{name:o,item:t,initial:r,onChangeAnswer:a,response:n}=e,f=SI("QuestionnaireItemAnswerOption","value[x]"),s=Ye({type:"QuestionnaireItemInitial",value:r},"value"),l=[],i;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let x=t.answerOption[d],y=`${o}-option-${d}`,g=Ye({type:"QuestionnaireItemAnswerOption",value:x},"value");s&&ss(g)===ss(s)&&(i=y),l.push([y,g])}let u=Xa(n),c=TI(l,u);return X.createElement(ls.Group,{name:o,value:c??i,onChange:d=>{let x=l.find(y=>y[0]===d);if(x){let y=x[1],g="value"+Wa(y.type);a({[g]:y.value})}}},l.map(([d,x])=>X.createElement(ls,{key:d,id:d,value:d,py:4,label:X.createElement(ce,{property:f,propertyType:x.type,value:x.value})})))}function ds(){return X.createElement(qo,{disabled:!0,placeholder:"No Answers Defined"})}function cs(e){return Ye({type:"QuestionnaireItemAnswer",value:e},"value")}function Xa(e,o=0){let t=e.answer;return cs(t?.[o]??{})}function kI(e){let o=e.answer;return o?o.map(r=>cs(r)).map(r=>fr(r?.value)||r?.value):[]}function TI(e,o){return e.find(t=>yI(t[1].value,o?.value))?.[0]}function is(e){if(e)return e.type==="CodeableConcept"?vI(e.value):e.type==="Coding"?fr(e.value):e.type==="Reference"?ns(e):e.value.toString()}function BI(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function AI(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=Ye({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Wa(t.type),a=(e.answerOption??[]).map(n=>({value:us(n,r),label:us(n,r)}));return{propertyName:r,data:a}}function us(e,o){return fr(e.valueCoding)||e[o]?.toString()}var qI=MI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:32,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function Hw(e){let o=P(),t=W(e.questionnaire),[r,a]=lr(!1),[n,f]=lr(),[s,l]=lr(),[i,u]=lr();function c(){u(void 0)}function d(){l(void 0)}return ms(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),ms(()=>(f(zI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]),!r||!n?null:b.createElement("div",null,b.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},b.createElement(ps,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),b.createElement(FI,{type:"submit"},"Save")))}function ps(e){let{classes:o,cx:t}=qI(),r=e.item,a=e.item,n=HI(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=VI();u.current=e.item;function c(v){R(v),e.setSelectedKey(e.item.id)}function d(v){R(v),e.setHoverKey(e.item.id)}function x(v){let L=u.current;e.onChange({...L,item:L.item?.map(_=>_.id===v.id?v:_)})}function y(v){e.onChange({...e.item,item:[...e.item.item??[],v]})}function g(v){e.onChange({...e.item,item:e.item.item?.filter(L=>L!==v)})}function k(v,L){e.onChange({...u.current,[v]:L})}function B(v){e.onChange({...e.item,...v})}function T(v){e.onChange({...e.item,item:e.item.item?.map(L=>L===v?{...L,repeats:!L.repeats}:L)})}function A(v,L){let _=JI(e.item.item,v,L);e.onChange({...e.item,item:_})}let z=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return b.createElement("div",{"data-testid":a.linkId,className:z,onClick:c,onMouseOver:d},b.createElement("div",{className:o.questionBody},l?b.createElement(b.Fragment,null,n&&b.createElement($a,{size:"xl",defaultValue:r.title,onChange:v=>k("title",v.currentTarget.value)}),!n&&b.createElement(LI,{autosize:!0,minRows:2,defaultValue:a.text,onChange:v=>k("text",v.currentTarget.value)}),a.type==="reference"&&b.createElement(QI,{item:a,onChange:B}),Yl(a)&&b.createElement(GI,{item:a,onChange:v=>B(v)})):b.createElement(b.Fragment,null,r.title&&b.createElement(RI,null,r.title),a.text&&b.createElement("div",null,a.text),!f&&b.createElement(ut,{item:a,index:0,onChange:()=>{},response:{}}))),a.item?.map((v,L)=>b.createElement("div",{key:v.id},b.createElement(ps,{item:v,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:L===0,isLast:L===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:x,onRemove:()=>g(v),onRepeatable:T,onMoveUp:()=>A(L,-1),onMoveDown:()=>A(L,1)}))),!f&&b.createElement("div",{className:o.topActions},l?b.createElement(b.Fragment,null,b.createElement($a,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:v=>k("linkId",v.currentTarget.value)}),!f&&b.createElement(OI,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:v=>k("type",v.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"}]})):b.createElement("div",null,s)),!n&&b.createElement(Ja,{className:o.movementActions},b.createElement(Ja,{className:o.columnAlignment},!e.isFirst&&b.createElement(Pe,{href:"#",onClick:v=>{v.preventDefault(),e.onMoveUp&&e.onMoveUp()}},b.createElement(Dr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&b.createElement(Pe,{href:"#",onClick:v=>{v.preventDefault(),e.onMoveDown&&e.onMoveDown()}},b.createElement(Pr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),b.createElement("div",{className:o.bottomActions},f&&b.createElement(b.Fragment,null,b.createElement(Pe,{href:"#",onClick:v=>{v.preventDefault(),y({id:co(),linkId:_a("q"),type:"string",text:"Question"})}},"Add item"),b.createElement(Pe,{href:"#",onClick:v=>{v.preventDefault(),y({id:co(),linkId:_a("g"),type:"group",text:"Group"})}},"Add group")),n&&b.createElement(Pe,{href:"#",onClick:v=>{v.preventDefault(),y(XI())}},"Add Page"),l&&!n&&b.createElement(b.Fragment,null,b.createElement(Pe,{href:"#",onClick:v=>{v.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),b.createElement(Pe,{href:"#",onClick:v=>{v.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function GI(e){let o=NI("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return b.createElement("div",null,e.item.answerValueSet!==void 0?b.createElement($a,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):b.createElement(UI,{options:t,property:o,item:e.item,onChange:e.onChange}),b.createElement(Ja,{display:"flex"},b.createElement(Pe,{href:"#",onClick:r=>{R(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:co()}]})}},"Add choice"),b.createElement(EI,{w:"lg"}),b.createElement(Pe,{href:"#",onClick:r=>{R(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function UI(e){return b.createElement("div",null,e.options.map(o=>{let[t,r]=he({type:"QuestionnaireItemAnswerOption",value:o},"value");return b.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},b.createElement("div",null,b.createElement(Ve,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),b.createElement("div",null,b.createElement(Pe,{href:"#",onClick:a=>{R(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function QI(e){let o=ar(e.item)??[];return b.createElement(b.Fragment,null,o.map((t,r)=>b.createElement(wI,{key:`${t}-${r}`},b.createElement(Po,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(nr(e.item,o.map(n=>n===t?a:n)))}}),b.createElement(Pe,{href:"#",onClick:a=>{R(a),e.onChange(nr(e.item,o.filter(n=>n!==t)))}},"Remove"))),b.createElement(Pe,{href:"#",onClick:t=>{R(t),e.onChange(nr(e.item,[...o,""]))}},"Add Resource Type"))}var Ka=1,ja=1;function _a(e){return e+Ka++}function co(){return"id-"+ja++}function zI(e){return{...e,id:e.id||co(),item:xs(e.item)}}function xs(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(ja=Math.max(ja,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ka=Math.max(Ka,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||co(),item:xs(o.item),answerOption:WI(o.answerOption)}))}function WI(e){if(e)return e.map(o=>({...o,id:o.id||co()}))}function XI(){return{id:co(),linkId:_a("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function JI(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Title as ag}from"@mantine/core";import{createReference as ng,getReferenceString as fg}from"@medplum/core";import en,{useEffect as Cs,useState as on}from"react";import{Button as Ya,Group as og,Stack as tg,Stepper as gs}from"@mantine/core";import De from"react";import{Anchor as $I}from"@mantine/core";import dt,{useState as KI}from"react";function sr(e){let{item:o,response:t,onChange:r}=e,[a,n]=KI(jI(o,t??{}));if(!e.checkForQuestionEnabled(o)||!t)return null;if(o.type==="display")return dt.createElement("p",{key:o.linkId},o.text);let f=o?.repeats&&o.type!=="choice"&&o.type!=="open-choice";return o.type==="boolean"?dt.createElement(ut,{key:o.linkId,item:o,response:t,onChange:s=>r([s]),index:0}):dt.createElement(Ce,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text,withAsterisk:e.item.required},[...Array(a)].map((s,l)=>dt.createElement(ut,{key:`${o.linkId}-${l}`,item:o,response:t,onChange:i=>r([i]),index:l})),f&&dt.createElement($I,{onClick:()=>n(s=>s+1)},"Add Item"))}function jI(e,o){if(e.type==="choice"||e.type==="open-choice")return 1;let t=o.answer;return t?.length?t.length:1}import{Anchor as _I,Stack as ZI,Title as YI}from"@mantine/core";import Ee,{useState as eg}from"react";function Za(e){let[o,t]=eg(e.response);if(o.length===0)return null;function r(n,f){let s=o.map((l,i)=>i===f?n[0]:l);t(s),e.onChange(s)}function a(){let n=za(e.item);t([...o,n])}return Ee.createElement(Ee.Fragment,null,o.map((n,f)=>Ee.createElement(Is,{key:n.id,item:e.item,response:n,checkForQuestionEnabled:e.checkForQuestionEnabled,onChange:s=>r(s,f)})),e.item.repeats&&Ee.createElement(_I,{onClick:a},`Add Group: ${e.item.text}`))}function Is(e){let{response:o,checkForQuestionEnabled:t,onChange:r}=e;function a(n){let s=o.item?.map(i=>n.find(c=>c.id===i.id)??i)?.concat(n.slice(1)),l={...o,item:s};r([l])}return e.checkForQuestionEnabled(e.item)?Ee.createElement("div",{key:e.item.linkId},e.item.text&&Ee.createElement(YI,{order:3,mb:"md"},e.item.text),Ee.createElement(ZI,null,e.item.item?.map(n=>n.type==="group"?n.repeats?Ee.createElement(Za,{key:n.linkId,item:n,response:o.item?.filter(f=>f.linkId===n.linkId)??[],checkForQuestionEnabled:t,onChange:a}):Ee.createElement(Is,{key:n.linkId,item:n,checkForQuestionEnabled:t,response:o.item?.find(f=>f.linkId===n.linkId)??{},onChange:a}):Ee.createElement(sr,{key:n.linkId,item:n,response:o.item?.find(f=>f.linkId===n.linkId),onChange:a,checkForQuestionEnabled:t})))):null}function hs(e){let{items:o,response:t,activePage:r,onChange:a,nextStep:n,prevStep:f,numberOfPages:s,renderPages:l,submitButtonText:i,checkForQuestionEnabled:u}=e,c=o.map(d=>{let x=t?.item?.filter(g=>g.linkId===d.linkId)??[],y=d.type==="group"?De.createElement(Za,{key:d.linkId,item:d,response:x,onChange:a,checkForQuestionEnabled:u}):De.createElement(sr,{key:d.linkId,item:d,response:x?.[0],onChange:a,checkForQuestionEnabled:u});return l?De.createElement(gs.Step,{key:d.linkId,label:d.text},y):y});return De.createElement(De.Fragment,null,l&&De.createElement(gs,{active:r??0,allowNextStepsSelect:!1,p:6},c),!l&&De.createElement(tg,null,c),De.createElement(rg,{activePage:r??0,numberOfPages:s,nextStep:n,prevStep:f,submitButtonText:i}))}function rg(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return De.createElement(og,{position:"right",mt:"xl",spacing:"xs"},o&&De.createElement(Ya,{onClick:e.prevStep},"Back"),t&&De.createElement(Ya,{onClick:a=>{a.currentTarget.closest("form").reportValidity()&&e.nextStep()}},"Next"),r&&De.createElement(Ya,{type:"submit"},e.submitButtonText??"Submit"))}function ys(e){let o=P(),t=o.getProfile(),[r,a]=on(!1),n=W(e.questionnaire),[f,s]=on(),[l,i]=on(0);Cs(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Cs(()=>{s(n?rs(n):void 0)},[n]);function u(g){let k=f?.item??[],T={resourceType:"QuestionnaireResponse",item:vs(k,Array.isArray(g)?g:[g])};s(T)}function c(g){return es(g,f?.item??[])}if(!r||!n)return null;let d=fs(n),x=()=>i(g=>g+1),y=()=>i(g=>g-1);return en.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:fg(n),subject:e.subject,source:ng(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&en.createElement(ag,null,n.title),en.createElement(hs,{items:n.item??[],response:f,onChange:u,renderPages:d>1,activePage:l,numberOfPages:d,submitButtonText:e.submitButtonText,checkForQuestionEnabled:c,nextStep:x,prevStep:y}))}function lg(e,o){let t=vs(e.item??[],o.item??[]);return{...o,item:t.length>0?t:void 0,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function vs(e,o){let t=[],r=new Set;for(let a of e){let n=a.id,f=o.find(s=>s.id===n);f?(t.push(lg(a,f)),r.add(f.id)):t.push(a)}for(let a of o)r.has(a.id)||t.push(a);return t}import{ActionIcon as ir,Button as sg,createStyles as ig,Divider as ug,Group as ct,NativeSelect as tn,Stack as ur,Text as dg,TextInput as cg}from"@mantine/core";import{formatRange as Ss,getCodeBySystem as mg}from"@medplum/core";import Q,{useEffect as pg,useState as rn}from"react";var xg=ig(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"}})),Ig=["gender","age","gestationalAge","context","appliesTo","category"],gg={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function hO(e){e=Object.assign(gg,e);let o=e.definition,[t,r]=rn([]),[a,n]=rn(1),[f,s]=rn(1);return pg(()=>{let y=yg(o,s);r(vg(y.qualifiedInterval||[],n))},[o]),Q.createElement(J,{testid:"reference-range-editor",onSubmit:l},Q.createElement(ur,null,t.map(y=>Q.createElement(hg,{unit:bg(o.quantitativeDetails?.unit),onChange:c,onAdd:d,onRemove:x,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),Q.createElement(ir,{title:"Add Group",size:"sm",onClick:y=>{R(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(g=>g+1)}},Q.createElement(po,null)),Q.createElement(ct,{position:"right"},Q.createElement(sg,{type:"submit"},"Save")));function l(){let y=t.flatMap(g=>g.intervals).filter(g=>!Pg(g));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(g=>[...g,y])}function u(y){r(g=>g.filter(k=>k.id!==y.id))}function c(y,g){r(k=>{k=[...k];let B=k.find(A=>A.id===y),T=B?.intervals.findIndex(A=>A.id===g.id);return T!==void 0&&B?.intervals[T]&&(B.intervals[T]=g),k})}function d(y,g){g.id===void 0&&(g.id=`id-${f}`,s(k=>k+1)),r(k=>{k=[...k];let B=k.findIndex(T=>T.id===y);if(B!==-1){let T={...k[B]};g={...g,...T.filters},T.intervals=[...T.intervals,g],k[B]=T}return k})}function x(y,g){r(k=>{k=[...k];let B=k.find(T=>T.id===y);return B&&(B.intervals=B.intervals.filter(T=>T.id!==g.id)),k})}}function hg(e){let{intervalGroup:o,unit:t}=e,{classes:r}=xg();return Q.createElement($e,{"data-testid":o.id,className:r.section},Q.createElement(ur,{spacing:"lg"},Q.createElement(ct,{position:"right"},Q.createElement(ir,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{R(a),e.onRemoveGroup(o)}},Q.createElement(ze,null))),Q.createElement(Cg,{intervalGroup:o,onChange:e.onChange}),Q.createElement(ug,null),o.intervals.map(a=>Q.createElement(ur,{key:`interval-${a.id}`,spacing:"xs"},Q.createElement(ct,null,Q.createElement(cg,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{R(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),Q.createElement(ir,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{R(n),e.onRemove(o.id,a)}},Q.createElement(ze,null))),Q.createElement(tt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),Q.createElement(ir,{title:"Add Interval",size:"sm",onClick:a=>{R(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},Q.createElement(po,null))))}function Cg(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 Q.createElement(ur,{style:{maxWidth:"50%"}},Q.createElement(ct,null,Q.createElement(tn,{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})}}})),Q.createElement(ct,{spacing:"xs"},Q.createElement(dg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),Q.createElement("div",{id:`div-age-${o.id}`},Q.createElement(tt,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),Q.createElement(tn,{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"}]}})}}}),Q.createElement(tn,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function yg(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function vg(e,o){let t=1,r={};for(let a of e){let n=Sg(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Ig.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function Sg(e){return[`gender=${e.gender}`,`age=${Ss(e.age)}`,`gestationalAge=${Ss(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function bg(e){return e&&(mg(e,"http://unitsofmeasure.org")||e.text)}function Pg(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as bs,Grid as dr,Text as Dg}from"@mantine/core";import{formatDateTime as kg,getReferenceString as Tg}from"@medplum/core";import xe,{useEffect as Bg,useState as Ps}from"react";function TO(e){let o=P(),t=W(e.value),[r,a]=Ps(!1),[n,f]=Ps();if(Bg(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return xe.createElement(dr,null,t.action?.map((i,u)=>{let c=i.resource&&l(i.resource),d=c?.input?.[0]?.valueReference,x=c?.output?.[0]?.valueReference;return xe.createElement(xe.Fragment,{key:`action-${u}`},xe.createElement(dr.Col,{span:1,p:"md"},c?.status==="completed"?xe.createElement(wr,null):xe.createElement(Kr,{color:"gray"})),xe.createElement(dr.Col,{span:9,p:"xs"},xe.createElement(Dg,{weight:500},i.title),i.description&&xe.createElement("div",null,i.description),xe.createElement("div",null,"Last edited by\xA0",xe.createElement(Oe,{value:c?.meta?.author}),"\xA0on\xA0",kg(c?.meta?.lastUpdated)),xe.createElement("div",null,"Status: ",xe.createElement(Gt,{status:c?.status||"unknown"}))),xe.createElement(dr.Col,{span:2,p:"md"},d&&!x&&xe.createElement(bs,{onClick:()=>e.onStart(c,d)},"Start"),d&&x&&xe.createElement(bs,{onClick:()=>e.onEdit(c,d,x)},"Edit")))}));function s(i){let u=[];if(i.action)for(let c of i.action)c.resource?.reference&&u.push({request:{method:"GET",url:c.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===Tg(u.resource))return u.resource}}import{createStyles as Lg}from"@mantine/core";import ge,{useEffect as Rg,useState as Ng}from"react";import{stringify as wg}from"@medplum/core";function cr(e,o){let t=Ag(e,o);return Fg(t,e,o)}function Ag(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,c=u+1,d=u-1,x=s[c],y=s[d],g,k=0;i===-l||i!==l&&y.i<x.i?(k=x.i,g=x):(k=y.i+1,g=y),s[d]=void 0;let B=k-i,T={i:k,j:B,prev:Mg(g),snake:!1};for(;k<t&&B<r&&e[k]===o[B];)k++,B++;if(k>T.i&&(T={i:k,j:B,prev:T,snake:!0}),s[u]=T,k>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function Fg(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},c;i.lines.length===0&&u.lines.length>0?c="insert":i.lines.length>0&&u.lines.length===0?c="delete":c="change",r.push({original:i,revised:u,type:c}),a.snake&&(a=a.prev)}return r}function Mg(e){return e&&!e.snake&&e.prev?e.prev:e}function Ds(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:wg(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 Og(t,o),Eg(t),t}function Og(e,o){for(let t=1;t<o.length;t++){let r=cr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function Eg(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}function ks(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Ts(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Go(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Go(r,"month");let a=Math.floor(o/86400);if(a>0)return Go(a,"day");let n=Math.floor(o/3600);if(n>0)return Go(n,"hour");let f=Math.floor(o/60);return f>0?Go(f,"minute"):Go(o,"second")}function Go(e,o){return`${e} ${e===1?o:o+"s"} ago`}var Hg=Lg(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 GO(e){let{classes:o}=Hg(),t=P(),[r,a]=Ng(e.history);if(Rg(()=>{!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 ge.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Ds(r);return ge.createElement("div",{className:o.container},ge.createElement("table",{className:o.root},ge.createElement("tbody",null,f.map((s,l)=>ge.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&ge.createElement(ge.Fragment,null,ge.createElement("td",{className:o.author,rowSpan:s.span},ge.createElement(Ke,{value:s.meta.author,link:!0})),ge.createElement("td",{className:o.dateTime,rowSpan:s.span},ge.createElement(fe,{to:ks(n,s.meta.versionId)},Ts(s.meta.lastUpdated)))),ge.createElement("td",{className:o.lineNumber},l+1),ge.createElement("td",{className:o.line},ge.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as Vg}from"@mantine/core";import{stringify as Bs}from"@medplum/core";import eo from"react";var qg=Vg(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function $O(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Bs(o,!0).match(/[^\r\n]+/g),a=Bs(t,!0).match(/[^\r\n]+/g),n=cr(r,a);return eo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>eo.createElement(Gg,{key:"delta"+s,delta:f})))}function Gg(e){let{classes:o}=qg();return eo.createElement(eo.Fragment,null,"...",eo.createElement("br",null),e.delta.original.lines.length>0&&eo.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
66
  `)),e.delta.revised.lines.length>0&&eo.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
- `)),"...",eo.createElement("br",null))}import{Button as Js,Group as Ah,Stack as Fh,TextInput as $s}from"@mantine/core";import{deepClone as Mh}from"@medplum/core";import Me,{useEffect as wh,useState as Ks}from"react";function m1(e){let o=P(),t=X(e.defaultValue),[r,a]=Ks(!1),[n,f]=Ks();return wh(()=>{t&&(f(Mh(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?Me.createElement("div",null,"Loading..."):Me.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Me.createElement(Fh,{mb:"xl"},Me.createElement(Se,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Me.createElement($s,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Me.createElement(Se,{title:"ID",htmlFor:"id",outcome:e.outcome},Me.createElement($s,{name:"id",defaultValue:n.id,disabled:!0}))),Me.createElement(tt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Me.createElement(Ah,{position:"right",mt:"xl"},Me.createElement(Js,{type:"submit"},"OK"),e.onDelete&&Me.createElement(Js,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}import{Table as Oh}from"@mantine/core";import{formatDateTime as Eh,normalizeErrorString as Lh}from"@medplum/core";import ce,{useEffect as Rh,useState as Nh}from"react";function v1(e){let o=P(),[t,r]=Nh(e.history);return Rh(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ce.createElement(Oh,{withBorder:!0,withColumnBorders:!0},ce.createElement("thead",null,ce.createElement("tr",null,ce.createElement("th",null,"Author"),ce.createElement("th",null,"Date"),ce.createElement("th",null,"Version"))),ce.createElement("tbody",null,t.entry?.map((a,n)=>ce.createElement(Hh,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Hh(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(_e,{value:t.meta?.author,link:!0})),ce.createElement("td",null,Eh(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:Vh(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},Lh(o?.outcome)))}function Vh(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as qh,createStyles as Gh,Stack as Uh,Text as Qh}from"@mantine/core";import{getReferenceString as zh,isReference as Wh}from"@medplum/core";import ee,{useState as hr}from"react";var Xh=Gh(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function w1(e){let{classes:o}=Xh(),t=X(e.schedule),r=X(e.questionnaire),[a,n]=hr(Jt()),[f,s]=hr(),[l,i]=hr(),[u,d]=hr(),[c]=mn("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Wh(e.schedule)?e.schedule.reference:zh(e.schedule)],["start","gt"+Jh(a)],["start","lt"+$h(a)]]));if(!t||!c||!r)return null;let x=t.actor?.[0];return ee.createElement("div",{className:o.container,"data-testid":"scheduler"},ee.createElement("div",{className:o.info},x&&ee.createElement(he,{value:x,size:"xl"}),x&&ee.createElement(Qh,{size:"xl",weight:500},ee.createElement(Ee,{value:x})),ee.createElement("p",null,"1 hour"),f&&ee.createElement("p",null,f.toLocaleDateString()),l&&ee.createElement("p",null,js(new Date(l.start)))),ee.createElement("div",{className:o.selection},!f&&ee.createElement("div",null,ee.createElement("h3",null,"Select date"),ee.createElement(il,{slots:c,onChangeMonth:n,onClick:s})),f&&!l&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(Uh,null,c.map(y=>{let k=new Date(y.start);return k.getTime()>f.getTime()&&k.getTime()<f.getTime()+24*3600*1e3&&ee.createElement("div",{key:y.id},ee.createElement(qh,{variant:"outline",style:{width:150},onClick:()=>i(y)},js(k)))}))),f&&l&&!u&&ee.createElement(Rs,{questionnaire:r,submitButtonText:"Next",onSubmit:d}),f&&l&&u&&ee.createElement("div",null,ee.createElement("h3",null,"You're all set!"),ee.createElement("p",null,"Check your email for a calendar invite."))))}function Jh(e){return _s(e.getTime())}function $h(e){return _s(e.getTime()+31*24*60*60*1e3)}function _s(e){let o=new Date(Math.max(Date.now(),e));return o.setHours(0,0,0,0),o.toISOString()}function js(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as Cr}from"@medplum/core";import Kh from"react";function V1(e){return Kh.createElement(Ye,{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:[Cr(o)],subject:o.subject,sender:Cr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[Cr(o)],subject:o.subject,operator:Cr(t),issued:new Date().toISOString(),content:r})})}export{xn as AddressDisplay,Cn as AddressInput,yn as AnnotationInput,Vb as AppShell,So as AsyncAutocomplete,Xn as AttachmentArrayDisplay,$n as AttachmentArrayInput,Do as AttachmentButton,Oe as AttachmentDisplay,bt as AttachmentInput,Zo as BackboneElementDisplay,tt as BackboneElementInput,il as CalendarInput,Ht as CheckboxFormSection,St as CodeInput,Ao as CodeableConceptDisplay,Ef as CodeableConceptInput,Pf as CodingDisplay,Vt as CodingInput,Tf as ContactDetailDisplay,Rf as ContactDetailInput,Et as ContactPointDisplay,Gt as ContactPointInput,Ke as Container,Fe as DateTimeInput,hM as DefaultResourceTimeline,yf as DescriptionList,vf as DescriptionListEntry,Da as DiagnosticReportDisplay,Pt as Document,sp as ElementDefinitionInputSelector,nl as ElementDefinitionTypeInput,DM as EncounterTimeline,ho as ErrorBoundary,LI as FhirPathTable,$ as Form,Se as FormSection,qn as Header,Ct as HumanNameDisplay,Gf as HumanNameInput,kf as IdentifierDisplay,Qf as IdentifierInput,Zr as Loading,je as Logo,se as MedplumLink,Zh as MedplumProvider,iO as MemoizedFhirPathTable,eO as MemoizedSearchControl,Af as MoneyDisplay,zf as MoneyInput,Wn as Navbar,Gp as ObservationTable,Bo as OperationOutcomeAlert,ko as Panel,IO as PatientTimeline,wO as PlanDefinitionBuilder,_o as QuantityDisplay,Pe as QuantityInput,i0 as QuestionnaireBuilder,Rs as QuestionnaireForm,ir as QuestionnaireItemType,rn as QuestionnaireRepeatWrapper,Lt as RangeDisplay,ot as RangeInput,lo as ReferenceDisplay,wo as ReferenceInput,A0 as ReferenceRangeEditor,nh as ReferenceRangeGroupEditor,xD as RegisterForm,H0 as RequestGroupDisplay,Of as ResourceArrayDisplay,Yf as ResourceArrayInput,he as ResourceAvatar,_e as ResourceBadge,Z0 as ResourceBlame,n1 as ResourceDiff,m1 as ResourceForm,v1 as ResourceHistoryTable,zt as ResourceInput,Ee as ResourceName,xe as ResourcePropertyDisplay,qe as ResourcePropertyInput,Ta as ResourceTable,Ye as ResourceTimeline,w1 as Scheduler,Va as SearchChangeEvent,co as SearchClickEvent,DI as SearchControl,Kl as SearchFieldEditor,os as SearchFilterEditor,qa as SearchLoadEvent,V1 as ServiceRequestTimeline,cT as SignInForm,$t as StatusBadge,Sl as Timeline,Ze as TimelineItem,al as TimingInput,Ma as addDateFilterBetween,UM as addField,Ro as addFilter,Vl as addLastMonthFilter,wa as addMissingFilter,Gl as addNextMonthFilter,ql as addThisMonthFilter,Nl as addTodayFilter,Hl as addTomorrowFilter,Ul as addYearToDateFilter,Rl as addYesterdayFilter,Ce as buildFieldNameString,GM as clearFilters,er as clearFiltersOnField,Hf as convertIsoToLocal,Vf as convertLocalToIso,kt as createScriptTag,Ll as deleteFilter,pe as getErrorsForInput,Dt as getIssuesForExpression,vs as getNewMultiSelectValues,nt as getOpString,ur as getQuestionnaireItemReferenceTargetTypes,ef as getRecaptcha,Xl as getSearchOperators,zl as getSortField,Yn as initRecaptcha,Cs as isChoiceQuestion,ys as isQuestionEnabled,Wl as isSortDescending,Gn as parseForm,dn as reactContext,Jl as renderValue,at as setFilters,Lx as setOffset,Ql as setPage,dr as setQuestionnaireItemReferenceTargetTypes,Oa as setSort,Dl as sortByDateAndPriority,QM as toggleSort,P as useMedplum,Uo as useMedplumContext,Qe as useMedplumNavigate,pt as useMedplumProfile,X as useResource,rC as useSearch,aC as useSearchOne,mn as useSearchResources};
67
+ `)),"...",eo.createElement("br",null))}import{Button as As,Group as Ug,Stack as Qg,TextInput as Fs}from"@mantine/core";import{deepClone as zg}from"@medplum/core";import Te,{useEffect as Wg,useState as Ms}from"react";function t0(e){let o=P(),t=W(e.defaultValue),[r,a]=Ms(!1),[n,f]=Ms();return Wg(()=>{t&&(f(zg(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?Te.createElement("div",null,"Loading..."):Te.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Te.createElement(Qg,{mb:"xl"},Te.createElement(Ce,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Te.createElement(Fs,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Te.createElement(Ce,{title:"ID",htmlFor:"id",outcome:e.outcome},Te.createElement(Fs,{name:"id",defaultValue:n.id,disabled:!0}))),Te.createElement(rt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Te.createElement(Ug,{position:"right",mt:"xl"},Te.createElement(As,{type:"submit"},"OK"),e.onDelete&&Te.createElement(As,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}import{Table as Xg}from"@mantine/core";import{formatDateTime as Jg,normalizeErrorString as $g}from"@medplum/core";import ue,{useEffect as Kg,useState as jg}from"react";function u0(e){let o=P(),[t,r]=jg(e.history);return Kg(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ue.createElement(Xg,{withBorder:!0,withColumnBorders:!0},ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Author"),ue.createElement("th",null,"Date"),ue.createElement("th",null,"Version"))),ue.createElement("tbody",null,t.entry?.map((a,n)=>ue.createElement(_g,{key:"entry-"+n,entry:a})))):ue.createElement("div",null,"Loading...")}function _g(e){let{response:o,resource:t}=e.entry;return t?ue.createElement("tr",null,ue.createElement("td",null,ue.createElement(Ke,{value:t.meta?.author,link:!0})),ue.createElement("td",null,Jg(t.meta?.lastUpdated)),ue.createElement("td",null,ue.createElement(fe,{to:Zg(t)},t.meta?.versionId))):ue.createElement("tr",null,ue.createElement("td",{colSpan:3},$g(o?.outcome)))}function Zg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as Yg,createStyles as eh,Stack as oh,Text as th}from"@mantine/core";import{getReferenceString as rh,isReference as ah}from"@medplum/core";import Z,{useState as mr}from"react";var nh=eh(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function v0(e){let{classes:o}=nh(),t=W(e.schedule),r=W(e.questionnaire),[a,n]=mr(qt()),[f,s]=mr(),[l,i]=mr(),[u,c]=mr(),[d]=xn("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",ah(e.schedule)?e.schedule.reference:rh(e.schedule)],["start","gt"+fh(a)],["start","lt"+lh(a)]]));if(!t||!d||!r)return null;let x=t.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},x&&Z.createElement(Ie,{value:x,size:"xl"}),x&&Z.createElement(th,{size:"xl",weight:500},Z.createElement(Oe,{value:x})),Z.createElement("p",null,"1 hour"),f&&Z.createElement("p",null,f.toLocaleDateString()),l&&Z.createElement("p",null,ws(new Date(l.start)))),Z.createElement("div",{className:o.selection},!f&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Qf,{slots:d,onChangeMonth:n,onClick:s})),f&&!l&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(oh,null,d.map(y=>{let g=new Date(y.start);return g.getTime()>f.getTime()&&g.getTime()<f.getTime()+24*3600*1e3&&Z.createElement("div",{key:y.id},Z.createElement(Yg,{variant:"outline",style:{width:150},onClick:()=>i(y)},ws(g)))}))),f&&l&&!u&&Z.createElement(ys,{questionnaire:r,submitButtonText:"Next",onSubmit:c}),f&&l&&u&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function fh(e){return Os(e.getTime())}function lh(e){return Os(e.getTime()+31*24*60*60*1e3)}function Os(e){let o=new Date(Math.max(Date.now(),e));return o.setHours(0,0,0,0),o.toISOString()}function ws(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as pr}from"@medplum/core";import sh from"react";function B0(e){return sh.createElement(_e,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[pr(o)],subject:o.subject,sender:pr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[pr(o)],subject:o.subject,operator:pr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Ah}from"@medplum/core";import yr,{useEffect as Fh,useState as Gs}from"react";import{Anchor as Es,Button as ih,Center as uh,Group as dh,Stack as ch,Text as mh,TextInput as ph,Title as xh}from"@mantine/core";import{normalizeOperationOutcome as Ih}from"@medplum/core";import Be,{useState as gh}from"react";function xr(e){let o=P(),[t,r]=gh();return Be.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(Ih(n))}}},Be.createElement(uh,{sx:{flexDirection:"column"}},Be.createElement(Ze,{size:32}),Be.createElement(xh,null,"Create project")),Be.createElement(ch,{spacing:"xl"},Be.createElement(ph,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Be.createElement(mh,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Be.createElement(Es,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Be.createElement(Es,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Be.createElement(dh,{position:"right",mt:"xl",noWrap:!0},Be.createElement(ih,{type:"submit"},"Create project")))}import{Anchor as Cr,Button as vh,Center as Sh,Checkbox as bh,Divider as Ph,Group as Ns,PasswordInput as Dh,Stack as kh,Text as Hs,TextInput as nn}from"@mantine/core";import{normalizeOperationOutcome as Vs}from"@medplum/core";import j,{useEffect as Th,useState as Bh}from"react";import hh,{useEffect as Ch,useRef as yh,useState as an}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 gr(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=yh(null),[n,f]=an(typeof google<"u"),[s,l]=an(!1),[i,u]=an(!1);return Ch(()=>{if(typeof google>"u"){Ir("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?hh.createElement("div",{ref:a}):null}function hr(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 Ls(e){typeof grecaptcha>"u"&&Ir("https://www.google.com/recaptcha/api.js?render="+e)}function Rs(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function qs(e){let o=hr(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=Bh(),f=Mt(a,void 0);return Th(()=>{t&&Ls(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await Rs(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(Vs(l))}}},j.createElement(Sh,{sx:{flexDirection:"column"}},e.children),j.createElement(Vo,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(Ns,{position:"center",p:"xl",style:{height:70}},j.createElement(gr,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(Vs(l))}}})),j.createElement(Ph,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(kh,{spacing:"xl"},j.createElement(nn,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),j.createElement(nn,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),j.createElement(nn,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),j.createElement(Dh,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),j.createElement(Hs,{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(Hs,{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(Ns,{position:"apart",mt:"xl",noWrap:!0},j.createElement(bh,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(vh,{type:"submit"},"Create account")))}function m1(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=P(),[l,i]=Gs(),[u,c]=Gs();Fh(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(x=>s.processCode(x.code)).then(()=>f()).catch(x=>c(Ah(x)))},[s,o,t,l,f]);function d(x){x.code?s.processCode(x.code).then(()=>f()).catch(console.log):x.login&&i(x.login)}return yr.createElement(Wt,{width:450},u&&yr.createElement("pre",null,JSON.stringify(u,null,2)),!l&&yr.createElement(qs,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:d},e.children),l&&o==="project"&&yr.createElement(xr,{login:l,handleAuthResponse:d}))}import{showNotification as Ys}from"@mantine/notifications";import{normalizeErrorString as ei}from"@medplum/core";import mo,{useCallback as ln,useEffect as fC,useState as sn}from"react";import{Anchor as Us,Button as Qs,Center as zs,Checkbox as Mh,Divider as wh,Group as fn,PasswordInput as Oh,Stack as Eh,TextInput as Lh}from"@mantine/core";import{normalizeOperationOutcome as Rh}from"@medplum/core";import K,{useCallback as vr,useState as Ws}from"react";function Xs(e){let[o,t]=Ws();return o?K.createElement(Hh,{email:o,...e}):K.createElement(Nh,{setEmail:t,...e})}function Nh(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=P(),l=!e.disableGoogleAuth&&hr(e.googleClientId),i=vr(async d=>{if(!d.authorizeUrl)return!1;let x=JSON.stringify({...await s.ensureCodeChallenge(f),domain:d.domain}),y=new URL(d.authorizeUrl);return y.searchParams.set("state",x),window.location.assign(y.toString()),!0},[s,f]),u=vr(async d=>{let x=await s.post("auth/method",{email:d.email});await i(x)||o(d.email)},[s,i,o]),c=vr(async d=>{let x=await s.startGoogleLogin({...f,googleCredential:d.credential});await i(x)||r(x)},[s,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(zs,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(fn,{position:"center",p:"xl",style:{height:70}},K.createElement(gr,{googleClientId:l,handleGoogleCredential:c})),!n&&K.createElement(wh,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(Lh,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(fn,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(Us,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(Qs,{type:"submit"},"Next")))}function Hh(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,s]=Ws(),l=Mt(f,void 0),i=vr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(c=>s(Rh(c)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(zs,{sx:{flexDirection:"column"}},r),K.createElement(Vo,{issues:l}),K.createElement(Eh,{spacing:"xl"},K.createElement(Oh,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),K.createElement(fn,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(Us,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Mh,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(Qs,{type:"submit"},"Sign in")))}import{Avatar as Vh,Center as qh,Group as Gh,Stack as Uh,Text as Js,Title as Qh,UnstyledButton as zh}from"@mantine/core";import{normalizeOperationOutcome as Wh}from"@medplum/core";import Ae,{useState as Xh}from"react";function $s(e){let o=P(),[t,r]=Xh();return Ae.createElement(Uh,null,Ae.createElement(qh,{sx:{flexDirection:"column"}},Ae.createElement(Ze,{size:32}),Ae.createElement(Qh,{order:3},"Choose profile")),Ae.createElement(Vo,{outcome:t}),e.memberships.map(a=>Ae.createElement(zh,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Wh(n)))}},Ae.createElement(Gh,null,Ae.createElement(Vh,{radius:"xl"}),Ae.createElement("div",{style:{flex:1}},Ae.createElement(Js,{size:"sm",weight:500},a.profile?.display),Ae.createElement(Js,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Jh,Center as $h,Checkbox as Kh,Group as jh,Stack as Ks,Title as _h}from"@mantine/core";import Ge from"react";function js(e){let o=P();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(Ks,null,Ge.createElement($h,{sx:{flexDirection:"column"}},Ge.createElement(Ze,{size:32}),Ge.createElement(_h,null,"Choose scope")),Ge.createElement(Ks,null,(e.scope??"openid").split(" ").map(t=>Ge.createElement(Kh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ge.createElement(jh,{position:"right",mt:"xl"},Ge.createElement(Jh,{type:"submit"},"Set scope"))))}import{Alert as Zh,Button as Yh,Center as eC,Group as oC,Stack as _s,TextInput as tC,Title as rC}from"@mantine/core";import{normalizeErrorString as aC}from"@medplum/core";import Fe,{useState as nC}from"react";function Zs(e){let o=P(),[t,r]=nC();return Fe.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(aC(n)))}},Fe.createElement(_s,null,Fe.createElement(eC,{sx:{flexDirection:"column"}},Fe.createElement(Ze,{size:32}),Fe.createElement(rC,null,"Enter MFA code")),t&&Fe.createElement(Zh,{icon:Fe.createElement(ro,{size:16}),title:"Error",color:"red"},t),Fe.createElement(_s,null,Fe.createElement(tC,{name:"token",label:"MFA code",required:!0})),Fe.createElement(oC,{position:"right",mt:"xl"},Fe.createElement(Yh,{type:"submit"},"Submit code"))))}function uE(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=P(),[i,u]=sn(),[c,d]=sn(!1),[x,y]=sn(),g=ln(T=>{f?f(T):l.processCode(T).then(()=>{r&&r()}).catch(A=>Ys({color:"red",message:ei(A)}))},[l,f,r]),k=ln(T=>{d(!!T.mfaRequired),T.login&&u(T.login),T.memberships&&y(T.memberships),T.code&&(t?y(void 0):g(T.code))},[t,g]),B=ln(T=>{g(T.code)},[g]);return fC(()=>{o&&!i&&l.get("auth/login/"+o).then(k).catch(T=>Ys({color:"red",message:ei(T)}))},[l,o,i,k]),mo.createElement(Wt,{width:450},(()=>i?c?mo.createElement(Zs,{login:i,handleAuthResponse:k}):x?mo.createElement($s,{login:i,memberships:x,handleAuthResponse:k}):e.projectId==="new"?mo.createElement(xr,{login:i,handleAuthResponse:k}):e.chooseScopes?mo.createElement(js,{login:i,scope:e.scope,handleAuthResponse:B}):mo.createElement("div",null,"Success"):mo.createElement(Xs,{onForgotPassword:a,onRegister:n,handleAuthResponse:k,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}export{gn as AddressDisplay,vn as AddressInput,Sn as AnnotationInput,jb as AppShell,So as AsyncAutocomplete,$n as AttachmentArrayDisplay,jn as AttachmentArrayInput,Do as AttachmentButton,we as AttachmentDisplay,Pt as AttachmentInput,Yo as BackboneElementDisplay,rt as BackboneElementInput,Qf as CalendarInput,Ft as CheckboxFormSection,bt as CodeInput,To as CodeableConceptDisplay,pf as CodeableConceptInput,tf as CodingDisplay,wt as CodingInput,af as ContactDetailDisplay,If as ContactDetailInput,kt as ContactPointDisplay,Et as ContactPointInput,$e as Container,ke as DateTimeInput,LA as DefaultResourceTimeline,Zn as DescriptionList,Yn as DescriptionListEntry,va as DiagnosticReportDisplay,Wt as Document,om as ElementDefinitionInputSelector,Vf as ElementDefinitionTypeInput,JA as EncounterTimeline,ho as ErrorBoundary,Qx as FhirPathTable,J as Form,Ce as FormSection,Un as Header,yt as HumanNameDisplay,vf as HumanNameInput,nf as IdentifierDisplay,bf as IdentifierInput,ea as Loading,Ze as Logo,fe as MedplumLink,iC as MedplumProvider,MM as MemoizedFhirPathTable,SM as MemoizedSearchControl,lf as MoneyDisplay,Pf as MoneyInput,Jn as Navbar,Hm as ObservationTable,Vo as OperationOutcomeAlert,wo as Panel,WM as PatientTimeline,lw as PlanDefinitionBuilder,Zo as QuantityDisplay,ve as QuantityInput,Hw as QuestionnaireBuilder,ys as QuestionnaireForm,rr as QuestionnaireItemType,Tt as RangeDisplay,tt as RangeInput,no as ReferenceDisplay,Fo as ReferenceInput,hO as ReferenceRangeEditor,hg as ReferenceRangeGroupEditor,m1 as RegisterForm,TO as RequestGroupDisplay,cf as ResourceArrayDisplay,Of as ResourceArrayInput,Ie as ResourceAvatar,Ke as ResourceBadge,GO as ResourceBlame,$O as ResourceDiff,t0 as ResourceForm,u0 as ResourceHistoryTable,Nt as ResourceInput,Oe as ResourceName,ce as ResourcePropertyDisplay,Ve as ResourcePropertyInput,Sa as ResourceTable,_e as ResourceTimeline,v0 as Scheduler,La as SearchChangeEvent,io as SearchClickEvent,Ox as SearchControl,Fl as SearchFieldEditor,Rl as SearchFilterEditor,Ra as SearchLoadEvent,B0 as ServiceRequestTimeline,uE as SignInForm,Gt as StatusBadge,tl as Timeline,je as TimelineItem,Hf as TimingInput,Ta as addDateFilterBetween,uF as addField,Lo as addFilter,yl as addLastMonthFilter,Ba as addMissingFilter,Sl as addNextMonthFilter,vl as addThisMonthFilter,hl as addTodayFilter,Cl as addTomorrowFilter,bl as addYearToDateFilter,gl as addYesterdayFilter,be as buildFieldNameString,rs as buildInitialResponse,za as buildInitialResponseItem,iF as clearFilters,$t as clearFiltersOnField,hf as convertIsoToLocal,Cf as convertLocalToIso,Ir as createScriptTag,Il as deleteFilter,ns as formatReferenceString,me as getErrorsForInput,Vl as getFieldDefinitions,Mt as getIssuesForExpression,os as getNewMultiSelectValues,fs as getNumberOfPages,ft as getOpString,ar as getQuestionnaireItemReferenceTargetTypes,Rs as getRecaptcha,Tl as getSearchOperators,Dl as getSortField,Ls as initRecaptcha,Yl as isChoiceQuestion,es as isQuestionEnabled,kl as isSortDescending,Qn as parseForm,mn as reactContext,Bl as renderValue,nt as setFilters,Hp as setOffset,Pl as setPage,nr as setQuestionnaireItemReferenceTargetTypes,Aa as setSort,nl as sortByDateAndPriority,dF as toggleSort,P as useMedplum,Qo as useMedplumContext,Ue as useMedplumNavigate,xt as useMedplumProfile,W as useResource,pC as useSearch,xC as useSearchOne,xn as useSearchResources};
68
68
  //# sourceMappingURL=index.mjs.map