@medplum/react 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +5 -5
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/index.mjs.map +4 -4
- package/dist/types/AddressDisplay/AddressDisplay.d.ts +1 -0
- package/dist/types/AddressInput/AddressInput.d.ts +1 -0
- package/dist/types/AnnotationInput/AnnotationInput.d.ts +1 -0
- package/dist/types/AppShell/HeaderSearchInput.d.ts +1 -0
- package/dist/types/AppShell/Navbar.d.ts +1 -0
- package/dist/types/AsyncAutocomplete/AsyncAutocomplete.d.ts +1 -0
- package/dist/types/AttachmentArrayDisplay/AttachmentArrayDisplay.d.ts +1 -0
- package/dist/types/AttachmentArrayInput/AttachmentArrayInput.d.ts +1 -0
- package/dist/types/AttachmentDisplay/AttachmentDisplay.d.ts +1 -0
- package/dist/types/AttachmentInput/AttachmentInput.d.ts +1 -0
- package/dist/types/BackboneElementDisplay/BackboneElementDisplay.d.ts +1 -0
- package/dist/types/BackboneElementInput/BackboneElementInput.d.ts +1 -0
- package/dist/types/BookmarkDialog/BookmarkDialog.d.ts +1 -0
- package/dist/types/CalendarInput/CalendarInput.d.ts +1 -0
- package/dist/types/CodeInput/CodeInput.d.ts +1 -0
- package/dist/types/CodeableConceptDisplay/CodeableConceptDisplay.d.ts +1 -0
- package/dist/types/CodeableConceptInput/CodeableConceptInput.d.ts +1 -0
- package/dist/types/CodingDisplay/CodingDisplay.d.ts +1 -0
- package/dist/types/CodingInput/CodingInput.d.ts +1 -0
- package/dist/types/ContactDetailDisplay/ContactDetailDisplay.d.ts +1 -0
- package/dist/types/ContactDetailInput/ContactDetailInput.d.ts +1 -0
- package/dist/types/ContactPointDisplay/ContactPointDisplay.d.ts +1 -0
- package/dist/types/ContactPointInput/ContactPointInput.d.ts +1 -0
- package/dist/types/Container/Container.d.ts +1 -0
- package/dist/types/DateTimeInput/DateTimeInput.d.ts +1 -0
- package/dist/types/DefaultResourceTimeline/DefaultResourceTimeline.d.ts +1 -0
- package/dist/types/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +1 -0
- package/dist/types/Document/Document.d.ts +1 -0
- package/dist/types/EncounterTimeline/EncounterTimeline.d.ts +1 -0
- package/dist/types/ExtensionInput/ExtensionInput.d.ts +1 -0
- package/dist/types/FhirPathDisplay/FhirPathDisplay.d.ts +1 -0
- package/dist/types/GoogleButton/GoogleButton.d.ts +1 -0
- package/dist/types/HumanNameDisplay/HumanNameDisplay.d.ts +1 -0
- package/dist/types/HumanNameInput/HumanNameInput.d.ts +1 -0
- package/dist/types/IdentifierDisplay/IdentifierDisplay.d.ts +1 -0
- package/dist/types/IdentifierInput/IdentifierInput.d.ts +1 -0
- package/dist/types/Loading/Loading.d.ts +1 -0
- package/dist/types/Logo/Logo.d.ts +1 -0
- package/dist/types/MoneyDisplay/MoneyDisplay.d.ts +1 -0
- package/dist/types/MoneyInput/MoneyInput.d.ts +1 -0
- package/dist/types/NoteDisplay/NoteDisplay.d.ts +1 -0
- package/dist/types/OperationOutcomeAlert/OperationOutcomeAlert.d.ts +1 -0
- package/dist/types/Panel/Panel.d.ts +1 -0
- package/dist/types/PatientTimeline/PatientTimeline.d.ts +1 -0
- package/dist/types/PeriodInput/PeriodInput.d.ts +1 -0
- package/dist/types/PlanDefinitionBuilder/PlanDefinitionBuilder.d.ts +1 -0
- package/dist/types/QuantityDisplay/QuantityDisplay.d.ts +1 -0
- package/dist/types/QuantityInput/QuantityInput.d.ts +1 -0
- package/dist/types/QuestionnaireBuilder/QuestionnaireBuilder.d.ts +1 -0
- package/dist/types/QuestionnaireForm/QuestionnaireForm.d.ts +5 -3
- package/dist/types/QuestionnaireForm/QuestionnaireFormItem/QuestionnaireFormItem.d.ts +5 -3
- package/dist/types/RangeDisplay/RangeDisplay.d.ts +1 -0
- package/dist/types/RangeInput/RangeInput.d.ts +1 -0
- package/dist/types/RatioDisplay/RatioDisplay.d.ts +1 -0
- package/dist/types/RatioInput/RatioInput.d.ts +1 -0
- package/dist/types/ReferenceDisplay/ReferenceDisplay.d.ts +1 -0
- package/dist/types/ReferenceInput/ReferenceInput.d.ts +1 -0
- package/dist/types/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +1 -0
- package/dist/types/RequestGroupDisplay/RequestGroupDisplay.d.ts +1 -0
- package/dist/types/ResourceArrayDisplay/ResourceArrayDisplay.d.ts +1 -0
- package/dist/types/ResourceArrayInput/ResourceArrayInput.d.ts +1 -0
- package/dist/types/ResourceAvatar/ResourceAvatar.d.ts +1 -0
- package/dist/types/ResourceBadge/ResourceBadge.d.ts +1 -0
- package/dist/types/ResourceBlame/ResourceBlame.d.ts +1 -0
- package/dist/types/ResourceDiff/ResourceDiff.d.ts +1 -0
- package/dist/types/ResourceDiffTable/ResourceDiffTable.d.ts +1 -0
- package/dist/types/ResourceForm/ResourceForm.d.ts +1 -0
- package/dist/types/ResourceHistoryTable/ResourceHistoryTable.d.ts +1 -0
- package/dist/types/ResourceInput/ResourceInput.d.ts +1 -0
- package/dist/types/ResourceName/ResourceName.d.ts +1 -0
- package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts +1 -0
- package/dist/types/ResourcePropertyInput/ResourcePropertyInput.d.ts +1 -0
- package/dist/types/ResourceTable/ResourceTable.d.ts +1 -0
- package/dist/types/ResourceTimeline/ResourceTimeline.d.ts +1 -0
- package/dist/types/Scheduler/Scheduler.d.ts +1 -0
- package/dist/types/SearchControl/SearchUtils.d.ts +1 -0
- package/dist/types/SearchExportDialog/SearchExportDialog.d.ts +1 -0
- package/dist/types/SearchFieldEditor/SearchFieldEditor.d.ts +1 -0
- package/dist/types/SearchFilterEditor/SearchFilterEditor.d.ts +1 -0
- package/dist/types/SearchFilterValueDialog/SearchFilterValueDialog.d.ts +1 -0
- package/dist/types/SearchFilterValueDisplay/SearchFilterValueDisplay.d.ts +1 -0
- package/dist/types/SearchFilterValueInput/SearchFilterValueInput.d.ts +1 -0
- package/dist/types/SearchPopupMenu/SearchPopupMenu.d.ts +1 -0
- package/dist/types/ServiceRequestTimeline/ServiceRequestTimeline.d.ts +1 -0
- package/dist/types/StatusBadge/StatusBadge.d.ts +1 -0
- package/dist/types/TimingInput/TimingInput.d.ts +1 -0
- package/dist/types/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +1 -0
- package/dist/types/auth/ChooseProfileForm.d.ts +1 -0
- package/dist/types/auth/ChooseScopeForm.d.ts +1 -0
- package/dist/types/auth/MfaForm.d.ts +1 -0
- package/dist/types/auth/NewProjectForm.d.ts +1 -0
- package/dist/types/utils/questionnaire.d.ts +2 -2
- package/package.json +20 -20
package/dist/esm/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{formatAddress as Fs}from"@medplum/core";import $a from"react";function Ka(e){let o=e.value;return o?$a.createElement($a.Fragment,null,Fs(o)):null}import{Group as Ms,NativeSelect as ja,TextInput as Uo}from"@mantine/core";import Ge,{useRef as ws,useState as Os}from"react";function _a(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Za(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Ya(e){let[o,t]=Os(e.defaultValue||{}),r=ws();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a(Za(r.current||{},0,c))}function s(c){a(Za(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ge.createElement(Ms,{spacing:"xs",grow:!0,noWrap:!0},Ge.createElement(ja,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ge.createElement(ja,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ge.createElement(Uo,{placeholder:"Line 1",defaultValue:_a(o,0),onChange:c=>l(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"Line 2",defaultValue:_a(o,1),onChange:c=>s(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ge.createElement(Uo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Gs}from"@mantine/core";import{createReference as Us}from"@medplum/core";import zs,{useRef as Qs,useState as Ws}from"react";import{showNotification as Es}from"@mantine/notifications";import Ls,{createContext as Rs,useContext as Ns,useEffect as en,useMemo as Hs,useState as Vs}from"react";var on=Rs(void 0);function Ch(e){let o=e.medplum,t=e.navigate??qs,[r,a]=Vs({profile:o.getProfile(),loading:!1});en(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),en(()=>{function f(){Es({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Hs(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ls.createElement(on.Provider,{value:n},e.children)}function zo(){return Ns(on)}function S(){return zo().medplum}function Ue(){return zo().navigate}function pt(){return zo().profile}function qs(e){window.location.assign(e)}function tn(e){let o=pt(),[t,r]=Ws(e.defaultValue||{}),a=Qs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&Us(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return zs.createElement(Gs,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Su,useMantineTheme as bu}from"@mantine/core";import ro,{Suspense as Pu,useState as Du}from"react";import{Alert as Zs}from"@mantine/core";import{normalizeErrorString as Ys}from"@medplum/core";import{forwardRef as Xs,createElement as an}from"react";import oo from"prop-types";var rn={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Js=Object.defineProperty,$s=Object.defineProperties,Ks=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,ln=Object.prototype.hasOwnProperty,sn=Object.prototype.propertyIsEnumerable,nn=(e,o,t)=>o in e?Js(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,fn=(e,o)=>{for(var t in o||(o={}))ln.call(o,t)&&nn(e,t,o[t]);if(xt)for(var t of xt(o))sn.call(o,t)&&nn(e,t,o[t]);return e},js=(e,o)=>$s(e,Ks(o)),_s=(e,o)=>{var t={};for(var r in e)ln.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&xt)for(var r of xt(e))o.indexOf(r)<0&&sn.call(e,r)&&(t[r]=e[r]);return t},x=(e,o,t)=>{let r=Xs((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=_s(f,["color","size","stroke","children"]);return an("svg",fn(js(fn({ref:n},rn),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,C])=>an(c,C)),...u||[]])});return r.propTypes={color:oo.string,size:oo.oneOfType([oo.string,oo.number]),stroke:oo.oneOfType([oo.string,oo.number])},r.displayName=`${o}`,r};var mr=x("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var to=x("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var pr=x("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var xr=x("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Ir=x("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var gr=x("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var hr=x("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var yr=x("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Le=x("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var Qo=x("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Cr=x("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var vr=x("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=x("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=x("circle-plus","IconCirclePlus",[["path",{d:"M20.987 12.497a9 9 0 1 0 -8.467 8.489",key:"svg-0"}],["path",{d:"M16 19h6",key:"svg-1"}],["path",{d:"M19 16v6",key:"svg-2"}]]);var Wo=x("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var Sr=x("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var br=x("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Pr=x("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Dr=x("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Tr=x("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var xo=x("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=x("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var kr=x("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Br=x("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Ar=x("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Fr=x("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Mr=x("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var It=x("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var gt=x("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var wr=x("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Or=x("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Er=x("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Lr=x("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Rr=x("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Nr=x("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=x("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Xo=x("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jo=x("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Hr=x("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Vr=x("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var qr=x("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var $o=x("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Gr=x("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Ur from"react";var ho=class extends Ur.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Ur.createElement(Zs,{icon:Ur.createElement(to,{size:16}),title:"Something went wrong",color:"red"},Ys(this.state.error)):this.props.children}};import{Center as ei,Loader as oi}from"@mantine/core";import un from"react";function zr(){return un.createElement(ei,{style:{width:"100%",height:"100vh"}},un.createElement(oi,null))}import{Avatar as Hi,createStyles as Vi,Group as Ct,Header as qi,Menu as Re,Stack as Gi,Text as Ko,UnstyledButton as Pn}from"@mantine/core";import{formatHumanName as Ui,getReferenceString as Dn}from"@medplum/core";import U,{useState as zi}from"react";import{formatHumanName as ti}from"@medplum/core";import dn from"react";function ht(e){let o=e.value;return o?dn.createElement(dn.Fragment,null,ti(o,e.options)):null}import{Avatar as In}from"@mantine/core";import{getDisplayString as Ii,getImageSrc as gi}from"@medplum/core";import Qr from"react";import{Anchor as ri}from"@mantine/core";import{isReference as ai,isResource as ni}from"@medplum/core";import fi from"react";function H(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(cn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&cn(o[0]))return!0}return!1}function cn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function fe(e){let o=Ue(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=li(t);return r&&(s+="/"+r),fi.createElement(ri,{href:s,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(s)},...l},f)}function li(e){if(e){if(typeof e=="string")return si(e);if(ni(e))return ii(e);if(ai(e))return ui(e)}return"#"}function si(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ii(e){return`/${e.resourceType}/${e.id}`}function ui(e){return`/${e.reference}`}import{deepEquals as di,isReference as xn,isResource as ci,normalizeOperationOutcome as mi}from"@medplum/core";import{useCallback as pi,useEffect as mn,useState as xi}from"react";function W(e,o){let t=S(),[r,a]=xi(pn(t,e)),n=pi(f=>{di(f,r)||a(f)},[r,a]);return mn(()=>{n(pn(t,e))},[t,e,n]),mn(()=>{let f=!0;return xn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(mi(l)))}),()=>f=!1},[t,r,e,n,o]),r}function pn(e,o){if(o){if(ci(o))return o;if(xn(o))return e.getCachedReference(o)}}function Ce(e){let o=W(e.value),t=o?Ii(o):e.alt??"",r=(o&&gi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Qr.createElement(fe,{to:o},Qr.createElement(In,{src:r,alt:t,radius:a,...n})):Qr.createElement(In,{src:r,alt:t,radius:a,...n})}import{createStyles as Pi,Group as Di,Text as hn}from"@mantine/core";import{formatHumanName as Ti,getDisplayString as Sn,getReferenceString as ki,isUUID as Bi}from"@medplum/core";import Qe,{forwardRef as Ai,useCallback as yn}from"react";import{Loader as hi,MultiSelect as yi}from"@mantine/core";import gn,{useCallback as yo,useEffect as Ci,useRef as Co,useState as vo}from"react";import{showNotification as vi}from"@mantine/notifications";import{normalizeErrorString as Si}from"@medplum/core";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=bi(o),u=Co(null),[d,c]=vo(void 0),[C,P]=vo(),[B,g]=vo(),[D,p]=vo(),[h,y]=vo(i.map(r)),[w,ge]=vo([]),he=Co();he.current=d;let de=Co();de.current=C;let Y=Co();Y.current=B;let Vo=Co();Vo.current=D;let v=Co();v.current=w;let N=yo(()=>{P(void 0);let _=u.current?.value.trim()||"";if(_===he.current)return;c(_);let ne=new AbortController;g(ne),a(_,ne.signal).then(ce=>{ne.signal.aborted||(ge(ce.map(r)),g(void 0),Vo.current&&(ce.length>0&&n(ce.slice(0,1)),p(!1)))}).catch(ce=>{ne.signal.aborted||ce.message.includes("aborted")||vi({color:"red",message:Si(ce)})})},[a,n,r]),ke=yo(()=>{Y.current&&(Y.current.abort(),g(void 0)),de.current!==void 0&&window.clearTimeout(de.current);let _=window.setTimeout(()=>N(),100);P(_)},[N]),ye=yo(_=>{let ne=[],ce=[];for(let qo of _){let mt=v.current?.find(As=>As.value===qo),Go=mt?.resource;!Go&&l!==!1&&f&&(Go=f(qo),mt=r(Go)),Go&&ne.push(Go),mt&&ce.push(mt)}n(ne),y(ce)},[l,n,f,r]),eo=yo(_=>{_.key==="Enter"&&(!de.current&&!Y.current?(H(_),v.current&&v.current.length>0&&(ge(v.current.slice(0,1)),ye([v.current[0].value]))):p(!0))},[ye]),T=yo(_=>{let ne=r(f(_));return ge([...v.current,ne]),ne},[f,ge,r]),Q=yo((_,ne)=>!ne,[]);return Ci(()=>()=>{Y.current&&Y.current.abort()},[]),gn.createElement(yi,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:eo,onSearchChange:ke,data:[...h,...w],onFocus:N,onChange:ye,onCreate:T,rightSectionWidth:40,rightSection:B?gn.createElement(hi,{size:16}):null,filter:Q,creatable:!0})}function bi(e){return e?Array.isArray(e)?e:[e]:[]}var Fi=Pi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Mi(e){return e.id}function wi(e){return{value:e.id,label:Sn(e),resource:e}}function bn(e){let{classes:o}=Fi(),t=Ue(),r=S(),a=yn(async(f,l)=>{let s=Ei(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Li(u,f)},[r]),n=yn(f=>{f.length>0&&t(`/${ki(f[0])}`)},[t]);return Qe.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Qe.createElement(Nr,{size:16}),placeholder:"Search",itemComponent:Oi,toKey:Mi,toOption:wi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Oi=Ai(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Qe.createElement("div",{ref:t,...o},Qe.createElement(Di,{noWrap:!0},Qe.createElement(Ce,{value:e}),Qe.createElement("div",null,Qe.createElement(hn,null,Sn(e)),Qe.createElement(hn,{size:"xs",color:"dimmed"},r))))});function Ei(e){let o=JSON.stringify(e);return Bi(e)?`{
|
|
1
|
+
import{formatAddress as Hs}from"@medplum/core";import Za from"react";function Ya(e){let o=e.value;return o?Za.createElement(Za.Fragment,null,Hs(o)):null}import{Group as Vs,NativeSelect as en,TextInput as Qo}from"@mantine/core";import Ge,{useRef as qs,useState as Us}from"react";function on(e,o){return e.line&&e.line.length>o?e.line[o]:""}function tn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function rn(e){let[o,t]=Us(e.defaultValue||{}),r=qs();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function l(c){a(tn(r.current||{},0,c))}function s(c){a(tn(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ge.createElement(Vs,{spacing:"xs",grow:!0,noWrap:!0},Ge.createElement(en,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ge.createElement(en,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ge.createElement(Qo,{placeholder:"Line 1",defaultValue:on(o,0),onChange:c=>l(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"Line 2",defaultValue:on(o,1),onChange:c=>s(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Ks}from"@mantine/core";import{createReference as js}from"@medplum/core";import _s,{useRef as Zs,useState as Ys}from"react";import{showNotification as Gs}from"@mantine/notifications";import Qs,{createContext as zs,useContext as Ws,useEffect as an,useMemo as Xs,useState as Js}from"react";var nn=zs(void 0);function Lh(e){let o=e.medplum,t=e.navigate??$s,[r,a]=Js({profile:o.getProfile(),loading:!1});an(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),an(()=>{function f(){Gs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Xs(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Qs.createElement(nn.Provider,{value:n},e.children)}function zo(){return Ws(nn)}function P(){return zo().medplum}function Qe(){return zo().navigate}function xt(){return zo().profile}function $s(e){window.location.assign(e)}function fn(e){let o=xt(),[t,r]=Ys(e.defaultValue||{}),a=Zs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&js(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return _s.createElement(Ks,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Mu,useMantineTheme as Fu}from"@mantine/core";import fo,{Suspense as wu,useState as Ou}from"react";import{Alert as fi}from"@mantine/core";import{normalizeErrorString as li}from"@medplum/core";import{forwardRef as ei,createElement as sn}from"react";import ao from"prop-types";var ln={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 oi=Object.defineProperty,ti=Object.defineProperties,ri=Object.getOwnPropertyDescriptors,It=Object.getOwnPropertySymbols,cn=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable,un=(e,o,t)=>o in e?oi(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,dn=(e,o)=>{for(var t in o||(o={}))cn.call(o,t)&&un(e,t,o[t]);if(It)for(var t of It(o))mn.call(o,t)&&un(e,t,o[t]);return e},ai=(e,o)=>ti(e,ri(o)),ni=(e,o)=>{var t={};for(var r in e)cn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&It)for(var r of It(e))o.indexOf(r)<0&&mn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=ei((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=ni(f,["color","size","stroke","children"]);return sn("svg",dn(ai(dn({ref:n},ln),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,g])=>sn(c,g)),...u||[]])});return r.propTypes={color:ao.string,size:ao.oneOfType([ao.string,ao.number]),stroke:ao.oneOfType([ao.string,ao.number])},r.displayName=`${o}`,r};var xr=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 no=p("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var Ir=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var gr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var hr=p("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var yr=p("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Cr=p("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var vr=p("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Sr=p("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var br=p("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var 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 Pr=p("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Dr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var xo=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 kr=p("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Tr=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Br=p("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Ar=p("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Mr=p("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var Io=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 go=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Fr=p("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var wr=p("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Or=p("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Er=p("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Lr=p("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var 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 Rr=p("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Nr=p("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Hr=p("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Vr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var qr=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Ur=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var ho=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 Gr=p("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Qr=p("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var zr=p("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var 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 Wr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Xr from"react";var yo=class extends Xr.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?Xr.createElement(fi,{icon:Xr.createElement(no,{size:16}),title:"Something went wrong",color:"red"},li(this.state.error)):this.props.children}};import{Center as si,Loader as ii}from"@mantine/core";import pn from"react";function Jr(){return pn.createElement(si,{style:{width:"100%",height:"100vh"}},pn.createElement(ii,null))}import{Avatar as Xi,createStyles as Ji,Group as vt,Header as $i,Menu as He,Stack as Ki,Text as jo,UnstyledButton as Bn}from"@mantine/core";import{formatHumanName as ji,getReferenceString as An}from"@medplum/core";import Q,{useState as _i}from"react";import{formatHumanName as ui}from"@medplum/core";import xn from"react";function yt(e){let o=e.value;return o?xn.createElement(xn.Fragment,null,ui(o,e.options)):null}import{Avatar as Cn}from"@mantine/core";import{getDisplayString as Pi,getImageSrc as Di}from"@medplum/core";import $r from"react";import{Anchor as di}from"@mantine/core";import{isReference as ci,isResource as mi}from"@medplum/core";import pi from"react";function N(e){e.preventDefault(),e.stopPropagation()}function Ct(e){if(In(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&In(o[0]))return!0}return!1}function In(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=xi(t);return r&&(s+="/"+r),pi.createElement(di,{href:s,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(s)},...l},f)}function xi(e){if(e){if(typeof e=="string")return Ii(e);if(mi(e))return gi(e);if(ci(e))return hi(e)}return"#"}function Ii(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function gi(e){return`/${e.resourceType}/${e.id}`}function hi(e){return`/${e.reference}`}import{deepEquals as yi,isReference as yn,isResource as Ci,normalizeOperationOutcome as vi}from"@medplum/core";import{useCallback as Si,useEffect as gn,useState as bi}from"react";function X(e,o){let t=P(),[r,a]=bi(hn(t,e)),n=Si(f=>{yi(f,r)||a(f)},[r,a]);return gn(()=>{n(hn(t,e))},[t,e,n]),gn(()=>{let f=!0;return yn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(vi(l)))}),()=>f=!1},[t,r,e,n,o]),r}function hn(e,o){if(o){if(Ci(o))return o;if(yn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?Pi(o):e.alt??"",r=(o&&Di(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?$r.createElement(se,{to:o},$r.createElement(Cn,{src:r,alt:t,radius:a,...n})):$r.createElement(Cn,{src:r,alt:t,radius:a,...n})}import{createStyles as wi,Group as Oi,Text as Sn}from"@mantine/core";import{formatHumanName as Ei,getDisplayString as kn,getReferenceString as Li,isUUID as Ri}from"@medplum/core";import We,{forwardRef as Ni,useCallback as bn}from"react";import{Loader as ki,MultiSelect as Ti}from"@mantine/core";import vn,{useCallback as Co,useEffect as Bi,useRef as vo,useState as So}from"react";import{showNotification as Ai}from"@mantine/notifications";import{normalizeErrorString as Mi}from"@medplum/core";function bo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=Fi(o),u=vo(null),[d,c]=So(void 0),[g,y]=So(),[A,v]=So(),[B,I]=So(),[H,b]=So(i.map(r)),[x,q]=So([]),oe=vo();oe.current=d;let me=vo();me.current=g;let te=vo();te.current=A;let qo=vo();qo.current=B;let C=vo();C.current=x;let R=Co(()=>{y(void 0);let Z=u.current?.value.trim()||"";if(Z===oe.current)return;c(Z);let le=new AbortController;v(le),a(Z,le.signal).then(pe=>{le.signal.aborted||(q(pe.map(r)),v(void 0),qo.current&&(pe.length>0&&n(pe.slice(0,1)),I(!1)))}).catch(pe=>{le.signal.aborted||pe.message.includes("aborted")||Ai({color:"red",message:Mi(pe)})})},[a,n,r]),Ae=Co(()=>{te.current&&(te.current.abort(),v(void 0)),me.current!==void 0&&window.clearTimeout(me.current);let Z=window.setTimeout(()=>R(),100);y(Z)},[R]),ye=Co(Z=>{let le=[],pe=[];for(let Uo of Z){let pt=C.current?.find(Ns=>Ns.value===Uo),Go=pt?.resource;!Go&&l!==!1&&f&&(Go=f(Uo),pt=r(Go)),Go&&le.push(Go),pt&&pe.push(pt)}n(le),b(pe)},[l,n,f,r]),ro=Co(Z=>{Z.key==="Enter"&&(!me.current&&!te.current?(N(Z),C.current&&C.current.length>0&&(q(C.current.slice(0,1)),ye([C.current[0].value]))):I(!0))},[ye]),k=Co(Z=>{let le=r(f(Z));return q([...C.current,le]),le},[f,q,r]),W=Co((Z,le)=>!le,[]);return Bi(()=>()=>{te.current&&te.current.abort()},[]),vn.createElement(Ti,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:ro,onSearchChange:Ae,data:[...H,...x],onFocus:R,onChange:ye,onCreate:k,rightSectionWidth:40,rightSection:A?vn.createElement(ki,{size:16}):null,filter:W,creatable:!0})}function Fi(e){return e?Array.isArray(e)?e:[e]:[]}var Hi=wi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Vi(e){return e.id}function qi(e){return{value:e.id,label:kn(e),resource:e}}function Tn(e){let{classes:o}=Hi(),t=Qe(),r=P(),a=bn(async(f,l)=>{let s=Gi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Qi(u,f)},[r]),n=bn(f=>{f.length>0&&t(`/${Li(f[0])}`)},[t]);return We.createElement(bo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement(Ur,{size:16}),placeholder:"Search",itemComponent:Ui,toKey:Vi,toOption:qi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Ui=Ni(({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(Oi,{noWrap:!0},We.createElement(Ce,{value:e}),We.createElement("div",null,We.createElement(Sn,null,kn(e)),We.createElement(Sn,{size:"xs",color:"dimmed"},r))))});function Gi(e){let o=JSON.stringify(e);return Ri(e)?`{
|
|
2
2
|
Patients1: PatientList(_id: ${o}, _count: 1) {
|
|
3
3
|
resourceType
|
|
4
4
|
id
|
|
@@ -61,8 +61,8 @@ import{formatAddress as Fs}from"@medplum/core";import $a from"react";function Ka
|
|
|
61
61
|
display
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
}`.replace(/\s+/g," ")}function Li(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Ni(Ri(t),o).slice(0,5)}function Ri(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Ni(e,o){return e.sort((t,r)=>Cn(r,o)-Cn(t,o))}function Cn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,vn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,vn(Ti(r),o));return t}function vn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Qi=Vi(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Tn(e){let o=zo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Qi(),[s,i]=zi(!1);return U.createElement(qi,{height:60,p:8,style:{zIndex:101}},U.createElement(Ct,{position:"apart"},U.createElement(Ct,{spacing:"xs"},U.createElement(Pn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),U.createElement(bn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(Re,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},U.createElement(Re.Target,null,U.createElement(Pn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},U.createElement(Ct,{spacing:7},U.createElement(Ce,{value:r,radius:"xl",size:24}),U.createElement(Ko,{size:"sm",className:f.userName},Ui(r?.name?.[0])),U.createElement(vr,{size:12,stroke:1.5})))),U.createElement(Re.Dropdown,null,U.createElement(Gi,{align:"center",p:"xl"},U.createElement(Ce,{size:"xl",radius:100,value:o.profile}),U.createElement(ht,{value:o.profile?.name?.[0]}),U.createElement(Ko,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(Re.Divider,null),n.map(u=>u.profile.reference!==Dn(o.profile)&&U.createElement(Re.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(Ct,null,U.createElement(Hi,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(Ko,{size:"sm",weight:500},u.profile.display),U.createElement(Ko,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(Re.Divider,null),U.createElement(Re.Item,{icon:U.createElement(Vr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(Re.Item,{icon:U.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Dn(r)}`)},"Account settings"),U.createElement(Re.Item,{icon:U.createElement(Mr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(Ko,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as cu,createStyles as mu,Navbar as Xr,ScrollArea as pu,Space as xu,Text as Iu}from"@mantine/core";import ae,{useState as gu}from"react";import{Button as $i,Group as Ki,Modal as ji,NativeSelect as _i,Stack as Zi,TextInput as Yi}from"@mantine/core";import{showNotification as Bn}from"@mantine/notifications";import{deepClone as eu,normalizeErrorString as ou}from"@medplum/core";import We from"react";import Ji from"react";function kn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Wi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Xi(o,t);return o}function Wi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Xi(e,o){e[o.name]=o.value}function J(e){return Ji.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=kn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function An(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=eu(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Bn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Bn({color:"red",message:ou(u)})})}return We.createElement(ji,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},We.createElement(J,{onSubmit:r},We.createElement(Zi,null,We.createElement(tu,{config:t}),We.createElement(Yi,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),We.createElement(Ki,{position:"right"},We.createElement($i,{mt:"sm",type:"submit"},"OK")))))}function tu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return We.createElement(_i,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import su,{useState as iu}from"react";import ru,{useCallback as au}from"react";function Wr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function nu(e){return typeof e.display=="string"?e.display:Wr(e)}function fu(e){return{value:Wr(e),label:nu(e),resource:e}}function lu(e){return{code:e,display:e}}function bo(e){let o=S(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=au(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let C of d)C.code&&!c.some(P=>P.code===C.code)&&c.push(C);return c},[o,t]);return ru.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:Wr,toOption:fu,loadOptions:f,onCreate:lu,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function vt(e){let[o,t]=iu(e.defaultValue);function r(a){let n=a[0],f=du(n);t(f),e.onChange&&e.onChange(f)}return su.createElement(bo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:uu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function uu(e){return e?{code:e}:void 0}function du(e){return e?.code}var Fn=mu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function Mn(e){let{classes:o}=Fn(),t=Ue(),r=Cu(e.pathname,e.searchParams,e.menus),[a,n]=gu(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return ae.createElement(ae.Fragment,null,ae.createElement(Xr,{width:{sm:250},p:"xs"},ae.createElement(pu,null,ae.createElement(Xr.Section,{mb:"sm"},ae.createElement(vt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),ae.createElement(Xr.Section,{grow:!0},e.menus?.map(s=>ae.createElement(ae.Fragment,{key:`menu-${s.title}`},ae.createElement(Iu,{className:o.menuTitle},s.title),s.links?.map(i=>ae.createElement(hu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},ae.createElement(yu,{to:i.href,icon:i.icon}),ae.createElement("span",null,i.label))))),e.displayAddBookmark&&ae.createElement(cu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:ae.createElement(Lr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&ae.createElement(An,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function hu(e){let{classes:o,cx:t}=Fn();return ae.createElement(fe,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function yu(e){return e.icon?e.icon:ae.createElement(xu,{w:30})}function Cu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=vu(e,o,f.href);l>a&&(a=l,r=f)}return r}function vu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function QS(e){let o=bu(),[t,r]=Du(localStorage.navbarOpen==="true"),a=S(),n=pt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?ro.createElement(zr,null):ro.createElement(Su,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ro.createElement(Tn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?ro.createElement(Mn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},ro.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},ro.createElement(Pu,{fallback:ro.createElement(zr,null)},e.children)))}import Jr from"react";import{Anchor as Tu}from"@mantine/core";import Xe from"react";function Oe(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?Xe.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&Xe.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&Xe.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Xe.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&Xe.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Xe.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Xe.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Xe.createElement(Tu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function wn(e){return Jr.createElement("div",null,e.values?.map((o,t)=>Jr.createElement("div",{key:"attatchment-"+t},Jr.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as On}from"@mantine/core";import le,{useRef as Bu,useState as Au}from"react";import $r,{useRef as ku}from"react";function Po(e){let o=S(),t=ku(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return $r.createElement($r.Fragment,null,$r.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function En(e){let[o,t]=Au(e.defaultValue??[]),r=Bu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return le.createElement("table",{style:{width:"100%"}},le.createElement("colgroup",null,le.createElement("col",{width:"97%"}),le.createElement("col",{width:"3%"})),le.createElement("tbody",null,o.map((n,f)=>le.createElement("tr",{key:`${f}-${o.length}`},le.createElement("td",null,le.createElement(Oe,{value:n,maxWidth:200})),le.createElement("td",null,le.createElement(On,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=o.slice();s.splice(f,1),a(s)}},le.createElement(ze,null))))),le.createElement("tr",null,le.createElement("td",null),le.createElement("td",null,le.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>le.createElement(On,{...n,title:"Add",size:"sm",color:"green"},le.createElement(Wo,{size:16})))))))}import{Button as Ln}from"@mantine/core";import Do,{useState as Fu}from"react";function St(e){let[o,t]=Fu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Oe,{value:o,maxWidth:200}),Do.createElement(Ln,{onClick:a=>{H(a),r(void 0)}},"Remove")):Do.createElement(Po,{onUpload:r},a=>Do.createElement(Ln,{...a},"Upload..."))}import{getPropertyDisplayName as Ku,globalSchema as ju}from"@medplum/core";import Yo from"react";var bt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Mu}from"@mantine/core";import jo from"react";var wu=Mu(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function Rn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=wu();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Nn(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{formatDateTime as qu,formatPeriod as Gu,formatTiming as Uu,getElementDefinitionTypeName as zu,getTypedPropertyValue as Qu,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as Ou}from"@medplum/core";import Hn from"react";function To(e){return Hn.createElement(Hn.Fragment,null,Ou(e.value))}import{formatCoding as Eu}from"@medplum/core";import Vn from"react";function qn(e){return Vn.createElement(Vn.Fragment,null,Eu(e.value))}import Kr from"react";import Gn from"react";function Pt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Gn.createElement(Gn.Fragment,null,t.join("").trim())}function Un(e){let o=e.value;return o?Kr.createElement(Kr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Kr.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Lu from"react";function zn(e){return Lu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Ru}from"@medplum/core";import Qn from"react";function Wn(e){return Qn.createElement(Qn.Fragment,null,Ru(e.value))}import{formatQuantity as Nu}from"@medplum/core";import Xn from"react";function _o(e){return Xn.createElement(Xn.Fragment,null,Nu(e.value))}import{formatRange as Hu}from"@medplum/core";import Jn from"react";function Dt(e){return Jn.createElement(Jn.Fragment,null,Hu(e.value))}import Tt from"react";function $n(e){let o=e.value;return o?Tt.createElement(Tt.Fragment,null,Tt.createElement(_o,{value:o.numerator}),"\xA0/\xA0",Tt.createElement(_o,{value:o.denominator})):null}import{stringify as Vu}from"@medplum/core";import jr from"react";function ao(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Vu(e.value);return e.link!==!1&&e.value.reference?jr.createElement(fe,{to:e.value},o):jr.createElement(jr.Fragment,null,o)}import kt from"react";function Kn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return kt.createElement(kt.Fragment,null,t.map((a,n)=>kt.createElement("div",{key:`${n}-${t.length}`},kt.createElement(me,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}import{ActionIcon as Wu,Box as Xu,CopyButton as Ju,Tooltip as $u}from"@mantine/core";function me(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Xu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Ju,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement($u,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Wu,{color:n?"teal":"gray",onClick:f},n?E.createElement(Qo,{size:"1rem"}):E.createElement(br,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?E.createElement(wn,{values:r,maxWidth:e.maxWidth}):E.createElement(Kn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(ao,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,qu(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(Ka,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(Oe,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(To,{value:r});case V.Coding:return E.createElement(qn,{value:r});case V.ContactDetail:return E.createElement(Un,{value:r});case V.ContactPoint:return E.createElement(Pt,{value:r});case V.HumanName:return E.createElement(ht,{value:r});case V.Identifier:return E.createElement(zn,{value:r});case V.Money:return E.createElement(Wn,{value:r});case V.Period:return E.createElement(E.Fragment,null,Gu(r));case V.Quantity:case V.Duration:return E.createElement(_o,{value:r});case V.Range:return E.createElement(Dt,{value:r});case V.Ratio:return E.createElement($n,{value:r});case V.Reference:return E.createElement(ao,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Uu(r));case V.Dosage:case V.UsageContext:return E.createElement(Zo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return E.createElement(Zo,{value:{type:zu(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function be(e,o){let t=Qu(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=ju.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Yo.createElement("div",null,t.name):Yo.createElement(Rn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(bt.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=be(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:Yo.createElement(Nn,{key:f,term:Ku(f)},Yo.createElement(me,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Fc}from"@mantine/core";import{getPropertyDisplayName as kf,globalSchema as Mc}from"@medplum/core";import Ao,{useState as wc}from"react";import{Group as _u,Input as Zu}from"@mantine/core";import Bt from"react";function At(e){return Bt.createElement(_u,{noWrap:!0},Bt.createElement("div",null,e.children),Bt.createElement("div",null,Bt.createElement(Zu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Yu}from"@mantine/core";import ed from"react";function pe(e,o){return e?.issue?.filter(t=>jn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
-
`)}function Ft(e,o){return e?.issue?.filter(t=>jn(t.expression?.[0],o))}function jn(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Pe(e){return ed.createElement(Yu.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:pe(e.outcome,e.htmlFor)},e.children)}import{Button as _n,Group as od,Stack as td,TextInput as Zn}from"@mantine/core";import{capitalize as rd,deepClone as ad}from"@medplum/core";import Be,{useEffect as nd,useState as Yn}from"react";function UP(e){let o=S(),t=W(e.defaultValue),[r,a]=Yn(),[n,f]=Yn();return nd(()=>{t&&(f(ad(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Be.createElement("div",null,"Loading..."):Be.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Be.createElement(td,{mb:"xl"},Be.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Be.createElement(Zn,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Be.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},Be.createElement(Zn,{name:"id",defaultValue:n.id,disabled:!0}))),Be.createElement(ot,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Be.createElement(od,{position:"right",mt:"xl"},Be.createElement(_n,{type:"submit"},"OK"),e.onDelete&&Be.createElement(_n,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function et(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",rd(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as vc,Group as Sc,NativeSelect as bc,Textarea as Pc,TextInput as na}from"@mantine/core";import{capitalize as Dc,getElementDefinitionTypeName as Tc,PropertyType as L}from"@medplum/core";import G,{useState as kc}from"react";import fd,{useState as ld}from"react";function ef(e){let[o,t]=ld(e.defaultValue);function r(a){let n=id(a);t(n),e.onChange&&e.onChange(n)}return fd.createElement(bo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&sd(o),maxSelectedValues:1,onChange:r})}function sd(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function id(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import ud,{useState as dd}from"react";function of(e){let[o,t]=dd(e.defaultValue);function r(a){let n=a[0],f=n&&md(n);t(f),e.onChange&&e.onChange(f)}return ud.createElement(bo,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&cd(o),maxSelectedValues:1,onChange:r})}function cd(e){return{system:e.system,code:e.code,display:e.display}}function md(e){return{system:e.system,code:e.code,display:e.display}}import{Group as hd,TextInput as yd}from"@mantine/core";import _r,{useRef as Cd,useState as vd}from"react";import{Group as pd,NativeSelect as tf,TextInput as xd}from"@mantine/core";import Mt,{useRef as Id,useState as gd}from"react";function wt(e){let[o,t]=gd(e.defaultValue),r=Id();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return Mt.createElement(pd,{spacing:"xs",grow:!0,noWrap:!0},Mt.createElement(tf,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Mt.createElement(tf,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Mt.createElement(xd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function rf(e){let[o,t]=vd(e.defaultValue),r=Cd();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return _r.createElement(hd,{spacing:"xs",grow:!0,noWrap:!0},_r.createElement(yd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),_r.createElement(wt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Sd}from"@mantine/core";import{isValidDate as af}from"@medplum/core";import bd from"react";function Ae(e){return bd.createElement(Sd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Td(),defaultValue:Pd(e.defaultValue),autoFocus:e.autoFocus,error:pe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Dd(t))}}})}function Pd(e){if(!e)return"";let o=new Date(e);return af(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Dd(e){if(!e)return"";let o=new Date(e);return af(o)?o.toISOString():""}function Td(){return"datetime-local"}import{JsonInput as kd}from"@mantine/core";import{stringify as Bd}from"@medplum/core";import Ad from"react";function nf(e){return Ad.createElement(kd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Bd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Fd,NativeSelect as Md,TextInput as Ot}from"@mantine/core";import ko,{useRef as wd,useState as Od}from"react";function ff(e){let[o,t]=Od(e.defaultValue),r=wd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return ko.createElement(Fd,{spacing:"xs",grow:!0,noWrap:!0},ko.createElement(Md,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),ko.createElement(Ot,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),ko.createElement(Ot,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),ko.createElement(Ot,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),ko.createElement(Ot,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Ed,TextInput as lf}from"@mantine/core";import Zr,{useState as Ld}from"react";function sf(e){let[o,t]=Ld(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Zr.createElement(Ed,{spacing:"xs",grow:!0,noWrap:!0},Zr.createElement(lf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),Zr.createElement(lf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Rd,TextInput as Nd}from"@mantine/core";import Yr,{useCallback as ea,useState as Hd}from"react";var Vd=["USD","EUR","CAD","GBP","AUD"];function uf(e){let{onChange:o}=e,[t,r]=Hd(e.defaultValue),a=ea(s=>{r(s),o&&o(s)},[o]),n=ea(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=ea(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=Yr.createElement(Rd,{defaultValue:t?.currency,data:Vd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return Yr.createElement(Nd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:Yr.createElement(Pr,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as qd}from"@mantine/core";import oa,{useState as Gd}from"react";function df(e){let[o,t]=Gd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return oa.createElement(qd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(Ae,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),oa.createElement(Ae,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Ud,NativeSelect as zd,TextInput as cf}from"@mantine/core";import Et,{useState as Qd}from"react";function De(e){let[o,t]=Qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Et.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},Et.createElement(zd,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Et.createElement(cf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Wd(a.currentTarget.value)})}}),Et.createElement(cf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Wd(e){if(e)return parseFloat(e)}import{Group as Xd}from"@mantine/core";import ta,{useState as Jd}from"react";function tt(e){let[o,t]=Jd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Xd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(De,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ta.createElement(De,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as $d}from"@mantine/core";import ra,{useState as Kd}from"react";function mf(e){let[o,t]=Kd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ra.createElement($d,{spacing:"xs",grow:!0,noWrap:!0},ra.createElement(De,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ra.createElement(De,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as nc,NativeSelect as fc,TextInput as lc}from"@mantine/core";import{createReference as sc}from"@medplum/core";import Rt,{useRef as gf,useState as hf}from"react";import{Group as jd,Text as pf}from"@mantine/core";import{getDisplayString as _d,getReferenceString as If}from"@medplum/core";import no,{forwardRef as Zd,useCallback as xf,useState as Yd}from"react";var ec={Observation:"code",User:"email:contains"},oc=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function tc(e){return{value:If(e),label:_d(e),resource:e}}function Lt(e){let o=S(),t=e.resourceType,[r,a]=Yd(),n=W(e.defaultValue,a),f=e.onChange,l=xf(async(i,u)=>{let d=ac(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=xf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:no.createElement(So,{name:e.name,itemComponent:rc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:If,toOption:tc,loadOptions:l,onChange:s,clearable:!0})}var rc=Zd(({label:e,resource:o,...t},r)=>no.createElement("div",{ref:r,...t},no.createElement(jd,{noWrap:!0},no.createElement(Ce,{value:o}),no.createElement("div",null,no.createElement(pf,null,e),no.createElement(pf,{size:"xs",color:"dimmed"},o.birthDate)))));function ac(e){return ec[e]??(oc.includes(e)?"name":"_id")}function Bo(e){let o=ic(e.targetTypes),t=uc(e.defaultValue,o),[r,a]=hf(e.defaultValue),[n,f]=hf(t),l=gf();l.current=r;let s=gf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Rt.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},o?Rt.createElement(fc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Rt.createElement(lc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Rt.createElement(Lt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?sc(u):void 0)}}))}function ic(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function uc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as yf}from"@mantine/core";import xe,{useRef as dc,useState as cc}from"react";function Cf(e){let[o,t]=cc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=dc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return xe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},xe.createElement("colgroup",null,xe.createElement("col",{width:"97%"}),xe.createElement("col",{width:"3%"})),xe.createElement("tbody",null,o.map((n,f)=>xe.createElement("tr",{key:`${f}-${o.length}`},xe.createElement("td",null,xe.createElement(Ne,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(yf,{title:"Remove",size:"sm",onClick:l=>{H(l);let s=[...r.current];s.splice(f,1),a(s)}},xe.createElement(ze,null))))),xe.createElement("tr",null,xe.createElement("td",null),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(yf,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},xe.createElement(po,null))))))}import{Button as bf,Chip as vf,Group as Nt,Modal as mc,NativeSelect as pc,Stack as xc,Switch as Ic,TextInput as gc}from"@mantine/core";import{formatTiming as hc}from"@medplum/core";import $,{useRef as Pf,useState as aa}from"react";var yc=["sun","mon","tue","wed","thu","fri","sat"];function Df(e){let[o,t]=aa(e.defaultValue),[r,a]=aa(!1),n=Pf();return n.current=o,$.createElement($.Fragment,null,$.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement("span",null,hc(n.current)||"No repeat"),$.createElement(bf,{onClick:()=>a(!0)},"Edit")),$.createElement(Cc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var Sf={repeat:{period:1,periodUnit:"d"}};function Cc(e){let[o,t]=aa(e.defaultValue||Sf),r=Pf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return $.createElement(mc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},$.createElement(xc,null,$.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},$.createElement(Ae,{name:"timing-dialog-start",onChange:i=>a(i)})),$.createElement(Ic,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?Sf.repeat:void 0)}),o.repeat&&$.createElement($.Fragment,null,$.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},$.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},$.createElement(gc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),$.createElement(pc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&$.createElement(Pe,{title:"Repeat on"},$.createElement(vf.Group,{multiple:!0,onChange:s},$.createElement(Nt,{position:"apart",mt:"md",spacing:"xs"},yc.map(i=>$.createElement(vf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),$.createElement(Nt,{position:"right"},$.createElement(bf,{onClick:()=>e.onOk(o)},"OK"))))}function Ne(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===L.Attachment?G.createElement(En,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Cf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(Bc,{elementDefinitionTypes:n,...e}):G.createElement(Tf,{elementDefinitionType:n[0],...e})}function Bc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=kc(t);return G.createElement(Sc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(bc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(Tf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Dc(r.code)))}}))}function Tf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(na,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.date:return G.createElement(na,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Ae,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(na,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(vt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(vc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(Pc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return G.createElement(Ya,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(tn,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(St,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(ef,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(of,{property:o,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(rf,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(wt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(nf,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(ff,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(sf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(uf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(df,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(De,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(tt,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(mf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(Bo,{name:r,defaultValue:a,targetTypes:Ac(o),onChange:e.onChange});case L.Timing:return G.createElement(Df,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(ot,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(ot,{typeName:Tc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Ac(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function ot(e){let[o,t]=wc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Mc.types[a];if(!n)return Ao.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Ao.createElement(Fc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||bt.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=be(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Ao.createElement(At,{key:s,title:kf(s),description:i.definition,htmlFor:s},Ao.createElement(Ne,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(C,P)=>{r(et(o,s,P??s,l[1],C))}})):Ao.createElement(Pe,{key:s,title:kf(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Ao.createElement(Ne,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(C,P)=>{r(et(o,s,P??s,l[1],C))}}))}))}import{Button as fa,createStyles as Oc,Group as Bf}from"@mantine/core";import ee,{useMemo as Ec,useState as Lc}from"react";var Rc=Oc(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Nc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Af(e){let{classes:o}=Rc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Lc(la);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Ec(()=>Hc(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement(Bf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Nc(a)),ee.createElement(Bf,{position:"right",spacing:"xs"},ee.createElement(fa,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(fa,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,l.map((s,i)=>ee.createElement("tr",{key:"week-"+i},s.map((u,d)=>ee.createElement("td",{key:"day-"+d},u&&ee.createElement(fa,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function la(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Hc(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Vc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Vc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as qc,createStyles as Gc}from"@mantine/core";import Uc from"react";var zc=Gc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Je(e){let{children:o,...t}=e,{classes:r}=zc();return Uc.createElement(qc,{className:r.root,...t},o)}import Zm from"react";import{ActionIcon as Jf,Center as Lm,createStyles as Rm,Group as Nm,Loader as Hm,Menu as He,ScrollArea as Vm,TextInput as qm}from"@mantine/core";import{showNotification as Gm,updateNotification as pa}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as Um}from"@medplum/core";import k,{useCallback as qt,useEffect as zm,useRef as $f,useState as Kf}from"react";import{createStyles as rm,Group as Vt,List as wf,Stack as Of,Text as Te,Title as Ef}from"@mantine/core";import{capitalize as am,formatCodeableConcept as nm,formatDateTime as ua,formatObservationValue as fm,isReference as lm}from"@medplum/core";import I,{useEffect as sm,useState as im}from"react";import{Blockquote as Qc,createStyles as Wc,Stack as Xc}from"@mantine/core";import Ff from"react";var Jc=Wc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function sa({value:e}){let{classes:o}=Jc();return e?Ff.createElement(Xc,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Ff.createElement(Qc,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Yc}from"@mantine/core";import ia from"react";import{Text as $c}from"@mantine/core";import{getDisplayString as Kc,isOk as jc,normalizeErrorString as _c}from"@medplum/core";import Mf,{useState as Zc}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=Zc(),f=W(o,n),l;if(a&&!jc(a))l=`[${_c(a)}]`;else if(f)l=Kc(f);else return null;return t?Mf.createElement(fe,{to:o,...r},l):Mf.createElement($c,{component:"span",...r},l)}function $e(e){return ia.createElement(Yc,{spacing:"xs"},ia.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),ia.createElement(Ee,{value:e.value,link:e.link}))}import{Badge as em}from"@mantine/core";import om from"react";var tm={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Ht(e){return om.createElement(em,{color:tm[e.status]},e.status)}var Lf=rm(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));da.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function da(e){let o=S(),t=W(e.value),[r,a]=im();if(sm(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(Of,null,I.createElement(Ef,null,"Diagnostic Report"),I.createElement(um,{value:t}),!e.hideSpecimenInfo&&dm(r),t.result&&I.createElement(cm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(sa,{value:n}))}function um({value:e}){return I.createElement(Vt,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(Te,null,I.createElement($e,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(Te,null,I.createElement($e,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(Te,null,I.createElement($e,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(Te,null,ua(e.issued))),e.status&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(Te,null,am(e.status))))}function dm(e){return I.createElement(Of,{spacing:"xs"},I.createElement(Ef,{order:2,size:"h6"},"Specimens"),I.createElement(wf,{type:"ordered"},e?.map(o=>I.createElement(wf.Item,{ml:"sm",key:`specimen-${o.id}`},I.createElement(Vt,{spacing:20},I.createElement(Vt,{spacing:5},I.createElement(Te,{fw:500},"Collected:")," ",ua(o.collection?.collectedDateTime)),I.createElement(Vt,{spacing:5},I.createElement(Te,{fw:500},"Received:")," ",ua(o.receivedTime)))))))}function cm(e){let{classes:o}=Lf();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,I.createElement(Rf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function Rf(e){return I.createElement(I.Fragment,null,e.value?.map(o=>I.createElement(mm,{key:`obs-${lm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function mm(e){let{classes:o,cx:t}=Lf(),r=W(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Im(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(fe,{to:r},I.createElement(To,{value:r.code}))),I.createElement("td",null,I.createElement(pm,{value:r})),I.createElement("td",null,I.createElement(xm,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(To,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement(I.Fragment,null,r.category.map(f=>I.createElement("div",{key:`category-${nm(f)}`},I.createElement(To,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(ao,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Ht,{status:r.status}))),r.hasMember&&I.createElement(Rf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(sa,{value:r.note}))))}function pm(e){let o=e.value;return I.createElement(I.Fragment,null,fm(o))}function xm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(Dt,{value:o}):null}function Im(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as gm,Paper as hm,useComponentDefaultProps as ym}from"@mantine/core";import Cm from"react";var vm=gm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Sm={shadow:"xs",radius:"md",withBorder:!0};function Fo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=ym("Panel",Sm,e),{classes:l,cx:s}=vm({width:r,fill:a},{name:"Panel",unstyled:n});return Cm.createElement(hm,{className:s(l.paper,o),...f},t)}import{createStyles as bm}from"@mantine/core";import{getPropertyDisplayName as Pm,stringify as Nf,toTypedValue as Hf}from"@medplum/core";import se,{useEffect as Dm,useState as Tm}from"react";var km=bm(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function qf(e){let{classes:o}=km(),t=S(),[r,a]=Tm();if(Dm(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?se.createElement("table",{className:o.root},se.createElement("colgroup",null,se.createElement("col",{style:{width:"30%"}}),se.createElement("col",{style:{width:"35%"}}),se.createElement("col",{style:{width:"35%"}})),se.createElement("thead",null,se.createElement("tr",null,se.createElement("th",null,"Property"),se.createElement("th",null,"Before"),se.createElement("th",null,"After"))),se.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=be(Hf(e.original),l),[d,c]=be(Hf(e.revised),l);return Vf(i)&&Vf(d)||Nf(i)===Nf(d)?null:se.createElement("tr",{key:l},se.createElement("td",null,Pm(l)),se.createElement("td",{className:o.removed},se.createElement(me,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),se.createElement("td",{className:o.added},se.createElement(me,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Vf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Bm,{useEffect as Am,useState as Fm}from"react";function ca(e){let o=S(),t=W(e.value),[r,a]=Fm();return Am(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Bm.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Mm,Group as wm,Menu as Gf,Text as ma}from"@mantine/core";import{formatDateTime as Om,getReferenceString as Em}from"@medplum/core";import oe from"react";function Uf(e){return oe.createElement(Je,null,e.children)}function Ke(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return oe.createElement(Fo,{"data-testid":"timeline-item",fill:!0,...n},oe.createElement(wm,{position:"apart",spacing:8,mx:"xs",my:"sm"},oe.createElement(Ce,{value:f,link:!0,size:"md"}),oe.createElement("div",{style:{flex:1}},oe.createElement(ma,{size:"sm"},oe.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),oe.createElement(ma,{size:"xs"},oe.createElement(fe,{color:"dimmed",to:e.resource},Om(l)),oe.createElement(ma,{component:"span",color:"dimmed",mx:8},"\xB7"),oe.createElement(fe,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&oe.createElement(Gf,{position:"bottom-end",shadow:"md",width:200},oe.createElement(Gf.Target,null,oe.createElement(Mm,{radius:"xl","aria-label":`Actions for ${Em(e.resource)}`},oe.createElement(Dr,null))),a)),oe.createElement(ho,null,r&&oe.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&oe.createElement(oe.Fragment,null,e.children)))}function Wf(e,o){e.sort((t,r)=>{let a=zf(t,o),n=zf(r,o);return a>n?1:a<n?-1:Qf(t,o)-Qf(r,o)})}function zf(e,o){if(!Xf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Qf(e,o){if(!Xf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Xf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Qm=Rm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function je(e){let o=S(),t=Ue(),r=o.getProfile(),a=$f(null),n=W(e.value),[f,l]=Kf(),[s,i]=Kf([]),u=e.loadTimelineResources,d=$f(s);d.current=s;let c=qt(v=>{Wf(v,n),v.reverse(),i(v)},[n]),C=qt(v=>{let N=[];for(let ke of v){if(ke.status!=="fulfilled")continue;let ye=ke.value;if(ye.type==="history"&&l(ye),ye.entry)for(let eo of ye.entry)N.push(eo.resource)}c(N)},[c]),P=qt(v=>c([...d.current,v]),[c]),B=qt(()=>{let v,N;"resourceType"in e.value?(v=e.value.resourceType,N=e.value.id):[v,N]=e.value.reference?.split("/"),u(o,v,N).then(C).catch(console.log)},[o,e.value,u,C]);zm(()=>B(),[B]);function g(v){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,v)).then(N=>P(N)).catch(console.log)}function D(v){!n||!e.createMedia||o.createResource(e.createMedia(n,r,v)).then(N=>P(N)).then(()=>pa({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:k.createElement(Qo,{size:16}),autoClose:2e3})).catch(N=>pa({id:"upload-notification",color:"red",title:"Upload error",message:Um(N),icon:k.createElement(kr,{size:16}),autoClose:2e3}))}function p(v,N){return o.updateResource({...v,priority:N})}function h(v){p(v,"stat").then(B).catch(console.log)}function y(v){p(v,"routine").then(B).catch(console.log)}function w(v){t(`/${v.resourceType}/${v.id}`)}function ge(v){t(`/${v.resourceType}/${v.id}/edit`)}function he(v){t(`/${v.resourceType}/${v.id}/delete`)}function de(v){t(`/${v.resourceType}/${v.id}/_history/${v.meta?.versionId}`)}function Y(){Gm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Vo(v){pa({id:"upload-notification",loading:!0,title:"Uploading...",message:_m(v),autoClose:!1,withCloseButton:!1})}return n?k.createElement(Uf,null,e.createCommunication&&k.createElement(Fo,null,k.createElement(J,{testid:"timeline-form",onSubmit:v=>{g(v.text);let N=a.current;N&&(N.value="",N.focus())}},k.createElement(Nm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},k.createElement(Ce,{value:r}),k.createElement(qm,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),k.createElement(Jf,{type:"submit",radius:"xl",color:"blue",variant:"filled"},k.createElement(wr,{size:16})),k.createElement(Po,{onUpload:D,onUploadStart:Y,onUploadProgress:Vo},v=>k.createElement(Jf,{...v,radius:"xl",color:"blue",variant:"filled"},k.createElement(Wo,{size:16})))))),s.map(v=>{if(!v)return null;let N=`${v.resourceType}/${v.id}/${v.meta?.versionId}`;if(v.resourceType===n.resourceType&&v.id===n.id)return k.createElement(Wm,{key:N,history:f,resource:v,onDetails:de});switch(v.resourceType){case"AuditEvent":return k.createElement(Km,{key:N,resource:v,onDetails:w});case"Communication":return k.createElement(Jm,{key:N,resource:v,onPin:v.priority!=="stat"?h:void 0,onUnpin:v.priority==="stat"?y:void 0,onDetails:w,onEdit:ge,onDelete:he});case"DiagnosticReport":return k.createElement(jm,{key:N,resource:v,onDetails:w,onEdit:ge,onDelete:he});case"Media":return k.createElement($m,{key:N,resource:v,onDetails:w,onEdit:ge,onDelete:he});default:return k.createElement(Ke,{key:N,resource:v,padding:!0},k.createElement(ca,{value:v,ignoreMissingValues:!0}))}})):k.createElement(Lm,{style:{width:"100%",height:"100%"}},k.createElement(Hm,null))}function Mo(e){return k.createElement(He.Dropdown,null,k.createElement(He.Label,null,"Resource"),e.onPin&&k.createElement(He.Item,{icon:k.createElement(Or,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&k.createElement(He.Item,{icon:k.createElement(Er,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&k.createElement(He.Item,{icon:k.createElement(Fr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&k.createElement(He.Item,{icon:k.createElement(Tr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&k.createElement(k.Fragment,null,k.createElement(He.Divider,null),k.createElement(He.Label,null,"Danger zone"),k.createElement(He.Item,{color:"red",icon:k.createElement($o,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function Wm(e){let o=Xm(e.history,e.resource);return o?k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(qf,{original:o,revised:e.resource})):k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement("h3",null,"Created"),k.createElement(ca,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Xm(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Jm(e){let{classes:o}=Qm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return k.createElement(Ke,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:k.createElement(Mo,{...e})},k.createElement("p",null,e.resource.payload?.[0]?.contentString))}function $m(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return k.createElement(Ke,{resource:e.resource,padding:!!t,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(Oe,{value:e.resource.content}))}function Km(e){return k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(Vm,null,k.createElement("pre",null,e.resource.outcomeDesc)))}function jm(e){return k.createElement(Ke,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(Mo,{...e})},k.createElement(da,{value:e.resource}))}function _m(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${xa(e.loaded)} / ${xa(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${xa(e.loaded)}`}function xa(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function AB(e){return Zm.createElement(je,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import jf from"react";function Gt(e){let{children:o,...t}=e;return jf.createElement(Je,null,jf.createElement(Fo,{...t},o))}import{createReference as Ut}from"@medplum/core";import Ym from"react";function GB(e){return Ym.createElement(je,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Ut(o),subject:o.subject,sender:Ut(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Ut(o),subject:o.subject,operator:Ut(t),issued:new Date().toISOString(),content:r})})}import{Button as fx,Loader as lx,Table as sx}from"@mantine/core";import{normalizeOperationOutcome as ix}from"@medplum/core";import te,{useEffect as Bl,useRef as Al,useState as jt}from"react";import{evalFhirPath as ep}from"@medplum/core";import op from"react";function _f(e){let o;try{o=ep(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return op.createElement(me,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Qp,Button as Lo,Center as $t,createStyles as Wp,Group as Kt,Loader as Xp,Menu as Dl,Pagination as Jp,Table as $p,Text as Pa,UnstyledButton as Kp}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ba,formatSearchQuery as jp,globalSchema as _p}from"@medplum/core";import b,{useCallback as Tl,useEffect as kl,useRef as Zp,useState as Da}from"react";import{Box as tp,Button as rp,Modal as ap,Text as np}from"@mantine/core";import wo from"react";function Yf(e){return wo.createElement(ap,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},wo.createElement(tp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&wo.createElement(Zf,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&wo.createElement(Zf,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),wo.createElement(np,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Zf(e){return wo.createElement(rp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as xp}from"@mantine/core";import{globalSchema as Ip,stringify as gp}from"@medplum/core";import X,{useEffect as hp,useRef as pl,useState as yp}from"react";import{capitalize as fp,DEFAULT_SEARCH_COUNT as lp,evalFhirPathTyped as sp,formatDateTime as ip,Operator as M}from"@medplum/core";import zt from"react";var up={string:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],fulltext:[M.EQUALS,M.NOT,M.CONTAINS,M.EXACT],token:[M.EQUALS,M.NOT],reference:[M.EQUALS,M.NOT],numeric:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],quantity:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS],date:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY],datetime:[M.EQUALS,M.NOT_EQUALS,M.GREATER_THAN,M.LESS_THAN,M.GREATER_THAN_OR_EQUALS,M.LESS_THAN_OR_EQUALS,M.STARTS_AFTER,M.ENDS_BEFORE,M.APPROXIMATELY]},dp={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function at(e,o){return{...e,filters:o,offset:0,name:void 0}}function rA(e){return at(e,[])}function Qt(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function Oo(e,o,t,r,a){a&&(e=Qt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function aA(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function ol(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function tl(e,o){return Ia(e,o,-1)}function rl(e,o){return Ia(e,o,0)}function al(e,o){return Ia(e,o,1)}function Ia(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),ha(e,o,r,a)}function nl(e,o){return ga(e,o,-1)}function fl(e,o){return ga(e,o,0)}function ll(e,o){return ga(e,o,1)}function ga(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),ha(e,o,r,a)}function sl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),ha(e,o,t,new Date)}function ha(e,o,t,r){return e=Qt(e,o),e=el(e,o,M.GREATER_THAN_OR_EQUALS,t),e=el(e,o,M.LESS_THAN_OR_EQUALS,r),e}function el(e,o,t,r){return Oo(e,o,t,r.toISOString())}function ya(e,o,t=!0){return Oo(e,o,M.MISSING,t.toString())}function cp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function il(e,o){let t=e.count??lp,r=(o-1)*t;return cp(e,r)}function Ca(e,o,t){return o===ul(e)&&t!==void 0&&t===dl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function nA(e,o){let t=!1;return ul(e)===o&&(t=!dl(e)),Ca(e,o,t)}function ul(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function dl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function cl(e){return up[e.type]}function nt(e){return dp[e]??""}function ve(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(fp).join(" "))}function ml(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?ip(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?mp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?pp(e,o.searchParams[0]):null}function mp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=be({type:e.resourceType,value:e},t);return r?zt.createElement(me,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function pp(e,o){let t=sp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:zt.createElement(zt.Fragment,null,t.map((r,a)=>zt.createElement(me,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function xl(e){let[o,t]=yp({search:JSON.parse(gp(e.search))}),r=pl(null),a=pl(null);hp(()=>{t({search:e.search})},[e.search]);function n(p){p.key==="Enter"&&i()}function f(){i()}function l(p){p.key==="Enter"&&u()}function s(){u()}function i(){let p=o.search.fields??[],h=r.current?.value;if(h){let y=[...p,h];t({search:{...o.search,fields:y}})}}function u(){let p=o.search.fields??[],h=a.current?.value;if(h){let y=[...p];y.splice(y.indexOf(h),1),t({search:{...o.search,fields:y}})}}function d(){let p=o.search.fields??[],h=a.current?.value;if(!h)return;let y=[...p],w=y.indexOf(h);w<=0||(C(y,w,w-1),t({search:{...o.search,fields:y}}))}function c(){let p=o.search.fields??[],h=a.current?.value;if(!h)return;let y=[...p],w=y.indexOf(h);w>=y.length-1||(C(y,w,w+1),t({search:{...o.search,fields:y}}))}function C(p,h,y){let w=p[h];p[h]=p[y],p[y]=w}if(!e.visible)return null;let P=e.search.resourceType,B=Ip.types[P],g=o.search.fields??[],D=Cp(B).filter(p=>!g.includes(p)).sort((p,h)=>p.localeCompare(h));return X.createElement(xp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},X.createElement("div",null,X.createElement("table",{style:{margin:"auto"}},X.createElement("thead",null,X.createElement("tr",null,X.createElement("th",{colSpan:2,align:"center"},"Available"),X.createElement("th",{colSpan:2,align:"center"},"Selected"))),X.createElement("tbody",null,X.createElement("tr",null,X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:p=>n(p),onDoubleClick:()=>f(),"data-testid":"available"},D.map(p=>X.createElement("option",{key:p,value:p},ve(p))))),X.createElement("td",{colSpan:2,align:"center"},X.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:p=>l(p),onDoubleClick:()=>s(),"data-testid":"selected"},g.map(p=>X.createElement("option",{key:p,value:p},ve(p))))))),X.createElement("tfoot",null,X.createElement("tr",null,X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),X.createElement("td",{align:"center"},X.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),X.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function Cp(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(ve(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ve(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ve(a)))}return o}import{Button as st,Group as Bp,Modal as Ap,NativeSelect as gl}from"@mantine/core";import{globalSchema as Fp,stringify as hl}from"@medplum/core";import R,{useEffect as Mp,useRef as Cl,useState as Sa}from"react";import{formatDateTime as vp,getSearchParameterDetails as Sp,globalSchema as bp,Operator as Il,SearchParameterType as Pp}from"@medplum/core";import lt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=bp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Il.EQUALS||t.operator===Il.NOT_EQUALS))return lt.createElement(Ee,{value:{reference:t.value}});let a=Sp(o,r);if(t.code==="_lastUpdated"||a.type===Pp.DATETIME)return lt.createElement(lt.Fragment,null,vp(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Dp,TextInput as va}from"@mantine/core";import{getSearchParameterDetails as Tp,SearchParameterType as Eo}from"@medplum/core";import fo from"react";function Xt(e){let o=Tp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Eo.REFERENCE:return fo.createElement(Bo,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Eo.BOOLEAN:return fo.createElement(Dp,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Eo.DATE:return fo.createElement(va,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Eo.DATETIME:return fo.createElement(Ae,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Eo.NUMBER:return fo.createElement(va,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Eo.QUANTITY:return fo.createElement(De,{name:t,defaultValue:kp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return fo.createElement(va,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function kp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function vl(e){let[o,t]=Sa(JSON.parse(hl(e.search))),[r,a]=Sa(-1),n=Cl(o);n.current=o,Mp(()=>{t(JSON.parse(hl(e.search)))},[e.search]);function f(u){t(Oo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=Fp.types[l].searchParams??{},i=o.filters||[];return R.createElement(Ap,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(yl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let C=[...i];C[d]=c,t(at(n.current,C)),a(-1)},onCancel:()=>a(-1)}):R.createElement(wp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(ol(n.current,d))})),R.createElement(yl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),R.createElement(Bp,{position:"right",mt:"xl"},R.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function wp(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,ve(o.code)),R.createElement("td",null,nt(o.operator)),R.createElement("td",null,R.createElement(Wt,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function yl(e){let[o,t]=Sa(e.defaultValue??{}),r=Cl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&cl(l);return R.createElement("tr",null,R.createElement("td",null,R.createElement(gl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ve(i)}))]})),R.createElement("td",null,s&&R.createElement(gl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:nt(i)}))]})),R.createElement("td",null,l&&o.operator&&R.createElement(Xt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&o.value&&R.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Op,Grid as ba,Modal as Ep}from"@mantine/core";import lo,{useState as Lp}from"react";function Sl(e){let[o,t]=Lp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return lo.createElement(Ep,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},lo.createElement(J,{onSubmit:r},lo.createElement(ba,null,lo.createElement(ba.Col,{span:10},lo.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),lo.createElement(ba.Col,{span:2},lo.createElement(Op,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as ie}from"@medplum/core";import m from"react";function bl(e){if(!e.searchParams)return null;function o(n,f){a(Ca(e.search,n.code,f))}function t(n){a(Qt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(Rp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(F.Dropdown,null,e.searchParams.map(n=>m.createElement(F.Item,{key:n.code},ve(n.code))))}function Rp(e){switch(e.searchParam.type){case"date":return m.createElement(Np,{...e});case"number":case"quantity":return m.createElement(Hp,{...e});case"reference":return m.createElement(Vp,{...e});case"string":case"token":case"uri":return m.createElement(qp,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Np(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,ie.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,ie.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(gr,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(al(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(rl(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(tl(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(ll(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(fl(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(nl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Le,{size:14}),onClick:()=>e.onChange(sl(e.search,t))},"Year to date"),m.createElement(Jt,{...e}))}function Hp(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ie.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,ie.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Jt,{...e}))}function Vp(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),m.createElement(Jt,{...e}))}function qp(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,ie.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(yr,{size:14}),onClick:()=>e.onPrompt(o,ie.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(hr,{size:14}),onClick:()=>e.onPrompt(o,ie.EQUALS)},"Does not contain..."),m.createElement(Jt,{...e}))}function Jt(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(xr,{size:14}),onClick:()=>e.onChange(ya(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(pr,{size:14}),onClick:()=>e.onChange(ya(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Gr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Gp,globalSchema as Up}from"@medplum/core";function Pl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(zp(o,r));return t}function zp(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=Up.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Gp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ta=class extends Event{constructor(t){super("change");this.definition=t}},ka=class extends Event{constructor(t){super("load");this.response=t}},so=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},Yp=Wp(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function ex(e){let{classes:o}=Yp(),t=S(),[r,a]=Da(!1),[n,f]=Da(),{search:l,onLoad:s}=e,[i,u]=Da({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=Zp(i);d.current=i;let c=l.total??"accurate",C=Tl(T=>{f(void 0),t.search(l.resourceType,jp({...l,total:c,fields:void 0}),T).then(Q=>{u({...d.current,searchResponse:Q}),s&&s(new ka(Q))}).catch(Q=>{u({...d.current,searchResponse:void 0}),f(Q)})},[t,l,c,s]),P=Tl(()=>{u({...d.current,searchResponse:void 0}),C({cache:"reload"})},[C]);kl(()=>{C()},[C]);function B(T,Q){T.stopPropagation();let ne=T.target.checked,ce={...d.current.selected};ne?ce[Q]=!0:delete ce[Q],u({...d.current,selected:ce})}function g(T){T.stopPropagation();let _=T.target.checked,ne={},ce=d.current.searchResponse;_&&ce?.entry&&ce.entry.forEach(qo=>{qo.resource?.id&&(ne[qo.resource.id]=!0)}),u({...d.current,selected:ne})}function D(){let T=d.current;if(!T.searchResponse?.entry||T.searchResponse.entry.length===0)return!1;for(let Q of T.searchResponse.entry)if(Q.resource?.id&&!T.selected[Q.resource.id])return!1;return!0}function p(T){e.onChange&&e.onChange(new Ta(T))}function h(T,Q){if(yt(T.target)||T.button===2)return;H(T);let _=T.button===1||T.ctrlKey||T.metaKey;!_&&e.onClick&&e.onClick(new so(Q,T)),_&&e.onAuxClick&&e.onAuxClick(new so(Q,T))}function y(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(kl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&_p.types[e.search.resourceType]))return b.createElement($t,{style:{width:"100%",height:"100%"}},b.createElement(Xp,null));let ge=e.checkboxesEnabled,he=Pl(l),de=l.resourceType,Y=i.searchResponse,v=Y?.entry?.map(T=>T.resource),N="subtle",ke="gray",ye=16,eo=window.innerWidth<768;return b.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&b.createElement(Kt,{position:"apart",mb:"xl"},b.createElement(Kt,{spacing:2},b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Sr,{size:ye}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Ar,{size:ye}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Br,{size:ye}),onClick:e.onNew},"New..."),!eo&&y()&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(qr,{size:ye}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!eo&&e.onDelete&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement($o,{size:ye}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!eo&&e.onBulk&&b.createElement(Lo,{compact:!0,variant:N,color:ke,leftIcon:b.createElement(Ir,{size:ye}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),b.createElement(Kt,{spacing:2},Y&&b.createElement(Pa,{size:"xs",color:"dimmed"},ax(l,Y.total),"-",nx(l,Y.total)," of"," ",`${c==="estimate"?"~":""}${Y.total?.toLocaleString()}`),b.createElement(Qp,{title:"Refresh",onClick:P},b.createElement(Rr,{size:"1.125rem"})))),b.createElement($p,{className:o.table},b.createElement("thead",null,b.createElement("tr",null,ge&&b.createElement("th",null,b.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:D(),onChange:T=>g(T)})),he.map(T=>b.createElement("th",{key:T.name},b.createElement(Dl,{shadow:"md",width:240,position:"bottom-end"},b.createElement(Dl.Target,null,b.createElement(Kp,{className:o.control},b.createElement(Kt,{position:"apart",noWrap:!0},b.createElement(Pa,{weight:500,size:"sm"},ve(T.name)),b.createElement($t,{className:o.icon},b.createElement(mr,{size:14,stroke:1.5}))))),b.createElement(bl,{search:e.search,searchParams:T.searchParams,onPrompt:(Q,_)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:Q,filterDialogFilter:_})},onChange:Q=>{p(Q)}}))))),!e.hideFilters&&b.createElement("tr",null,ge&&b.createElement("th",null),he.map(T=>b.createElement("th",{key:T.name},T.searchParams&&b.createElement(ox,{resourceType:de,searchParams:T.searchParams,filters:e.search.filters}))))),b.createElement("tbody",null,v?.map(T=>T&&b.createElement("tr",{key:T.id,className:o.tr,"data-testid":"search-control-row",onClick:Q=>h(Q,T),onAuxClick:Q=>h(Q,T)},ge&&b.createElement("td",null,b.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${T.id}`,checked:!!i.selected[T.id],onChange:Q=>B(Q,T.id)})),he.map(Q=>b.createElement("td",{key:Q.name},ml(T,Q))))))),v?.length===0&&b.createElement(Je,null,b.createElement($t,{style:{height:150}},b.createElement(Pa,{size:"xl",color:"dimmed"},"No results"))),Y?.total!==void 0&&Y.total>0&&b.createElement($t,{m:"md",p:"md"},b.createElement(Jp,{value:tx(l),total:rx(l,Y.total),onChange:T=>p(il(l,T)),getControlProps:T=>{switch(T){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&b.createElement("div",{"data-testid":"search-error"},b.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),b.createElement(xl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:T=>{p(T),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),b.createElement(vl,{search:e.search,visible:d.current.filterEditorVisible,onOk:T=>{p(T),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),b.createElement(Yf,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),b.createElement(Sl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ve(i.filterDialogSearchParam.code):"",resourceType:de,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:T=>{p(Oo(e.search,T.code,T.operator,T.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var xF=b.memo(ex);function ox(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?b.createElement("span",null,"no filters"):b.createElement(b.Fragment,null,o.map(t=>b.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},nt(t.operator),"\xA0",b.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function tx(e){return Math.floor((e.offset??0)/(e.count??Ba))+1}function rx(e,o){let t=e.count??Ba;return Math.ceil(o/t)}function ax(e,o){return Math.min(o,(e.offset??0)+1)}function nx(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ba))}function ux(e){let o=S(),[t,r]=jt(),[a,n]=jt(),{query:f,fields:l}=e,[s,i]=jt(),[u,d]=jt({}),c=Al();c.current=s;let C=Al({});C.current=u,Bl(()=>{n(void 0),o.graphql(f).then(i).catch(y=>n(ix(y)))},[o,f]);function P(y,w){y.stopPropagation();let he=y.target.checked,de={...C.current};he?de[w]=!0:delete de[w],d(de)}function B(y){y.stopPropagation();let ge=y.target.checked,he={},de=c.current?.data.ResourceList;ge&&de&&de.forEach(Y=>{Y.id&&(he[Y.id]=!0)}),d(he)}function g(){let y=c.current?.data.ResourceList;if(!y||y.length===0)return!1;for(let w of y)if(w.id&&!C.current[w.id])return!1;return!0}function D(y,w){yt(y.target)||(H(y),y.button!==1&&e.onClick&&e.onClick(new so(w,y)),y.button===1&&e.onAuxClick&&e.onAuxClick(new so(w,y)))}if(Bl(()=>{o.requestSchema(e.resourceType).then(y=>{r({...y})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return te.createElement(lx,null);let h=e.checkboxesEnabled;return te.createElement("div",{onContextMenu:y=>H(y),"data-testid":"search-control"},te.createElement(sx,null,te.createElement("thead",null,te.createElement("tr",null,h&&te.createElement("th",null,te.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:g(),onChange:y=>B(y)})),l.map(y=>te.createElement("th",{key:y.name},y.name)))),te.createElement("tbody",null,s?.data.ResourceList.map(y=>y&&te.createElement("tr",{key:y.id,"data-testid":"search-control-row",onClick:w=>D(w,y),onAuxClick:w=>D(w,y)},h&&te.createElement("td",null,te.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${y.id}`,checked:!!u[y.id],onChange:w=>P(w,y.id)})),l.map(w=>te.createElement("td",{key:w.name},te.createElement(_f,{propertyType:w.propertyType,path:w.fhirPath,resource:y}))))))),s?.data.ResourceList.length===0&&te.createElement("div",{"data-testid":"empty-search"},"No results"),a&&te.createElement("div",{"data-testid":"search-error"},te.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&te.createElement(fx,{onClick:()=>e.onBulk(Object.keys(C.current))},"Bulk..."))}var TF=te.memo(ux);import io from"react";function _e(e){return io.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},io.createElement("title",null,"Medplum Logo"),io.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),io.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),io.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),io.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),io.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as dx}from"@mantine/core";import Aa from"react";function Ro(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Aa.createElement(dx,{icon:Aa.createElement(to,{size:16}),color:"red"},o.map(t=>Aa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as _t}from"@medplum/core";import cx,{useCallback as mx}from"react";function VF(e){let o=mx((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return cx.createElement(je,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:_t(t),sender:_t(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:_t(t),operator:_t(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Ml,Button as px,createStyles as xx,NativeSelect as Ix,Stack as gx,TextInput as Ma}from"@mantine/core";import{getReferenceString as hx}from"@medplum/core";import q,{useEffect as Fl,useRef as wl,useState as it}from"react";var Ol=xx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function tM(e){let o=S(),t=W(e.value),[r,a]=it(void 0),[n,f]=it(),[l,s]=it(),[i,u]=it();function d(){s(void 0)}function c(){f(void 0)}let C=wl();if(C.current=i,Fl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Fl(()=>(u(Px(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function P(B,g){u({...C.current,[B]:g})}return q.createElement("div",null,q.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Ma,{label:"Plan Title",defaultValue:i.title,onChange:B=>P("title",B.currentTarget.value)}),q.createElement(El,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:B=>P("action",B)}),q.createElement(px,{type:"submit"},"Save")))}function El(e){let{classes:o}=Ol(),t=wl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(yx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(Ml,{href:"#",onClick:f=>{H(f),a({id:Rl()})}},"Add action")))}function yx(e){let{classes:o,cx:t}=Ol(),{action:r}=e,a=bx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?q.createElement(vx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(Cx,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(Ml,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var wa={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Cx(e){let{action:o,actionType:t}=e,[r,a]=Ll(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(ao,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(me,{property:wa,propertyType:a,value:r})))}function vx(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(gx,{spacing:"xl"},q.createElement(Ma,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Ma,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(Ix,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(El,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(Zt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(Zt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(Zt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(Zt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Pe,{title:"Timing",description:"When the action should take place."},q.createElement(Sx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Zt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Lt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:hx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Sx(e){let o=e.action,t="timing",[r,a]=Ll(o);return q.createElement(Ne,{property:wa,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,wa,n))}})}function bx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Ll(e){return be({type:"PlanDefinitionAction",value:e},"timing")}var Fa=1;function Rl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Fa=Math.max(Fa,o+1))}return e}return"id-"+Fa++}function Px(e){return{...e,action:Nl(e.action)}}function Nl(e){if(e)return e.map(o=>({...o,id:Rl(o.id),action:Nl(o.action)}))}import{Anchor as Ve,Button as Vx,createStyles as qx,NativeSelect as Gx,Textarea as Ux,TextInput as Ra,Title as zx}from"@mantine/core";import{globalSchema as Qx,isResource as Wx}from"@medplum/core";import A,{useEffect as zl,useRef as Xx,useState as er}from"react";import{evalFhirPathTyped as Dx,getTypedPropertyValue as Hl}from"@medplum/core";var Oa=(D=>(D.group="group",D.display="display",D.question="question",D.boolean="boolean",D.decimal="decimal",D.integer="integer",D.date="date",D.dateTime="dateTime",D.time="time",D.string="string",D.text="text",D.url="url",D.choice="choice",D.openChoice="open-choice",D.attachment="attachment",D.reference="reference",D.quantity="quantity",D))(Oa||{});function Vl(e){return e.type==="choice"||e.type==="open-choice"}function ql(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){if(r.operator==="exists"&&!r.answerBoolean&&!o[r.question]?.length){if(t==="any")return!0;continue}let{anyMatch:a,allMatch:n}=kx(r,o,t);if(t==="any"&&a)return!0;if(t==="all"&&!n)return!1}return t!=="any"}function Tx(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Dx(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function kx(e,o,t){let r=o[e.question]||[],a=Hl({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let l of r){let s=Hl({type:"QuestionnaireResponseItemAnswer",value:l},"value[x]"),{operator:i}=e;if(Tx(s,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}import{Checkbox as Bx,MultiSelect as Ax,NativeSelect as Fx,Radio as Gl,TextInput as ut,Textarea as Mx}from"@mantine/core";import{capitalize as La,getTypedPropertyValue as uo,globalSchema as wx,stringify as Ul}from"@medplum/core";import re from"react";function Yt(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.responseItems?.filter(c=>c.linkId===o.linkId)??[],d;Array.isArray(l)?d=l:d=Lx(u[0]?.answer??[],i,l),e.onChange({id:u[0].id,linkId:o.linkId,text:o.text,answer:d})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0;switch(a){case"boolean":return re.createElement(At,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},re.createElement(Bx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return re.createElement(ut,{type:"number",step:"any",id:n,name:n,defaultValue:f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return re.createElement(ut,{type:"number",step:1,id:n,name:n,defaultValue:f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return re.createElement(ut,{type:"date",id:n,name:n,defaultValue:f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return re.createElement(Ae,{name:n,defaultValue:f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return re.createElement(ut,{type:"time",id:n,name:n,defaultValue:f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return re.createElement(ut,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return re.createElement(Mx,{id:n,name:n,defaultValue:f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return re.createElement(St,{name:n,defaultValue:f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return re.createElement(Bo,{name:n,targetTypes:Rx(o),defaultValue:f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return re.createElement(De,{name:n,defaultValue:f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return Nx(o)?re.createElement(Ox,{name:n,item:o,initial:f,answers:e.answers,onChangeAnswer:l=>r(l,t)}):re.createElement(Ex,{name:n,item:o,initial:f,answers:e.answers,onChangeAnswer:l=>r(l,t)});default:return null}}function Ox(e){let{name:o,item:t,initial:r}=e,a=uo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=uo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Ea(l))}if(t.repeats){let{propertyName:f,data:l}=Hx(e.item);return re.createElement(Ax,{data:l,placeholder:"Select items",searchable:!0,defaultValue:[Ea(a)??""],onChange:s=>{let i=s.map(u=>{let d=t.answerOption?.find(C=>C[f]===u),c=uo({type:"QuestionnaireItemAnswerOption",value:d},"value");return{[f]:c.value}});e.onChangeAnswer(i)}})}return re.createElement(Fx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=uo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+La(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:Ea(a),data:n})}function Ex(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=wx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=uo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let i=0;i<t.answerOption.length;i++){let u=t.answerOption[i],d=`${o}-option-${i}`,c=uo({type:"QuestionnaireItemAnswerOption",value:u},"value");f&&Ul(c)===Ul(f)&&(s=d),l.push([d,c])}return re.createElement(Gl.Group,{name:o,defaultValue:s,onChange:i=>{let u=l.find(d=>d[0]===i);if(u){let d=u[1],c="value"+La(d.type);a({[c]:d.value})}}},l.map(([i,u])=>re.createElement(Gl,{key:i,id:i,value:i,label:re.createElement(me,{property:n,propertyType:u.type,value:u.value})})))}function Lx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function Rx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function Nx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Hx(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=uo({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+La(t.type),a=(e.answerOption??[]).map(n=>({value:n[r],label:r==="valueCoding"?n.valueCoding?.display:n[r]}));return{propertyName:r,data:a}}function Ea(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}var Jx=qx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function wM(e){let o=S(),t=W(e.questionnaire),[r,a]=er(),[n,f]=er(),[l,s]=er(),[i,u]=er();function d(){u(void 0)}function c(){s(void 0)}return zl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),zl(()=>(f(jx(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:A.createElement("div",null,A.createElement(J,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},A.createElement(Ql,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),A.createElement(Vx,{type:"submit"},"Save")))}function Ql(e){let{classes:o,cx:t}=Jx(),r=e.item,a=e.item,n=Wx(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Xx();u.current=e.item;function d(h){H(h),e.setSelectedKey(e.item.id)}function c(h){H(h),e.setHoverKey(e.item.id)}function C(h){let y=u.current;e.onChange({...y,item:y.item?.map(w=>w.id===h.id?h:w)})}function P(h){e.onChange({...e.item,item:[...e.item.item??[],h]})}function B(h){e.onChange({...e.item,item:e.item.item?.filter(y=>y!==h)})}function g(h,y){e.onChange({...u.current,[h]:y})}function D(h){e.onChange({...e.item,item:e.item.item?.map(y=>y===h?{...y,repeats:!y.repeats}:y)})}let p=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return A.createElement("div",{"data-testid":a.linkId,className:p,onClick:d,onMouseOver:c},A.createElement("div",{className:o.questionBody},s?A.createElement(A.Fragment,null,n&&A.createElement(Ra,{size:"xl",defaultValue:r.title,onChange:h=>g("title",h.currentTarget.value)}),!n&&A.createElement(Ux,{autosize:!0,minRows:2,defaultValue:a.text,onChange:h=>g("text",h.currentTarget.value)}),a.type==="reference"&&A.createElement(Kx,{item:a,onChange:h=>g("extension",h)}),Vl(a)&&A.createElement($x,{options:a.answerOption,onChange:h=>g("answerOption",h)})):A.createElement(A.Fragment,null,r.title&&A.createElement(zx,null,r.title),a.text&&A.createElement("div",null,a.text),!f&&A.createElement(Yt,{item:a,index:0,answers:{},onChange:()=>{}}))),a.item?.map(h=>A.createElement("div",{key:h.id},A.createElement(Ql,{item:h,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:C,onRemove:()=>B(h),onRepeatable:D}))),!f&&A.createElement("div",{className:o.topActions},s?A.createElement(A.Fragment,null,A.createElement(Ra,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:h=>g("linkId",h.currentTarget.value)}),!f&&A.createElement(Gx,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:h=>g("type",h.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):A.createElement("div",null,l)),A.createElement("div",{className:o.bottomActions},f&&A.createElement(A.Fragment,null,A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),P({id:Ze(),linkId:Va("q"),type:"string",text:"Question"})}},"Add item"),A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),P({id:Ze(),linkId:Va("g"),type:"group",text:"Group"})}},"Add group")),n&&A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),P(Zx())}},"Add Page"),s&&!n&&A.createElement(A.Fragment,null,A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),A.createElement(Ve,{href:"#",onClick:h=>{h.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function $x(e){let o=Qx.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.options??[];return A.createElement("div",null,t.map(r=>{let[a,n]=be({type:"QuestionnaireItemAnswerOption",value:r},"value");return A.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},A.createElement("div",null,A.createElement(Ne,{key:r.id,name:"value[x]",property:o,defaultPropertyType:n,defaultValue:a,onChange:(f,l)=>{let s=[...t],i=s.findIndex(u=>u.id===r.id);s[i]={id:r.id,[l]:f},e.onChange(s)}})),A.createElement("div",null,A.createElement(Ve,{href:"#",onClick:f=>{H(f),e.onChange(t.filter(l=>l.id!==r.id))}},"Remove")))}),A.createElement(Ve,{href:"#",onClick:r=>{H(r),e.onChange([...t,{id:Ze()}])}},"Add choice"))}function Kx(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return A.createElement(A.Fragment,null,t.map(r=>A.createElement("div",{key:r.id},A.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},A.createElement("div",null,A.createElement(Ra,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),A.createElement("div",null,A.createElement(Ve,{href:"#",onClick:a=>{H(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),A.createElement(Ve,{href:"#",onClick:r=>{H(r),e.onChange([...o,{id:Ze(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Na=1,Ha=1;function Va(e){return e+Na++}function Ze(){return"id-"+Ha++}function jx(e){return{...e,id:e.id||Ze(),item:Wl(e.item)}}function Wl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Ha=Math.max(Ha,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Na=Math.max(Na,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Ze(),item:Wl(o.item),answerOption:_x(o.answerOption)}))}function _x(e){if(e)return e.map(o=>({...o,id:o.id||Ze()}))}function Zx(){return{id:Ze(),linkId:Va("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}import{Anchor as jl,Button as No,Group as Yx,Stack as eI,Stepper as Xl,Title as oI}from"@mantine/core";import{createReference as tI,getAllQuestionnaireAnswers as rI,getExtension as aI,getReferenceString as _l}from"@medplum/core";import O,{useEffect as Jl,useState as co}from"react";function Zl(e){let o=S(),t=o.getProfile(),[r,a]=co(),n=W(e.questionnaire),[f,l]=co(),[s,i]=co({}),[u,d]=co(0),c=uI(n?.item??[]),C=()=>d(g=>g>=c?g:g+1),P=()=>d(g=>g<=0?g:g-1);Jl(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),Jl(()=>{l(n?fI(n):void 0)},[n]);function B(g){let D={resourceType:"QuestionnaireResponse",item:g};l(D),i(rI(D))}return!r||!n?null:O.createElement(J,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:_l(n),subject:e.subject,source:tI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&O.createElement(oI,null,n.title),n.item&&O.createElement(Yl,{items:n.item??[],answers:s,onChange:B,renderPages:c>1,activePage:u}),O.createElement(Yx,{position:"right",mt:"xl"},O.createElement(nI,{activePage:u,numberOfPages:c,nextStep:C,prevStep:P,submitButtonText:e.submitButtonText})))}function Yl(e){let[o,t]=co(qa(e.items));function r(n,f){let l=o.some(i=>i.id===n),s;l?s=o.map(i=>i.id===n?f:i):s=[...o,f],t(s),e.onChange(s)}let a=e.items.map((n,f)=>e.renderPages?O.createElement(Xl.Step,{label:n.text,key:n.linkId},O.createElement($l,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r})):O.createElement($l,{key:`${n.linkId}-${f}`,item:n,index:f,answers:e.answers,responseItems:o,setResponseItem:r}));return e.renderPages?O.createElement(Xl,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):O.createElement(eI,null,a)}function $l(e){return ql(e.item,e.answers)?e.item.type==="display"?O.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?O.createElement(Kl,{key:e.item.linkId,item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)}):O.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},O.createElement(Kl,{item:e.item,answers:e.answers,responseItems:e.responseItems,onChange:o=>e.setResponseItem(o.id,o)})):null}function Kl(e){let o=e.item;function t(r,a){let n=a??0,f=e.responseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:mI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?O.createElement(dI,{key:e.item.linkId,text:o.text??"",item:o??[],answers:e.answers,onChange:t}):O.createElement(cI,{item:e.item,key:e.item.linkId},({index:r})=>O.createElement(Yt,{...e,index:r}))}function nI(e){return e.activePage===0&&e.numberOfPages<=0?O.createElement(No,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?O.createElement(O.Fragment,null,O.createElement(No,{onClick:e.prevStep},"Back"),O.createElement(No,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?O.createElement(O.Fragment,null,O.createElement(No,{onClick:e.nextStep},"Next")):O.createElement(O.Fragment,null,O.createElement(No,{onClick:e.prevStep},"Back"),O.createElement(No,{onClick:e.nextStep},"Next"))}function fI(e){return{resourceType:"QuestionnaireResponse",questionnaire:_l(e),item:qa(e.item)}}function qa(e){return e?.map(lI)??[]}function lI(e){return{id:es(),linkId:e.linkId,text:e.text,item:qa(e.item),answer:e.initial?.map(iI)??[]}}var sI=1;function es(){return"id-"+sI++}function iI(e){return{...e}}function uI(e){return e.filter(t=>aI(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function dI(e){let[o,t]=co(1),r=e.item;return O.createElement(O.Fragment,null,[...Array(o)].map((a,n)=>O.createElement("div",{key:n},O.createElement("h3",null,e.text),O.createElement(Yl,{items:r.item??[],answers:e.answers,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&O.createElement(jl,{onClick:()=>t(a=>a+1)},"Add Group"))}function cI(e){let[o,t]=co(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return O.createElement(O.Fragment,null,[...Array(o)].map((a,n)=>O.createElement(O.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&O.createElement(jl,{onClick:()=>t(a=>a+1)},"Add Item"))}function mI(e,o){return e.length===0||e.length<o+1?es():e[o].id}import{ActionIcon as or,Button as pI,createStyles as xI,Divider as II,Group as dt,NativeSelect as Ga,Stack as tr,Text as gI,TextInput as hI}from"@mantine/core";import{formatRange as os,getCodeBySystem as yI}from"@medplum/core";import z,{useEffect as CI,useState as Ua}from"react";var vI=xI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),SI=["gender","age","gestationalAge","context","appliesTo","category"],bI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function ew(e){e=Object.assign(bI,e);let o=e.definition,[t,r]=Ua([]),[a,n]=Ua(1),[f,l]=Ua(1);return CI(()=>{let P=TI(o,l);r(kI(P.qualifiedInterval||[],n))},[o]),z.createElement(J,{testid:"reference-range-editor",onSubmit:s},z.createElement(tr,null,t.map(P=>z.createElement(PI,{unit:AI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:C,onRemoveGroup:u,key:`group-${P.id}`,intervalGroup:P}))),z.createElement(or,{title:"Add Group",size:"sm",onClick:P=>{H(P),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(B=>B+1)}},z.createElement(po,null)),z.createElement(dt,{position:"right"},z.createElement(pI,{type:"submit"},"Save")));function s(){let P=t.flatMap(B=>B.intervals).filter(B=>!FI(B));e.onSubmit({...o,qualifiedInterval:P})}function i(P){r(B=>[...B,P])}function u(P){r(B=>B.filter(g=>g.id!==P.id))}function d(P,B){r(g=>{g=[...g];let D=g.find(h=>h.id===P),p=D?.intervals.findIndex(h=>h.id===B.id);return p!==void 0&&D?.intervals[p]&&(D.intervals[p]=B),g})}function c(P,B){B.id===void 0&&(B.id=`id-${f}`,l(g=>g+1)),r(g=>{g=[...g];let D=g.findIndex(p=>p.id===P);if(D!==-1){let p={...g[D]};B={...B,...p.filters},p.intervals=[...p.intervals,B],g[D]=p}return g})}function C(P,B){r(g=>{g=[...g];let D=g.find(p=>p.id===P);return D&&(D.intervals=D.intervals.filter(p=>p.id!==B.id)),g})}}function PI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=vI();return z.createElement(Je,{"data-testid":o.id,className:r.section},z.createElement(tr,{spacing:"lg"},z.createElement(dt,{position:"right"},z.createElement(or,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(ze,null))),z.createElement(DI,{intervalGroup:o,onChange:e.onChange}),z.createElement(II,null),o.intervals.map(a=>z.createElement(tr,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(dt,null,z.createElement(hI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(or,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(ze,null))),z.createElement(tt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(or,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(po,null))))}function DI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(tr,{style:{maxWidth:"50%"}},z.createElement(dt,null,z.createElement(Ga,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(dt,{spacing:"xs"},z.createElement(gI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(tt,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Ga,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(Ga,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function TI(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function kI(e,o){let t=1,r={};for(let a of e){let n=BI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(SI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function BI(e){return[`gender=${e.gender}`,`age=${os(e.age)}`,`gestationalAge=${os(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function AI(e){return e&&(yI(e,"http://unitsofmeasure.org")||e.text)}function FI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as ts,Grid as rr,Text as MI}from"@mantine/core";import{formatDateTime as wI,getReferenceString as OI}from"@medplum/core";import Ie,{useEffect as EI,useState as rs}from"react";function uw(e){let o=S(),t=W(e.value),[r,a]=rs(!1),[n,f]=rs();if(EI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return Ie.createElement(rr,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,C=d?.output?.[0]?.valueReference;return Ie.createElement(Ie.Fragment,{key:`action-${u}`},Ie.createElement(rr.Col,{span:1,p:"md"},d?.status==="completed"?Ie.createElement(Cr,null):Ie.createElement(Hr,{color:"gray"})),Ie.createElement(rr.Col,{span:9,p:"xs"},Ie.createElement(MI,{weight:500},i.title),i.description&&Ie.createElement("div",null,i.description),Ie.createElement("div",null,"Last edited by\xA0",Ie.createElement(Ee,{value:d?.meta?.author}),"\xA0on\xA0",wI(d?.meta?.lastUpdated)),Ie.createElement("div",null,"Status: ",Ie.createElement(Ht,{status:d?.status||"unknown"}))),Ie.createElement(rr.Col,{span:2,p:"md"},c&&!C&&Ie.createElement(ts,{onClick:()=>e.onStart(d,c)},"Start"),c&&C&&Ie.createElement(ts,{onClick:()=>e.onEdit(d,c,C)},"Edit")))}));function l(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===OI(u.resource))return u.resource}}import{createStyles as GI}from"@mantine/core";import Se,{useEffect as UI,useState as zI}from"react";import{stringify as HI}from"@medplum/core";function ar(e,o){let t=LI(e,o);return RI(t,e,o)}function LI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,d=u+1,c=u-1,C=l[d],P=l[c],B,g=0;i===-s||i!==s&&P.i<C.i?(g=C.i,B=C):(g=P.i+1,B=P),l[c]=void 0;let D=g-i,p={i:g,j:D,prev:NI(B),snake:!1};for(;g<t&&D<r&&e[g]===o[D];)g++,D++;if(g>p.i&&(p={i:g,j:D,prev:p,snake:!0}),l[u]=p,g>=t&&D>=r)return l[u]}l[f+s-1]=void 0}}function RI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function NI(e){return e&&!e.snake&&e.prev?e.prev:e}function as(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:HI(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return VI(t,o),qI(t),t}function VI(e,o){for(let t=1;t<o.length;t++){let r=ar(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function qI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var QI=GI(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function Sw(e){let{classes:o}=QI(),t=S(),[r,a]=zI(e.history);if(UI(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return Se.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=as(r);return Se.createElement("div",{className:o.container},Se.createElement("table",{className:o.root},Se.createElement("tbody",null,f.map((l,s)=>Se.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&Se.createElement(Se.Fragment,null,Se.createElement("td",{className:o.author,rowSpan:l.span},Se.createElement($e,{value:l.meta.author,link:!0})),Se.createElement("td",{className:o.dateTime,rowSpan:l.span},Se.createElement(fe,{to:WI(n,l.meta.versionId)},XI(l.meta.lastUpdated)))),Se.createElement("td",{className:o.lineNumber},s+1),Se.createElement("td",{className:o.line},Se.createElement("pre",{className:o.pre},l.value)))))))}function WI(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function XI(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Ho(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Ho(r,"month");let a=Math.floor(o/86400);if(a>0)return Ho(a,"day");let n=Math.floor(o/3600);if(n>0)return Ho(n,"hour");let f=Math.floor(o/60);return f>0?Ho(f,"minute"):Ho(o,"second")}function Ho(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as JI}from"@mantine/core";import{stringify as ns}from"@medplum/core";import Ye from"react";var $I=JI(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Aw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=ns(o,!0).match(/[^\r\n]+/g),a=ns(t,!0).match(/[^\r\n]+/g),n=ar(r,a);return Ye.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>Ye.createElement(KI,{key:"delta"+l,delta:f})))}function KI(e){let{classes:o}=$I();return Ye.createElement(Ye.Fragment,null,"...",Ye.createElement("br",null),e.delta.original.lines.length>0&&Ye.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
66
|
-
`)),e.delta.revised.lines.length>0&&
|
|
67
|
-
`)),"...",Ye.createElement("br",null))}import{Table as jI}from"@mantine/core";import{formatDateTime as _I,normalizeErrorString as ZI}from"@medplum/core";import ue,{useEffect as YI,useState as eg}from"react";function Nw(e){let o=S(),[t,r]=eg(e.history);return YI(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ue.createElement(jI,{withBorder:!0,withColumnBorders:!0},ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Author"),ue.createElement("th",null,"Date"),ue.createElement("th",null,"Version"))),ue.createElement("tbody",null,t.entry?.map((a,n)=>ue.createElement(og,{key:"entry-"+n,entry:a})))):ue.createElement("div",null,"Loading...")}function og(e){let{response:o,resource:t}=e.entry;return t?ue.createElement("tr",null,ue.createElement("td",null,ue.createElement($e,{value:t.meta?.author,link:!0})),ue.createElement("td",null,_I(t.meta?.lastUpdated)),ue.createElement("td",null,ue.createElement(fe,{to:tg(t)},t.meta?.versionId))):ue.createElement("tr",null,ue.createElement("td",{colSpan:3},ZI(o?.outcome)))}function tg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as rg,createStyles as ag,Stack as ng,Text as fg}from"@mantine/core";import{getReferenceString as lg}from"@medplum/core";import Z,{useEffect as sg,useRef as ig,useState as ct}from"react";var ug=ag(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function $w(e){let{classes:o}=ug(),t=S(),r=W(e.schedule),a=W(e.questionnaire),[n,f]=ct(),l=ig();l.current=n;let[s,i]=ct(la()),[u,d]=ct(),[c,C]=ct(),[P,B]=ct();if(sg(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",lg(r)],["start","gt"+dg(s)],["start","lt"+cg(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let g=r.actor?.[0];return Z.createElement("div",{className:o.container,"data-testid":"scheduler"},Z.createElement("div",{className:o.info},g&&Z.createElement(Ce,{value:g,size:"xl"}),g&&Z.createElement(fg,{size:"xl",weight:500},Z.createElement(Ee,{value:g})),Z.createElement("p",null,"1 hour"),u&&Z.createElement("p",null,u.toLocaleDateString()),c&&Z.createElement("p",null,fs(new Date(c.start)))),Z.createElement("div",{className:o.selection},!u&&Z.createElement("div",null,Z.createElement("h3",null,"Select date"),Z.createElement(Af,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&Z.createElement("div",null,Z.createElement("h3",null,"Select time"),Z.createElement(ng,null,n.map(D=>{let p=new Date(D.start);return p.getTime()>u.getTime()&&p.getTime()<u.getTime()+24*3600*1e3&&Z.createElement("div",{key:D.id},Z.createElement(rg,{variant:"outline",style:{width:150},onClick:()=>C(D)},fs(p)))}))),u&&c&&!P&&Z.createElement(Zl,{questionnaire:a,submitButtonText:"Next",onSubmit:B}),u&&c&&P&&Z.createElement("div",null,Z.createElement("h3",null,"You're all set!"),Z.createElement("p",null,"Check your email for a calendar invite."))))}function dg(e){return ls(e.getTime())}function cg(e){return ls(e.getTime()+31*24*60*60*1e3)}function ls(e){return new Date(Math.max(Date.now(),e)).toISOString()}function fs(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as nr}from"@medplum/core";import mg from"react";function oO(e){return mg.createElement(je,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[nr(o)],subject:o.subject,sender:nr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[nr(o)],subject:o.subject,operator:nr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Eg}from"@medplum/core";import dr,{useEffect as Lg,useState as xs}from"react";import{Anchor as ss,Button as pg,Center as xg,Group as Ig,Stack as gg,Text as hg,TextInput as yg,Title as Cg}from"@mantine/core";import{normalizeOperationOutcome as vg}from"@medplum/core";import Fe,{useState as Sg}from"react";function fr(e){let o=S(),[t,r]=Sg();return Fe.createElement(J,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(vg(n))}}},Fe.createElement(xg,{sx:{flexDirection:"column"}},Fe.createElement(_e,{size:32}),Fe.createElement(Cg,null,"Create project")),Fe.createElement(gg,{spacing:"xl"},Fe.createElement(yg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:pe(t,"firstName")}),Fe.createElement(hg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Fe.createElement(ss,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Fe.createElement(ss,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Fe.createElement(Ig,{position:"right",mt:"xl",noWrap:!0},Fe.createElement(pg,{type:"submit"},"Create project")))}import{Anchor as ur,Button as Tg,Center as kg,Checkbox as Bg,Divider as Ag,Group as ds,PasswordInput as Fg,Stack as Mg,Text as cs,TextInput as Qa}from"@mantine/core";import{normalizeOperationOutcome as ms}from"@medplum/core";import j,{useEffect as wg,useState as Og}from"react";import bg,{useEffect as Pg,useRef as Dg,useState as za}from"react";function lr(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function sr(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=Dg(null),[n,f]=za(typeof google<"u"),[l,s]=za(!1),[i,u]=za(!1);return Pg(()=>{if(typeof google>"u"){lr("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?bg.createElement("div",{ref:a}):null}function ir(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function is(e){typeof grecaptcha>"u"&&lr("https://www.google.com/recaptcha/api.js?render="+e)}function us(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function ps(e){let o=ir(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=Og(),f=Ft(a,void 0);return wg(()=>{t&&is(t)},[t]),j.createElement(J,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await us(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(ms(s))}}},j.createElement(kg,{sx:{flexDirection:"column"}},e.children),j.createElement(Ro,{issues:f}),o&&j.createElement(j.Fragment,null,j.createElement(ds,{position:"center",p:"xl",style:{height:70}},j.createElement(sr,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(ms(s))}}})),j.createElement(Ag,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Mg,{spacing:"xl"},j.createElement(Qa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:pe(a,"firstName")}),j.createElement(Qa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:pe(a,"lastName")}),j.createElement(Qa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:pe(a,"email")}),j.createElement(Fg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:pe(a,"password")}),j.createElement(cs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",j.createElement(ur,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ur,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),j.createElement(cs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement(ur,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",j.createElement(ur,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),j.createElement(ds,{position:"apart",mt:"xl",noWrap:!0},j.createElement(Bg,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(Tg,{type:"submit"},"Create account")))}function HO(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=S(),[s,i]=xs(void 0),[u,d]=xs();Lg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(C=>l.processCode(C.code)).then(()=>f()).catch(C=>d(Eg(C)))},[l,o,t,s,f]);function c(C){C.code?l.processCode(C.code).then(()=>f()).catch(console.log):C.login&&i(C.login)}return dr.createElement(Gt,{width:450},u&&dr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&dr.createElement(ps,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&dr.createElement(fr,{login:s,handleAuthResponse:c}))}import{showNotification as ks}from"@mantine/notifications";import{normalizeErrorString as Bs}from"@medplum/core";import mo,{useCallback as Xa,useEffect as dh,useState as Ja}from"react";import{Anchor as Is,Button as gs,Center as hs,Checkbox as Rg,Divider as Ng,Group as Wa,PasswordInput as Hg,Stack as Vg,TextInput as qg}from"@mantine/core";import{normalizeOperationOutcome as Gg}from"@medplum/core";import K,{useCallback as cr,useState as ys}from"react";function Cs(e){let[o,t]=ys();return o?K.createElement(zg,{email:o,...e}):K.createElement(Ug,{setEmail:t,...e})}function Ug(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=S(),s=!e.disableGoogleAuth&&ir(e.googleClientId),i=cr(async c=>{if(!c.authorizeUrl)return!1;let C=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),P=new URL(c.authorizeUrl);return P.searchParams.set("state",C),window.location.assign(P.toString()),!0},[l,f]),u=cr(async c=>{let C=await l.post("auth/method",{email:c.email});await i(C)||o(c.email)},[l,i,o]),d=cr(async c=>{let C=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(C)||r(C)},[l,f,i,r]);return K.createElement(J,{style:{maxWidth:400},onSubmit:u},K.createElement(hs,{sx:{flexDirection:"column"}},a),s&&K.createElement(K.Fragment,null,K.createElement(Wa,{position:"center",p:"xl",style:{height:70}},K.createElement(sr,{googleClientId:s,handleGoogleCredential:d})),!n&&K.createElement(Ng,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement(qg,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(Wa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(Is,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(gs,{type:"submit"},"Next")))}function zg(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,l]=ys(),s=Ft(f,void 0),i=cr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(Gg(d)))},[n,a,t]);return K.createElement(J,{style:{maxWidth:400},onSubmit:i},K.createElement(hs,{sx:{flexDirection:"column"}},r),K.createElement(Ro,{issues:s}),K.createElement(Vg,{spacing:"xl"},K.createElement(Hg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:pe(f,"password")})),K.createElement(Wa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(Is,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(Rg,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(gs,{type:"submit"},"Sign in")))}import{Avatar as Qg,Center as Wg,Group as Xg,Stack as Jg,Text as vs,Title as $g,UnstyledButton as Kg}from"@mantine/core";import{normalizeOperationOutcome as jg}from"@medplum/core";import Me,{useState as _g}from"react";function Ss(e){let o=S(),[t,r]=_g();return Me.createElement(Jg,null,Me.createElement(Wg,{sx:{flexDirection:"column"}},Me.createElement(_e,{size:32}),Me.createElement($g,{order:3},"Choose profile")),Me.createElement(Ro,{outcome:t}),e.memberships.map(a=>Me.createElement(Kg,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(jg(n)))}},Me.createElement(Xg,null,Me.createElement(Qg,{radius:"xl"}),Me.createElement("div",{style:{flex:1}},Me.createElement(vs,{size:"sm",weight:500},a.profile?.display),Me.createElement(vs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Zg,Center as Yg,Checkbox as eh,Group as oh,Stack as bs,Title as th}from"@mantine/core";import qe from"react";function Ps(e){let o=S();return qe.createElement(J,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},qe.createElement(bs,null,qe.createElement(Yg,{sx:{flexDirection:"column"}},qe.createElement(_e,{size:32}),qe.createElement(th,null,"Choose scope")),qe.createElement(bs,null,(e.scope??"openid").split(" ").map(t=>qe.createElement(eh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),qe.createElement(oh,{position:"right",mt:"xl"},qe.createElement(Zg,{type:"submit"},"Set scope"))))}import{Alert as rh,Button as ah,Center as nh,Group as fh,Stack as Ds,TextInput as lh,Title as sh}from"@mantine/core";import{normalizeErrorString as ih}from"@medplum/core";import we,{useState as uh}from"react";function Ts(e){let o=S(),[t,r]=uh(void 0);return we.createElement(J,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(ih(n)))}},we.createElement(Ds,null,we.createElement(nh,{sx:{flexDirection:"column"}},we.createElement(_e,{size:32}),we.createElement(sh,null,"Enter MFA code")),t&&we.createElement(rh,{icon:we.createElement(to,{size:16}),title:"Error",color:"red"},t),we.createElement(Ds,null,we.createElement(lh,{name:"token",label:"MFA code",required:!0})),we.createElement(fh,{position:"right",mt:"xl"},we.createElement(ah,{type:"submit"},"Submit code"))))}function E0(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=S(),[i,u]=Ja(void 0),[d,c]=Ja(!1),[C,P]=Ja(void 0),B=Xa(p=>{f?f(p):s.processCode(p).then(()=>{r&&r()}).catch(h=>ks({color:"red",message:Bs(h)}))},[s,f,r]),g=Xa(p=>{c(!!p.mfaRequired),p.login&&u(p.login),p.memberships&&P(p.memberships),p.code&&(t?P(void 0):B(p.code))},[t,B]),D=Xa(p=>{B(p.code)},[B]);return dh(()=>{o&&!i&&s.get("auth/login/"+o).then(g).catch(p=>ks({color:"red",message:Bs(p)}))},[s,o,i,g]),mo.createElement(Gt,{width:450},(()=>i?d?mo.createElement(Ts,{login:i,handleAuthResponse:g}):C?mo.createElement(Ss,{login:i,memberships:C,handleAuthResponse:g}):e.projectId==="new"?mo.createElement(fr,{login:i,handleAuthResponse:g}):e.chooseScopes?mo.createElement(Ps,{login:i,scope:e.scope,handleAuthResponse:D}):mo.createElement("div",null,"Success"):mo.createElement(Cs,{onForgotPassword:a,onRegister:n,handleAuthResponse:g,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Ka as AddressDisplay,Ya as AddressInput,tn as AnnotationInput,QS as AppShell,So as AsyncAutocomplete,wn as AttachmentArrayDisplay,En as AttachmentArrayInput,Po as AttachmentButton,Oe as AttachmentDisplay,St as AttachmentInput,Zo as BackboneElementDisplay,ot as BackboneElementInput,Af as CalendarInput,At as CheckboxFormSection,vt as CodeInput,To as CodeableConceptDisplay,ef as CodeableConceptInput,qn as CodingDisplay,of as CodingInput,Un as ContactDetailDisplay,rf as ContactDetailInput,Pt as ContactPointDisplay,wt as ContactPointInput,Je as Container,Ae as DateTimeInput,AB as DefaultResourceTimeline,Rn as DescriptionList,Nn as DescriptionListEntry,da as DiagnosticReportDisplay,Gt as Document,Bc as ElementDefinitionInputSelector,Tf as ElementDefinitionTypeInput,GB as EncounterTimeline,ho as ErrorBoundary,ux as FhirPathTable,J as Form,Pe as FormSection,Tn as Header,ht as HumanNameDisplay,ff as HumanNameInput,zn as IdentifierDisplay,sf as IdentifierInput,zr as Loading,_e as Logo,fe as MedplumLink,Ch as MedplumProvider,TF as MemoizedFhirPathTable,xF as MemoizedSearchControl,Wn as MoneyDisplay,uf as MoneyInput,Mn as Navbar,cm as ObservationTable,Ro as OperationOutcomeAlert,Fo as Panel,VF as PatientTimeline,tM as PlanDefinitionBuilder,_o as QuantityDisplay,De as QuantityInput,wM as QuestionnaireBuilder,Zl as QuestionnaireForm,Oa as QuestionnaireItemType,Kl as QuestionnaireRepeatWrapper,Dt as RangeDisplay,tt as RangeInput,ao as ReferenceDisplay,Bo as ReferenceInput,ew as ReferenceRangeEditor,PI as ReferenceRangeGroupEditor,HO as RegisterForm,uw as RequestGroupDisplay,Kn as ResourceArrayDisplay,Cf as ResourceArrayInput,Ce as ResourceAvatar,$e as ResourceBadge,Sw as ResourceBlame,Aw as ResourceDiff,UP as ResourceForm,Nw as ResourceHistoryTable,Lt as ResourceInput,Ee as ResourceName,me as ResourcePropertyDisplay,Ne as ResourcePropertyInput,ca as ResourceTable,je as ResourceTimeline,$w as Scheduler,Ta as SearchChangeEvent,so as SearchClickEvent,ex as SearchControl,xl as SearchFieldEditor,vl as SearchFilterEditor,ka as SearchLoadEvent,oO as ServiceRequestTimeline,E0 as SignInForm,Ht as StatusBadge,Uf as Timeline,Ke as TimelineItem,Df as TimingInput,ha as addDateFilterBetween,aA as addField,Oo as addFilter,nl as addLastMonthFilter,ya as addMissingFilter,ll as addNextMonthFilter,fl as addThisMonthFilter,rl as addTodayFilter,al as addTomorrowFilter,sl as addYearToDateFilter,tl as addYesterdayFilter,ve as buildFieldNameString,rA as clearFilters,Qt as clearFiltersOnField,Pd as convertIsoToLocal,Dd as convertLocalToIso,lr as createScriptTag,ol as deleteFilter,pe as getErrorsForInput,Ft as getIssuesForExpression,Nc as getMonthString,nt as getOpString,us as getRecaptcha,cl as getSearchOperators,ul as getSortField,la as getStartMonth,XI as getTimeString,be as getValueAndType,is as initRecaptcha,Vl as isChoiceQuestion,ql as isQuestionEnabled,dl as isSortDescending,kn as parseForm,ml as renderValue,at as setFilters,cp as setOffset,il as setPage,et as setPropertyValue,Ca as setSort,Wf as sortByDateAndPriority,nA as toggleSort,S as useMedplum,zo as useMedplumContext,Ue as useMedplumNavigate,pt as useMedplumProfile,W as useResource};
|
|
64
|
+
}`.replace(/\s+/g," ")}function Qi(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),Wi(zi(t),o).slice(0,5)}function zi(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 Wi(e,o){return e.sort((t,r)=>Pn(r,o)-Pn(t,o))}function Pn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Dn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Dn(Ei(r),o));return t}function Dn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Zi=Ji(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Mn(e){let o=zo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Zi(),[s,i]=_i(!1);return Q.createElement($i,{height:60,p:8,style:{zIndex:101}},Q.createElement(vt,{position:"apart"},Q.createElement(vt,{spacing:"xs"},Q.createElement(Bn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),Q.createElement(Tn,{pathname:e.pathname,searchParams:e.searchParams})),Q.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},Q.createElement(He.Target,null,Q.createElement(Bn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},Q.createElement(vt,{spacing:7},Q.createElement(Ce,{value:r,radius:"xl",size:24}),Q.createElement(jo,{size:"sm",className:f.userName},ji(r?.name?.[0])),Q.createElement(Dr,{size:12,stroke:1.5})))),Q.createElement(He.Dropdown,null,Q.createElement(Ki,{align:"center",p:"xl"},Q.createElement(Ce,{size:"xl",radius:100,value:o.profile}),Q.createElement(yt,{value:o.profile?.name?.[0]}),Q.createElement(jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&Q.createElement(He.Divider,null),n.map(u=>u.profile.reference!==An(o.profile)&&Q.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},Q.createElement(vt,null,Q.createElement(Xi,{radius:"xl"}),Q.createElement("div",{style:{flex:1}},Q.createElement(jo,{size:"sm",weight:500},u.profile.display),Q.createElement(jo,{color:"dimmed",size:"xs"},u.project.display))))),Q.createElement(He.Divider,null),Q.createElement(He.Item,{icon:Q.createElement(Qr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),Q.createElement(He.Item,{icon:Q.createElement(ho,{size:14,stroke:1.5}),onClick:()=>a(`/${An(r)}`)},"Account settings"),Q.createElement(He.Item,{icon:Q.createElement(Lr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),Q.createElement(jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Cu,createStyles as vu,Navbar as jr,ScrollArea as Su,Space as bu,Text as Pu}from"@mantine/core";import fe,{useState as Du}from"react";import{Button as tu,Group as ru,Modal as au,NativeSelect as nu,Stack as fu,TextInput as lu}from"@mantine/core";import{showNotification as wn}from"@mantine/notifications";import{deepClone as su,normalizeErrorString as iu}from"@medplum/core";import Xe from"react";import ou from"react";function Fn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Yi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&eu(o,t);return o}function Yi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function eu(e,o){e[o.name]=o.value}function $(e){return ou.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Fn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function On(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=su(t);s.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:l}),o.updateResource(s).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),wn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{wn({color:"red",message:iu(u)})})}return Xe.createElement(au,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement($,{onSubmit:r},Xe.createElement(fu,null,Xe.createElement(uu,{config:t}),Xe.createElement(lu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),Xe.createElement(ru,{position:"right"},Xe.createElement(tu,{mt:"sm",type:"submit"},"OK")))))}function uu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(nu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Iu,{useState as gu}from"react";import du,{useCallback as cu}from"react";function Kr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function mu(e){return typeof e.display=="string"?e.display:Kr(e)}function pu(e){return{value:Kr(e),label:mu(e),resource:e}}function xu(e){return{code:e,display:e}}function Je(e){let o=P(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=cu(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let g of d)g.code&&!c.some(y=>y.code===g.code)&&c.push(g);return c},[o,t]);return du.createElement(bo,{...n,creatable:r??!0,clearable:a??!0,toKey:Kr,toOption:pu,loadOptions:f,onCreate:xu,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function St(e){let[o,t]=gu(e.defaultValue);function r(a){let n=a[0],f=yu(n);t(f),e.onChange&&e.onChange(f)}return Iu.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:hu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function hu(e){return e?{code:e}:void 0}function yu(e){return e?.code}var En=vu(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 Ln(e){let{classes:o}=En(),t=Qe(),r=Bu(e.pathname,e.searchParams,e.menus),[a,n]=Du(!1);function f(s,i){s.stopPropagation(),s.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function l(s){s&&t(`/${s}`)}return fe.createElement(fe.Fragment,null,fe.createElement(jr,{width:{sm:250},p:"xs"},fe.createElement(Su,null,fe.createElement(jr.Section,{mb:"sm"},fe.createElement(St,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:s=>l(s),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),fe.createElement(jr.Section,{grow:!0},e.menus?.map(s=>fe.createElement(fe.Fragment,{key:`menu-${s.title}`},fe.createElement(Pu,{className:o.menuTitle},s.title),s.links?.map(i=>fe.createElement(ku,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},fe.createElement(Tu,{to:i.href,icon:i.icon}),fe.createElement("span",null,i.label))))),e.displayAddBookmark&&fe.createElement(Cu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:fe.createElement(Vr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&fe.createElement(On,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function ku(e){let{classes:o,cx:t}=En();return fe.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function Tu(e){return e.icon?e.icon:fe.createElement(bu,{w:30})}function Bu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let l=Au(e,o,f.href);l>a&&(a=l,r=f)}return r}function Au(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,l]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==l)return 0;let n=1;for(let[f,l]of o.entries())a.includes(f)||r.searchParams.get(f)===l&&n++;return n}function db(e){let o=Fu(),[t,r]=Ou(localStorage.navbarOpen==="true"),a=P(),n=xt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?fo.createElement(Jr,null):fo.createElement(Mu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&fo.createElement(Mn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?fo.createElement(Ln,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},fo.createElement(yo,{key:`${e.pathname}?${e.searchParams?.toString()}`},fo.createElement(wu,{fallback:fo.createElement(Jr,null)},e.children)))}import _r from"react";import{Anchor as Eu}from"@mantine/core";import $e from"react";function Le(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?$e.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(Eu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Rn(e){return _r.createElement("div",null,e.values?.map((o,t)=>_r.createElement("div",{key:"attatchment-"+t},_r.createElement(Le,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Nn}from"@mantine/core";import ie,{useRef as Ru,useState as Nu}from"react";import Zr,{useRef as Lu}from"react";function Po(e){let o=P(),t=Lu(null);function r(f){N(f),t.current?.click()}function a(f){N(f);let l=f.target.files;l&&Array.from(l).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let s=f.name,i=f.type||"application/octet-stream";o.createBinary(f,s,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:s})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Zr.createElement(Zr.Fragment,null,Zr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Hn(e){let[o,t]=Nu(e.defaultValue??[]),r=Ru();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(Le,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(Nn,{title:"Remove",size:"sm",onClick:l=>{N(l);let s=o.slice();s.splice(f,1),a(s)}},ie.createElement(ze,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(Nn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Xo,{size:16})))))))}import{Button as Vn}from"@mantine/core";import Do,{useState as Hu}from"react";function bt(e){let[o,t]=Hu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Le,{value:o,maxWidth:200}),Do.createElement(Vn,{onClick:a=>{N(a),r(void 0)}},"Remove")):Do.createElement(Po,{onUpload:r},a=>Do.createElement(Vn,{...a},"Upload..."))}import{getPropertyDisplayName as rd,globalSchema as ad}from"@medplum/core";import et from"react";var Pt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Vu}from"@mantine/core";import _o from"react";var qu=Vu(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function qn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=qu();return _o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Un(e){return _o.createElement(_o.Fragment,null,_o.createElement("dt",null,e.term),_o.createElement("dd",null,e.children))}import{ActionIcon as $u,Box as Ku,CopyButton as ju,Tooltip as _u}from"@mantine/core";import{formatDateTime as Zu,formatPeriod as Yu,formatTiming as ed,getElementDefinitionTypeName as od,getTypedPropertyValue as td,PropertyType as V}from"@medplum/core";import O from"react";import{formatCodeableConcept as Uu}from"@medplum/core";import Gn from"react";function ko(e){return Gn.createElement(Gn.Fragment,null,Uu(e.value))}import{formatCoding as Gu}from"@medplum/core";import Qn from"react";function zn(e){return Qn.createElement(Qn.Fragment,null,Gu(e.value))}import Yr from"react";import Wn from"react";function Dt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Wn.createElement(Wn.Fragment,null,t.join("").trim())}function Xn(e){let o=e.value;return o?Yr.createElement(Yr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Yr.createElement(Dt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Qu from"react";function Jn(e){return Qu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as zu}from"@medplum/core";import $n from"react";function Kn(e){return $n.createElement($n.Fragment,null,zu(e.value))}import{formatQuantity as Wu}from"@medplum/core";import jn from"react";function Zo(e){return jn.createElement(jn.Fragment,null,Wu(e.value))}import{formatRange as Xu}from"@medplum/core";import _n from"react";function kt(e){return _n.createElement(_n.Fragment,null,Xu(e.value))}import Tt from"react";function Zn(e){let o=e.value;return o?Tt.createElement(Tt.Fragment,null,Tt.createElement(Zo,{value:o.numerator}),"\xA0/\xA0",Tt.createElement(Zo,{value:o.denominator})):null}import{stringify as Ju}from"@medplum/core";import ea from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Ju(e.value);return e.link!==!1&&e.value.reference?ea.createElement(se,{to:e.value},o):ea.createElement(ea.Fragment,null,o)}import Bt from"react";function Yn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Bt.createElement(Bt.Fragment,null,t.map((a,n)=>Bt.createElement("div",{key:`${n}-${t.length}`},Bt.createElement(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return O.createElement(Ku,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,O.createElement(ju,{value:r,timeout:2e3},({copied:n,copy:f})=>O.createElement(_u,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},O.createElement($u,{color:n?"teal":"gray",onClick:f},n?O.createElement(Wo,{size:"1rem"}):O.createElement(Tr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?O.createElement(Rn,{values:r,maxWidth:e.maxWidth}):O.createElement(Yn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return O.createElement(O.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return O.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.decimal:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return O.createElement(O.Fragment,null,r);case V.canonical:return O.createElement(lo,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return O.createElement(O.Fragment,null,Zu(r));case V.markdown:return O.createElement("pre",null,r);case V.Address:return O.createElement(Ya,{value:r});case V.Annotation:return O.createElement(O.Fragment,null,r?.text);case V.Attachment:return O.createElement(Le,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return O.createElement(ko,{value:r});case V.Coding:return O.createElement(zn,{value:r});case V.ContactDetail:return O.createElement(Xn,{value:r});case V.ContactPoint:return O.createElement(Dt,{value:r});case V.HumanName:return O.createElement(yt,{value:r});case V.Identifier:return O.createElement(Jn,{value:r});case V.Money:return O.createElement(Kn,{value:r});case V.Period:return O.createElement(O.Fragment,null,Yu(r));case V.Quantity:case V.Duration:return O.createElement(Zo,{value:r});case V.Range:return O.createElement(kt,{value:r});case V.Ratio:return O.createElement(Zn,{value:r});case V.Reference:return O.createElement(lo,{value:r,link:e.link});case V.Timing:return O.createElement(O.Fragment,null,ed(r));case V.Dosage:case V.UsageContext:return O.createElement(Yo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return O.createElement(Yo,{value:{type:od(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Pe(e,o){let t=td(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=ad.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?et.createElement("div",null,t.name):et.createElement(qn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(Pt.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Pe(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:et.createElement(Un,{key:f,term:rd(f)},et.createElement(xe,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):et.createElement("div",null,r,"\xA0not implemented")}import{Stack as Hc}from"@mantine/core";import{getPropertyDisplayName as Ff,globalSchema as Vc}from"@medplum/core";import Ao,{useState as qc}from"react";import{Group as nd,Input as fd}from"@mantine/core";import At from"react";function Mt(e){return At.createElement(nd,{noWrap:!0},At.createElement("div",null,e.children),At.createElement("div",null,At.createElement(fd.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as ld}from"@mantine/core";import sd from"react";function Ie(e,o){return e?.issue?.filter(t=>ef(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
+
`)}function Ft(e,o){return e?.issue?.filter(t=>ef(t.expression?.[0],o))}function ef(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function De(e){return sd.createElement(ld.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:Ie(e.outcome,e.htmlFor)},e.children)}import{Button as of,Group as id,Stack as ud,TextInput as tf}from"@mantine/core";import{capitalize as dd,deepClone as cd}from"@medplum/core";import Me,{useEffect as md,useState as rf}from"react";function iD(e){let o=P(),t=X(e.defaultValue),[r,a]=rf(),[n,f]=rf();return md(()=>{t&&(f(cd(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Me.createElement("div",null,"Loading..."):Me.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Me.createElement(ud,{mb:"xl"},Me.createElement(De,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Me.createElement(tf,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Me.createElement(De,{title:"ID",htmlFor:"id",outcome:e.outcome},Me.createElement(tf,{name:"id",defaultValue:n.id,disabled:!0}))),Me.createElement(tt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Me.createElement(id,{position:"right",mt:"xl"},Me.createElement(of,{type:"submit"},"OK"),e.onDelete&&Me.createElement(of,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function ot(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",dd(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as Ac,Group as Mc,NativeSelect as Fc,Textarea as wc,TextInput as ia}from"@mantine/core";import{capitalize as Oc,getElementDefinitionTypeName as Ec,PropertyType as E}from"@medplum/core";import G,{useState as Lc}from"react";import pd,{useState as xd}from"react";function af(e){let[o,t]=xd(e.defaultValue);function r(a){let n=gd(a);t(n),e.onChange&&e.onChange(n)}return pd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Id(o),maxSelectedValues:1,onChange:r})}function Id(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function gd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import hd,{useState as yd}from"react";function nf(e){let[o,t]=yd(e.defaultValue);function r(a){let n=a[0],f=n&&vd(n);t(f),e.onChange&&e.onChange(f)}return hd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Cd(o),maxSelectedValues:1,onChange:r})}function Cd(e){return{system:e.system,code:e.code,display:e.display}}function vd(e){return{system:e.system,code:e.code,display:e.display}}import{Group as kd,TextInput as Td}from"@mantine/core";import oa,{useRef as Bd,useState as Ad}from"react";import{Group as Sd,NativeSelect as ff,TextInput as bd}from"@mantine/core";import wt,{useRef as Pd,useState as Dd}from"react";function Ot(e){let[o,t]=Dd(e.defaultValue),r=Pd();r.current=o;function a(s){s&&Object.keys(s).length===0&&(s=void 0),t(s),e.onChange&&e.onChange(s)}function n(s){let i={...r.current,system:s};s||delete i.system,a(i)}function f(s){let i={...r.current,use:s};s||delete i.use,a(i)}function l(s){let i={...r.current,value:s};s||delete i.value,a(i)}return wt.createElement(Sd,{spacing:"xs",grow:!0,noWrap:!0},wt.createElement(ff,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),wt.createElement(ff,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),wt.createElement(bd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function lf(e){let[o,t]=Ad(e.defaultValue),r=Bd();r.current=o;function a(l){t(l),e.onChange&&e.onChange(l)}function n(l){let s={...r.current,name:l};l||delete s.name,a(s)}function f(l){let s={...r.current,telecom:l&&[l]};l||delete s.telecom,a(s)}return oa.createElement(kd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(Td,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),oa.createElement(Ot,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Md}from"@mantine/core";import{isValidDate as sf}from"@medplum/core";import Fd from"react";function Fe(e){return Fd.createElement(Md,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Ed(),defaultValue:wd(e.defaultValue),autoFocus:e.autoFocus,error:Ie(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Od(t))}}})}function wd(e){if(!e)return"";let o=new Date(e);return sf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Od(e){if(!e)return"";let o=new Date(e);return sf(o)?o.toISOString():""}function Ed(){return"datetime-local"}import{JsonInput as Ld}from"@mantine/core";import{stringify as Rd}from"@medplum/core";import Nd from"react";function uf(e){return Nd.createElement(Ld,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Rd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Hd,NativeSelect as Vd,TextInput as Et}from"@mantine/core";import To,{useRef as qd,useState as Ud}from"react";function df(e){let[o,t]=Ud(e.defaultValue),r=qd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return To.createElement(Hd,{spacing:"xs",grow:!0,noWrap:!0},To.createElement(Vd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),To.createElement(Et,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),To.createElement(Et,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),To.createElement(Et,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),To.createElement(Et,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Gd,TextInput as cf}from"@mantine/core";import ta,{useState as Qd}from"react";function mf(e){let[o,t]=Qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Gd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(cf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ta.createElement(cf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as zd,TextInput as Wd}from"@mantine/core";import ra,{useCallback as aa,useState as Xd}from"react";var Jd=["USD","EUR","CAD","GBP","AUD"];function pf(e){let{onChange:o}=e,[t,r]=Xd(e.defaultValue),a=aa(s=>{r(s),o&&o(s)},[o]),n=aa(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=aa(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=ra.createElement(zd,{defaultValue:t?.currency,data:Jd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ra.createElement(Wd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ra.createElement(Br,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as $d}from"@mantine/core";import na,{useState as Kd}from"react";function xf(e){let[o,t]=Kd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return na.createElement($d,{spacing:"xs",grow:!0,noWrap:!0},na.createElement(Fe,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),na.createElement(Fe,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as jd,NativeSelect as _d,TextInput as If}from"@mantine/core";import Lt,{useState as Zd}from"react";function ke(e){let[o,t]=Zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Lt.createElement(jd,{spacing:"xs",grow:!0,noWrap:!0},Lt.createElement(_d,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Lt.createElement(If,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Yd(a.currentTarget.value)})}}),Lt.createElement(If,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Yd(e){if(e)return parseFloat(e)}import{Group as ec}from"@mantine/core";import fa,{useState as oc}from"react";function rt(e){let[o,t]=oc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return fa.createElement(ec,{spacing:"xs",grow:!0,noWrap:!0},fa.createElement(ke,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),fa.createElement(ke,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as tc}from"@mantine/core";import la,{useState as rc}from"react";function gf(e){let[o,t]=rc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return la.createElement(tc,{spacing:"xs",grow:!0,noWrap:!0},la.createElement(ke,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),la.createElement(ke,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as mc,NativeSelect as pc,TextInput as xc}from"@mantine/core";import{createReference as Ic}from"@medplum/core";import Nt,{useRef as vf,useState as Sf}from"react";import{Group as ac,Text as hf}from"@mantine/core";import{getDisplayString as nc,getReferenceString as Cf}from"@medplum/core";import so,{forwardRef as fc,useCallback as yf,useState as lc}from"react";var sc={Observation:"code",User:"email:contains"},ic=["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 uc(e){return{value:Cf(e),label:nc(e),resource:e}}function Rt(e){let o=P(),t=e.resourceType,[r,a]=lc(),n=X(e.defaultValue,a),f=e.onChange,l=yf(async(i,u)=>{let d=cc(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=yf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(bo,{name:e.name,itemComponent:dc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:Cf,toOption:uc,loadOptions:l,onChange:s,clearable:!0})}var dc=fc(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(ac,{noWrap:!0},so.createElement(Ce,{value:o}),so.createElement("div",null,so.createElement(hf,null,e),so.createElement(hf,{size:"xs",color:"dimmed"},o.birthDate)))));function cc(e){return sc[e]??(ic.includes(e)?"name":"_id")}function Bo(e){let o=gc(e.targetTypes),t=hc(e.defaultValue,o),[r,a]=Sf(e.defaultValue),[n,f]=Sf(t),l=vf();l.current=r;let s=vf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Nt.createElement(mc,{spacing:"xs",grow:!0,noWrap:!0},o?Nt.createElement(pc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Nt.createElement(xc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Nt.createElement(Rt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?Ic(u):void 0)}}))}function gc(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 bf}from"@mantine/core";import ge,{useRef as yc,useState as Cc}from"react";function Pf(e){let[o,t]=Cc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=yc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ge.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},ge.createElement("colgroup",null,ge.createElement("col",{width:"97%"}),ge.createElement("col",{width:"3%"})),ge.createElement("tbody",null,o.map((n,f)=>ge.createElement("tr",{key:`${f}-${o.length}`},ge.createElement("td",null,ge.createElement(Ve,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(bf,{title:"Remove",size:"sm",onClick:l=>{N(l);let s=[...r.current];s.splice(f,1),a(s)}},ge.createElement(ze,null))))),ge.createElement("tr",null,ge.createElement("td",null),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(bf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},ge.createElement(xo,null))))))}import{Button as Tf,Chip as Df,Group as Ht,Modal as vc,NativeSelect as Sc,Stack as bc,Switch as Pc,TextInput as Dc}from"@mantine/core";import{formatTiming as kc}from"@medplum/core";import K,{useRef as Bf,useState as sa}from"react";var Tc=["sun","mon","tue","wed","thu","fri","sat"];function Af(e){let[o,t]=sa(e.defaultValue),[r,a]=sa(!1),n=Bf();return n.current=o,K.createElement(K.Fragment,null,K.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},K.createElement("span",null,kc(n.current)||"No repeat"),K.createElement(Tf,{onClick:()=>a(!0)},"Edit")),K.createElement(Bc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var kf={repeat:{period:1,periodUnit:"d"}};function Bc(e){let[o,t]=sa(e.defaultValue||kf),r=Bf();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function l(i){n({...r.current?.repeat,periodUnit:i})}function s(i){n({...r.current?.repeat,dayOfWeek:i})}return K.createElement(vc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},K.createElement(bc,null,K.createElement(De,{title:"Starts on",htmlFor:"timing-dialog-start"},K.createElement(Fe,{name:"timing-dialog-start",onChange:i=>a(i)})),K.createElement(Pc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?kf.repeat:void 0)}),o.repeat&&K.createElement(K.Fragment,null,K.createElement(De,{title:"Repeat every",htmlFor:"timing-dialog-period"},K.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},K.createElement(Dc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),K.createElement(Sc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>l(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&K.createElement(De,{title:"Repeat on"},K.createElement(Df.Group,{multiple:!0,onChange:s},K.createElement(Ht,{position:"apart",mt:"md",spacing:"xs"},Tc.map(i=>K.createElement(Df,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),K.createElement(Ht,{position:"right"},K.createElement(Tf,{onClick:()=>e.onOk(o)},"OK"))))}function Ve(e){let o=e.property,t=e.defaultPropertyType??o.type?.[0]?.code,r=e.name,a=e.defaultValue;if(o.max==="*"&&!e.arrayElement)return t===E.Attachment?G.createElement(Hn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Pf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(Rc,{elementDefinitionTypes:n,...e}):G.createElement(Mf,{elementDefinitionType:n[0],...e})}function Rc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Lc(t);return G.createElement(Mc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Fc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(Mf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Oc(r.code)))}}))}function Mf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case E.SystemString:case E.canonical:case E.string:case E.time:case E.uri:case E.url:return G.createElement(ia,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.date:return G.createElement(ia,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.dateTime:case E.instant:return G.createElement(Fe,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case E.decimal:case E.integer:case E.positiveInt:case E.unsignedInt:return G.createElement(ia,{type:"number",step:t===E.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case E.code:return G.createElement(St,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.boolean:return G.createElement(Ac,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case E.markdown:return G.createElement(wc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case E.Address:return G.createElement(rn,{name:r,defaultValue:a,onChange:e.onChange});case E.Annotation:return G.createElement(fn,{name:r,defaultValue:a,onChange:e.onChange});case E.Attachment:return G.createElement(bt,{name:r,defaultValue:a,onChange:e.onChange});case E.CodeableConcept:return G.createElement(af,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.Coding:return G.createElement(nf,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.ContactDetail:return G.createElement(lf,{name:r,defaultValue:a,onChange:e.onChange});case E.ContactPoint:return G.createElement(Ot,{name:r,defaultValue:a,onChange:e.onChange});case E.Extension:return G.createElement(uf,{name:r,defaultValue:a,onChange:e.onChange});case E.HumanName:return G.createElement(df,{name:r,defaultValue:a,onChange:e.onChange});case E.Identifier:return G.createElement(mf,{name:r,defaultValue:a,onChange:e.onChange});case E.Money:return G.createElement(pf,{name:r,defaultValue:a,onChange:e.onChange});case E.Period:return G.createElement(xf,{name:r,defaultValue:a,onChange:e.onChange});case E.Duration:case E.Quantity:return G.createElement(ke,{name:r,defaultValue:a,onChange:e.onChange});case E.Range:return G.createElement(rt,{name:r,defaultValue:a,onChange:e.onChange});case E.Ratio:return G.createElement(gf,{name:r,defaultValue:a,onChange:e.onChange});case E.Reference:return G.createElement(Bo,{name:r,defaultValue:a,targetTypes:Nc(o),onChange:e.onChange});case E.Timing:return G.createElement(Af,{name:r,defaultValue:a,onChange:e.onChange});case E.Dosage:case E.UsageContext:return G.createElement(tt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(tt,{typeName:Ec(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Nc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=qc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Vc.types[a];if(!n)return Ao.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Ao.createElement(Hc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||Pt.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=Pe(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Ao.createElement(Mt,{key:s,title:Ff(s),description:i.definition,htmlFor:s},Ao.createElement(Ve,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(g,y)=>{r(ot(o,s,y??s,l[1],g))}})):Ao.createElement(De,{key:s,title:Ff(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Ao.createElement(Ve,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(g,y)=>{r(ot(o,s,y??s,l[1],g))}}))}))}import{Button as ua,createStyles as Uc,Group as wf}from"@mantine/core";import re,{useMemo as Gc,useState as Qc}from"react";var zc=Uc(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 Wc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Of(e){let{classes:o}=zc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Qc(da);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Gc(()=>Xc(a,e.slots),[a,e.slots]);return re.createElement("div",null,re.createElement(wf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},re.createElement("p",{style:{flex:1}},Wc(a)),re.createElement(wf,{position:"right",spacing:"xs"},re.createElement(ua,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),re.createElement(ua,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),re.createElement("table",{className:o.table},re.createElement("thead",null,re.createElement("tr",null,re.createElement("th",null,"SUN"),re.createElement("th",null,"MON"),re.createElement("th",null,"TUE"),re.createElement("th",null,"WED"),re.createElement("th",null,"THU"),re.createElement("th",null,"FRI"),re.createElement("th",null,"SAT"))),re.createElement("tbody",null,l.map((s,i)=>re.createElement("tr",{key:"week-"+i},s.map((u,d)=>re.createElement("td",{key:"day-"+d},u&&re.createElement(ua,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function da(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Xc(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Jc(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Jc(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as $c,createStyles as Kc}from"@mantine/core";import jc from"react";var _c=Kc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=_c();return jc.createElement($c,{className:r.root,...t},o)}import fp from"react";import{ActionIcon as _f,Center as Qm,createStyles as zm,Group as Wm,Loader as Xm,Menu as qe,ScrollArea as Jm,TextInput as $m}from"@mantine/core";import{showNotification as Km,updateNotification as ha}from"@mantine/notifications";import{getReferenceString as at,normalizeErrorString as jm}from"@medplum/core";import T,{useCallback as Ut,useEffect as _m,useRef as Zf,useState as Yf}from"react";import{createStyles as dm,Group as qt,List as Rf,Stack as Nf,Text as Te,Title as Hf}from"@mantine/core";import{capitalize as cm,formatCodeableConcept as mm,formatDateTime as pa,formatObservationValue as pm,isReference as xm}from"@medplum/core";import h,{useEffect as Im,useState as gm}from"react";import{Blockquote as Zc,createStyles as Yc,Stack as em}from"@mantine/core";import Ef from"react";var om=Yc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ca({value:e}){let{classes:o}=om();return e?Ef.createElement(em,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Ef.createElement(Zc,{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 lm}from"@mantine/core";import ma from"react";import{Text as tm}from"@mantine/core";import{getDisplayString as rm,isOk as am,normalizeErrorString as nm}from"@medplum/core";import Lf,{useState as fm}from"react";function Re(e){let{value:o,link:t,...r}=e,[a,n]=fm(),f=X(o,n),l;if(a&&!am(a))l=`[${nm(a)}]`;else if(f)l=rm(f);else return null;return t?Lf.createElement(se,{to:o,...r},l):Lf.createElement(tm,{component:"span",...r},l)}function je(e){return ma.createElement(lm,{spacing:"xs"},ma.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),ma.createElement(Re,{value:e.value,link:e.link}))}import{Badge as sm}from"@mantine/core";import im from"react";var um={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Vt(e){return im.createElement(sm,{color:um[e.status]},e.status)}var Vf=dm(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));xa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function xa(e){let o=P(),t=X(e.value),[r,a]=gm();if(Im(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(Nf,null,h.createElement(Hf,null,"Diagnostic Report"),h.createElement(hm,{value:t}),!e.hideSpecimenInfo&&ym(r),t.result&&h.createElement(Cm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(ca,{value:n}))}function hm({value:e}){return h.createElement(qt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(Te,null,h.createElement(je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(Te,null,h.createElement(je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(Te,null,h.createElement(je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(Te,null,pa(e.issued))),e.status&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(Te,null,cm(e.status))))}function ym(e){return h.createElement(Nf,{spacing:"xs"},h.createElement(Hf,{order:2,size:"h6"},"Specimens"),h.createElement(Rf,{type:"ordered"},e?.map(o=>h.createElement(Rf.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(qt,{spacing:20},h.createElement(qt,{spacing:5},h.createElement(Te,{fw:500},"Collected:")," ",pa(o.collection?.collectedDateTime)),h.createElement(qt,{spacing:5},h.createElement(Te,{fw:500},"Received:")," ",pa(o.receivedTime)))))))}function Cm(e){let{classes:o}=Vf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,h.createElement(qf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function qf(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(vm,{key:`obs-${xm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function vm(e){let{classes:o,cx:t}=Vf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Pm(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(ko,{value:r.code}))),h.createElement("td",null,h.createElement(Sm,{value:r})),h.createElement("td",null,h.createElement(bm,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(ko,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement(h.Fragment,null,r.category.map(f=>h.createElement("div",{key:`category-${mm(f)}`},h.createElement(ko,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(lo,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Vt,{status:r.status}))),r.hasMember&&h.createElement(qf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(ca,{value:r.note}))))}function Sm(e){let o=e.value;return h.createElement(h.Fragment,null,pm(o))}function bm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(kt,{value:o}):null}function Pm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Dm,Paper as km,useComponentDefaultProps as Tm}from"@mantine/core";import Bm from"react";var Am=Dm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Mm={shadow:"xs",radius:"md",withBorder:!0};function Mo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Tm("Panel",Mm,e),{classes:l,cx:s}=Am({width:r,fill:a},{name:"Panel",unstyled:n});return Bm.createElement(km,{className:s(l.paper,o),...f},t)}import{createStyles as Fm}from"@mantine/core";import{getPropertyDisplayName as wm,stringify as Uf,toTypedValue as Gf}from"@medplum/core";import ue,{useEffect as Om,useState as Em}from"react";var Lm=Fm(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 zf(e){let{classes:o}=Lm(),t=P(),[r,a]=Em();if(Om(()=>{t.requestSchema(e.original.resourceType).then(a).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=r.types[e.original.resourceType];return n?ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.properties).map(f=>{let l=f[0];if(l==="id"||l==="meta")return null;let s=f[1],[i,u]=Pe(Gf(e.original),l),[d,c]=Pe(Gf(e.revised),l);return Qf(i)&&Qf(d)||Uf(i)===Uf(d)?null:ue.createElement("tr",{key:l},ue.createElement("td",null,wm(l)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Qf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Rm,{useEffect as Nm,useState as Hm}from"react";function Ia(e){let o=P(),t=X(e.value),[r,a]=Hm();return Nm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Rm.createElement(Yo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Vm,Group as qm,Menu as Wf,Text as ga}from"@mantine/core";import{formatDateTime as Um,getReferenceString as Gm}from"@medplum/core";import ae from"react";function Xf(e){return ae.createElement(Ke,null,e.children)}function _e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return ae.createElement(Mo,{"data-testid":"timeline-item",fill:!0,...n},ae.createElement(qm,{position:"apart",spacing:8,mx:"xs",my:"sm"},ae.createElement(Ce,{value:f,link:!0,size:"md"}),ae.createElement("div",{style:{flex:1}},ae.createElement(ga,{size:"sm"},ae.createElement(Re,{color:"dark",weight:500,value:f,link:!0})),ae.createElement(ga,{size:"xs"},ae.createElement(se,{color:"dimmed",to:e.resource},Um(l)),ae.createElement(ga,{component:"span",color:"dimmed",mx:8},"\xB7"),ae.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&ae.createElement(Wf,{position:"bottom-end",shadow:"md",width:200},ae.createElement(Wf.Target,null,ae.createElement(Vm,{radius:"xl","aria-label":`Actions for ${Gm(e.resource)}`},ae.createElement(Ar,null))),a)),ae.createElement(yo,null,r&&ae.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&ae.createElement(ae.Fragment,null,e.children)))}function Kf(e,o){e.sort((t,r)=>{let a=Jf(t,o),n=Jf(r,o);return a>n?1:a<n?-1:$f(t,o)-$f(r,o)})}function Jf(e,o){if(!jf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function $f(e,o){if(!jf(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function jf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Zm=zm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ze(e){let o=P(),t=Qe(),r=o.getProfile(),a=Zf(null),n=X(e.value),[f,l]=Yf(),[s,i]=Yf([]),u=e.loadTimelineResources,d=Zf(s);d.current=s;let c=Ut(C=>{Kf(C,n),C.reverse(),i(C)},[n]),g=Ut(C=>{let R=[];for(let Ae of C){if(Ae.status!=="fulfilled")continue;let ye=Ae.value;if(ye.type==="history"&&l(ye),ye.entry)for(let ro of ye.entry)R.push(ro.resource)}c(R)},[c]),y=Ut(C=>c([...d.current,C]),[c]),A=Ut(()=>{let C,R;"resourceType"in e.value?(C=e.value.resourceType,R=e.value.id):[C,R]=e.value.reference?.split("/"),u(o,C,R).then(g).catch(console.log)},[o,e.value,u,g]);_m(()=>A(),[A]);function v(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(R=>y(R)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(R=>y(R)).then(()=>ha({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(Wo,{size:16}),autoClose:2e3})).catch(R=>ha({id:"upload-notification",color:"red",title:"Upload error",message:jm(R),icon:T.createElement(Fr,{size:16}),autoClose:2e3}))}function I(C,R){return o.updateResource({...C,priority:R})}function H(C){I(C,"stat").then(A).catch(console.log)}function b(C){I(C,"routine").then(A).catch(console.log)}function x(C){t(`/${C.resourceType}/${C.id}`)}function q(C){t(`/${C.resourceType}/${C.id}/edit`)}function oe(C){t(`/${C.resourceType}/${C.id}/delete`)}function me(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function te(){Km({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function qo(C){ha({id:"upload-notification",loading:!0,title:"Uploading...",message:np(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Xf,null,e.createCommunication&&T.createElement(Mo,null,T.createElement($,{testid:"timeline-form",onSubmit:C=>{v(C.text);let R=a.current;R&&(R.value="",R.focus())}},T.createElement(Wm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement($m,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(_f,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Rr,{size:16})),T.createElement(Po,{onUpload:B,onUploadStart:te,onUploadProgress:qo},C=>T.createElement(_f,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(Xo,{size:16})))))),s.map(C=>{if(!C)return null;let R=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(Ym,{key:R,history:f,resource:C,onDetails:me});switch(C.resourceType){case"AuditEvent":return T.createElement(rp,{key:R,resource:C,onDetails:x});case"Communication":return T.createElement(op,{key:R,resource:C,onPin:C.priority!=="stat"?H:void 0,onUnpin:C.priority==="stat"?b:void 0,onDetails:x,onEdit:q,onDelete:oe});case"DiagnosticReport":return T.createElement(ap,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});case"Media":return T.createElement(tp,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});default:return T.createElement(_e,{key:R,resource:C,padding:!0},T.createElement(Ia,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Qm,{style:{width:"100%",height:"100%"}},T.createElement(Xm,null))}function Fo(e){return T.createElement(qe.Dropdown,null,T.createElement(qe.Label,null,"Resource"),e.onPin&&T.createElement(qe.Item,{icon:T.createElement(Nr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${at(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(qe.Item,{icon:T.createElement(Hr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${at(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(qe.Item,{icon:T.createElement(Er,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${at(e.resource)}`},"Details"),e.onEdit&&T.createElement(qe.Item,{icon:T.createElement(Mr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${at(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(qe.Divider,null),T.createElement(qe.Label,null,"Danger zone"),T.createElement(qe.Item,{color:"red",icon:T.createElement(Ko,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${at(e.resource)}`},"Delete")))}function Ym(e){let o=ep(e.history,e.resource);return o?T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(zf,{original:o,revised:e.resource})):T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement("h3",null,"Created"),T.createElement(Ia,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function ep(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 op(e){let{classes:o}=Zm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(_e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Fo,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function tp(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(_e,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(Le,{value:e.resource.content}))}function rp(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(Jm,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function ap(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(xa,{value:e.resource}))}function np(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ya(e.loaded)} / ${ya(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ya(e.loaded)}`}function ya(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function jB(e){return fp.createElement(Ze,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import el from"react";function Gt(e){let{children:o,...t}=e;return el.createElement(Ke,null,el.createElement(Mo,{...t},o))}import{createReference as Qt}from"@medplum/core";import lp from"react";function sA(e){return lp.createElement(Ze,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Qt(o),subject:o.subject,sender:Qt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Qt(o),subject:o.subject,operator:Qt(t),issued:new Date().toISOString(),content:r})})}import{Button as px,Loader as xx,Table as Ix}from"@mantine/core";import{normalizeOperationOutcome as gx}from"@medplum/core";import ne,{useEffect as wl,useRef as Ol,useState as _t}from"react";import{evalFhirPath as sp}from"@medplum/core";import ip from"react";function ol(e){let o;try{o=sp(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 ip.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Zp,Button as Lo,Center as Kt,createStyles as Yp,Group as jt,Loader as ex,Menu as Al,Pagination as ox,Table as tx,Text as Ba,UnstyledButton as rx}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as wa,formatSearchQuery as ax,globalSchema as nx}from"@medplum/core";import D,{useCallback as Ml,useEffect as Fl,useRef as fx,useState as Aa}from"react";import{Box as up,Button as dp,Modal as cp,Text as mp}from"@mantine/core";import wo from"react";function rl(e){return wo.createElement(cp,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},wo.createElement(up,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&wo.createElement(tl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&wo.createElement(tl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),wo.createElement(mp,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function tl(e){return wo.createElement(dp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as lt,Modal as bp}from"@mantine/core";import{globalSchema as Pp,stringify as Dp}from"@medplum/core";import J,{useEffect as kp,useRef as hl,useState as Tp}from"react";import{capitalize as pp,DEFAULT_SEARCH_COUNT as xp,evalFhirPathTyped as Ip,formatDateTime as gp,Operator as F}from"@medplum/core";import zt from"react";var hp={string:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],fulltext:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],token:[F.EQUALS,F.NOT],reference:[F.EQUALS,F.NOT],numeric:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],quantity:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],date:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY],datetime:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY]},yp={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 PA(e){return nt(e,[])}function Wt(e,o){return nt(e,(e.filters??[]).filter(t=>t.code!==o))}function Oo(e,o,t,r,a){a&&(e=Wt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),nt(e,n)}function DA(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 nl(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function fl(e,o){return Ca(e,o,-1)}function ll(e,o){return Ca(e,o,0)}function sl(e,o){return Ca(e,o,1)}function Ca(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Sa(e,o,r,a)}function il(e,o){return va(e,o,-1)}function ul(e,o){return va(e,o,0)}function dl(e,o){return va(e,o,1)}function va(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Sa(e,o,r,a)}function cl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Sa(e,o,t,new Date)}function Sa(e,o,t,r){return e=Wt(e,o),e=al(e,o,F.GREATER_THAN_OR_EQUALS,t),e=al(e,o,F.LESS_THAN_OR_EQUALS,r),e}function al(e,o,t,r){return Oo(e,o,t,r.toISOString())}function ba(e,o,t=!0){return Oo(e,o,F.MISSING,t.toString())}function Cp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function ml(e,o){let t=e.count??xp,r=(o-1)*t;return Cp(e,r)}function Pa(e,o,t){return o===pl(e)&&t!==void 0&&t===xl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function kA(e,o){let t=!1;return pl(e)===o&&(t=!xl(e)),Pa(e,o,t)}function pl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function xl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Il(e){return hp[e.type]}function ft(e){return yp[e]??""}function Se(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(pp).join(" "))}function gl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?gp(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?Sp(e,o.searchParams[0]):null}function vp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Pe({type:e.resourceType,value:e},t);return r?zt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Sp(e,o){let t=Ip(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:zt.createElement(zt.Fragment,null,t.map((r,a)=>zt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function yl(e){let[o,t]=Tp({search:JSON.parse(Dp(e.search))}),r=hl(null),a=hl(null);kp(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function l(I){I.key==="Enter"&&u()}function s(){u()}function i(){let I=o.search.fields??[],H=r.current?.value;if(H){let b=[...I,H];t({search:{...o.search,fields:b}})}}function u(){let I=o.search.fields??[],H=a.current?.value;if(H){let b=[...I];b.splice(b.indexOf(H),1),t({search:{...o.search,fields:b}})}}function d(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x<=0||(g(b,x,x-1),t({search:{...o.search,fields:b}}))}function c(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x>=b.length-1||(g(b,x,x+1),t({search:{...o.search,fields:b}}))}function g(I,H,b){let x=I[H];I[H]=I[b],I[b]=x}if(!e.visible)return null;let y=e.search.resourceType,A=Pp.types[y],v=o.search.fields??[],B=Bp(A).filter(I=>!v.includes(I)).sort((I,H)=>I.localeCompare(H));return J.createElement(bp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:I=>n(I),onDoubleClick:()=>f(),"data-testid":"available"},B.map(I=>J.createElement("option",{key:I,value:I},Se(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>l(I),onDoubleClick:()=>s(),"data-testid":"selected"},v.map(I=>J.createElement("option",{key:I,value:I},Se(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(lt,{onClick:()=>e.onOk(o.search)},"OK"))}function Bp(e){let o=[],t=new Set,r=new Set;for(let a of Object.keys(e.properties))o.push(a),t.add(a.toLowerCase()),r.add(Se(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=Se(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(Se(a)))}return o}import{Button as it,Group as Rp,Modal as Np,NativeSelect as vl}from"@mantine/core";import{globalSchema as Hp,stringify as Sl}from"@medplum/core";import L,{useEffect as Vp,useRef as Pl,useState as ka}from"react";import{formatDateTime as Ap,getSearchParameterDetails as Mp,globalSchema as Fp,Operator as Cl,SearchParameterType as wp}from"@medplum/core";import st from"react";function Xt(e){let{resourceType:o,filter:t}=e,r=Fp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Cl.EQUALS||t.operator===Cl.NOT_EQUALS))return st.createElement(Re,{value:{reference:t.value}});let a=Mp(o,r);if(t.code==="_lastUpdated"||a.type===wp.DATETIME)return st.createElement(st.Fragment,null,Ap(t.value))}return st.createElement(st.Fragment,null,t.value)}import{Checkbox as Op,TextInput as Da}from"@mantine/core";import{getSearchParameterDetails as Ep,SearchParameterType as Eo}from"@medplum/core";import io from"react";function Jt(e){let o=Ep(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Eo.REFERENCE:return io.createElement(Bo,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Eo.BOOLEAN:return io.createElement(Op,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Eo.DATE:return io.createElement(Da,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Eo.DATETIME:return io.createElement(Fe,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Eo.NUMBER:return io.createElement(Da,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Eo.QUANTITY:return io.createElement(ke,{name:t,defaultValue:Lp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(Da,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function Lp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Dl(e){let[o,t]=ka(JSON.parse(Sl(e.search))),[r,a]=ka(-1),n=Pl(o);n.current=o,Vp(()=>{t(JSON.parse(Sl(e.search)))},[e.search]);function f(u){t(Oo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=Hp.types[l].searchParams??{},i=o.filters||[];return L.createElement(Np,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},L.createElement("div",null,L.createElement("table",null,L.createElement("colgroup",null,L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:380}}),L.createElement("col",{style:{width:120}})),L.createElement("thead",null,L.createElement("tr",null,L.createElement("th",null,"Field"),L.createElement("th",null,"Operation"),L.createElement("th",null,"Value"),L.createElement("th",null,"Actions"))),L.createElement("tbody",null,i.map((u,d)=>d===r?L.createElement(bl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let g=[...i];g[d]=c,t(nt(n.current,g)),a(-1)},onCancel:()=>a(-1)}):L.createElement(qp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(nl(n.current,d))})),L.createElement(bl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),L.createElement(Rp,{position:"right",mt:"xl"},L.createElement(it,{onClick:()=>e.onOk(n.current)},"OK")))}function qp(e){let{filter:o}=e;return L.createElement("tr",null,L.createElement("td",null,Se(o.code)),L.createElement("td",null,ft(o.operator)),L.createElement("td",null,L.createElement(Xt,{resourceType:e.resourceType,filter:o})),L.createElement("td",null,L.createElement(it,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),L.createElement(it,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function bl(e){let[o,t]=ka(e.defaultValue??{}),r=Pl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let l=e.searchParams[o.code],s=l&&Il(l);return L.createElement("tr",null,L.createElement("td",null,L.createElement(vl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:Se(i)}))]})),L.createElement("td",null,s&&L.createElement(vl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:ft(i)}))]})),L.createElement("td",null,l&&o.operator&&L.createElement(Jt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),L.createElement("td",null,o.code&&o.operator&&o.value&&L.createElement(it,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&L.createElement(it,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Up,Grid as Ta,Modal as Gp}from"@mantine/core";import uo,{useState as Qp}from"react";function kl(e){let[o,t]=Qp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(Gp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement($,{onSubmit:r},uo.createElement(Ta,null,uo.createElement(Ta.Col,{span:10},uo.createElement(Jt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Ta.Col,{span:2},uo.createElement(Up,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function Tl(e){if(!e.searchParams)return null;function o(n,f){a(Pa(e.search,n.code,f))}function t(n){a(Wt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(zp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},Se(n.code))))}function zp(e){switch(e.searchParam.type){case"date":return m.createElement(Wp,{...e});case"number":case"quantity":return m.createElement(Xp,{...e});case"reference":return m.createElement(Jp,{...e});case"string":case"token":case"uri":return m.createElement($p,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Wp(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(vr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(sl(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ll(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(fl(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(dl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ul(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(il(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(cl(e.search,t))},"Year to date"),m.createElement($t,{...e}))}function Xp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement($t,{...e}))}function Jp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement($t,{...e}))}function $p(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(br,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Sr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement($t,{...e}))}function $t(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(yr,{size:14}),onClick:()=>e.onChange(ba(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(hr,{size:14}),onClick:()=>e.onChange(ba(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Wr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Kp,globalSchema as jp}from"@medplum/core";function Bl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(_p(o,r));return t}function _p(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=jp.types[e],r=t.properties[o],a=t.searchParams?.[o.toLowerCase()];if(r&&a)return{name:o,elementDefinition:r,searchParams:[a]};if(r){let n;if(t.searchParams){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(t.searchParams).filter(l=>l.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Kp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ma=class extends Event{constructor(t){super("change");this.definition=t}},Fa=class extends Event{constructor(t){super("load");this.response=t}},co=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},lx=Yp(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 sx(e){let{classes:o}=lx(),t=P(),[r,a]=Aa(!1),[n,f]=Aa(),{search:l,onLoad:s}=e,[i,u]=Aa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=fx(i);d.current=i;let c=l.total??"accurate",g=Ml(k=>{f(void 0),t.search(l.resourceType,ax({...l,total:c,fields:void 0}),k).then(W=>{u({...d.current,searchResponse:W}),s&&s(new Fa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),y=Ml(()=>{u({...d.current,searchResponse:void 0}),g({cache:"reload"})},[g]);Fl(()=>{g()},[g]);function A(k,W){k.stopPropagation();let le=k.target.checked,pe={...d.current.selected};le?pe[W]=!0:delete pe[W],u({...d.current,selected:pe})}function v(k){k.stopPropagation();let Z=k.target.checked,le={},pe=d.current.searchResponse;Z&&pe?.entry&&pe.entry.forEach(Uo=>{Uo.resource?.id&&(le[Uo.resource.id]=!0)}),u({...d.current,selected:le})}function B(){let k=d.current;if(!k.searchResponse?.entry||k.searchResponse.entry.length===0)return!1;for(let W of k.searchResponse.entry)if(W.resource?.id&&!k.selected[W.resource.id])return!1;return!0}function I(k){e.onChange&&e.onChange(new Ma(k))}function H(k,W){if(Ct(k.target)||k.button===2)return;N(k);let Z=k.button===1||k.ctrlKey||k.metaKey;!Z&&e.onClick&&e.onClick(new co(W,k)),Z&&e.onAuxClick&&e.onAuxClick(new co(W,k))}function b(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Fl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&nx.types[e.search.resourceType]))return D.createElement(Kt,{style:{width:"100%",height:"100%"}},D.createElement(ex,null));let q=e.checkboxesEnabled,oe=Bl(l),me=l.resourceType,te=i.searchResponse,C=te?.entry?.map(k=>k.resource),R="subtle",Ae="gray",ye=16,ro=window.innerWidth<768;return D.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&D.createElement(jt,{position:"apart",mb:"xl"},D.createElement(jt,{spacing:2},D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(kr,{size:ye}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(Or,{size:ye}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(wr,{size:ye}),onClick:e.onNew},"New..."),!ro&&b()&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(zr,{size:ye}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!ro&&e.onDelete&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(Ko,{size:ye}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!ro&&e.onBulk&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(Cr,{size:ye}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),D.createElement(jt,{spacing:2},te&&D.createElement(Ba,{size:"xs",color:"dimmed"},cx(l,te.total),"-",mx(l,te.total)," of"," ",`${c==="estimate"?"~":""}${te.total?.toLocaleString()}`),D.createElement(Zp,{title:"Refresh",onClick:y},D.createElement(qr,{size:"1.125rem"})))),D.createElement(tx,{className:o.table},D.createElement("thead",null,D.createElement("tr",null,q&&D.createElement("th",null,D.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:k=>v(k)})),oe.map(k=>D.createElement("th",{key:k.name},D.createElement(Al,{shadow:"md",width:240,position:"bottom-end"},D.createElement(Al.Target,null,D.createElement(rx,{className:o.control},D.createElement(jt,{position:"apart",noWrap:!0},D.createElement(Ba,{weight:500,size:"sm"},Se(k.name)),D.createElement(Kt,{className:o.icon},D.createElement(xr,{size:14,stroke:1.5}))))),D.createElement(Tl,{search:e.search,searchParams:k.searchParams,onPrompt:(W,Z)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:Z})},onChange:W=>{I(W)}}))))),!e.hideFilters&&D.createElement("tr",null,q&&D.createElement("th",null),oe.map(k=>D.createElement("th",{key:k.name},k.searchParams&&D.createElement(ix,{resourceType:me,searchParams:k.searchParams,filters:e.search.filters}))))),D.createElement("tbody",null,C?.map(k=>k&&D.createElement("tr",{key:k.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>H(W,k),onAuxClick:W=>H(W,k)},q&&D.createElement("td",null,D.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${k.id}`,checked:!!i.selected[k.id],onChange:W=>A(W,k.id)})),oe.map(W=>D.createElement("td",{key:W.name},gl(k,W))))))),C?.length===0&&D.createElement(Ke,null,D.createElement(Kt,{style:{height:150}},D.createElement(Ba,{size:"xl",color:"dimmed"},"No results"))),te?.total!==void 0&&te.total>0&&D.createElement(Kt,{m:"md",p:"md"},D.createElement(ox,{value:ux(l),total:dx(l,te.total),onChange:k=>I(ml(l,k)),getControlProps:k=>{switch(k){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&D.createElement("div",{"data-testid":"search-error"},D.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),D.createElement(yl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:k=>{I(k),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),D.createElement(Dl,{search:e.search,visible:d.current.filterEditorVisible,onOk:k=>{I(k),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),D.createElement(rl,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),D.createElement(kl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?Se(i.filterDialogSearchParam.code):"",resourceType:me,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:k=>{I(Oo(e.search,k.code,k.operator,k.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var RM=D.memo(sx);function ix(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?D.createElement("span",null,"no filters"):D.createElement(D.Fragment,null,o.map(t=>D.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},ft(t.operator),"\xA0",D.createElement(Xt,{resourceType:e.resourceType,filter:t}))))}function ux(e){return Math.floor((e.offset??0)/(e.count??wa))+1}function dx(e,o){let t=e.count??wa;return Math.ceil(o/t)}function cx(e,o){return Math.min(o,(e.offset??0)+1)}function mx(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??wa))}function hx(e){let o=P(),[t,r]=_t(),[a,n]=_t(),{query:f,fields:l}=e,[s,i]=_t(),[u,d]=_t({}),c=Ol();c.current=s;let g=Ol({});g.current=u,wl(()=>{n(void 0),o.graphql(f).then(i).catch(b=>n(gx(b)))},[o,f]);function y(b,x){b.stopPropagation();let oe=b.target.checked,me={...g.current};oe?me[x]=!0:delete me[x],d(me)}function A(b){b.stopPropagation();let q=b.target.checked,oe={},me=c.current?.data.ResourceList;q&&me&&me.forEach(te=>{te.id&&(oe[te.id]=!0)}),d(oe)}function v(){let b=c.current?.data.ResourceList;if(!b||b.length===0)return!1;for(let x of b)if(x.id&&!g.current[x.id])return!1;return!0}function B(b,x){Ct(b.target)||(N(b),b.button!==1&&e.onClick&&e.onClick(new co(x,b)),b.button===1&&e.onAuxClick&&e.onAuxClick(new co(x,b)))}if(wl(()=>{o.requestSchema(e.resourceType).then(b=>{r({...b})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return ne.createElement(xx,null);let H=e.checkboxesEnabled;return ne.createElement("div",{onContextMenu:b=>N(b),"data-testid":"search-control"},ne.createElement(Ix,null,ne.createElement("thead",null,ne.createElement("tr",null,H&&ne.createElement("th",null,ne.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:v(),onChange:b=>A(b)})),l.map(b=>ne.createElement("th",{key:b.name},b.name)))),ne.createElement("tbody",null,s?.data.ResourceList.map(b=>b&&ne.createElement("tr",{key:b.id,"data-testid":"search-control-row",onClick:x=>B(x,b),onAuxClick:x=>B(x,b)},H&&ne.createElement("td",null,ne.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${b.id}`,checked:!!u[b.id],onChange:x=>y(x,b.id)})),l.map(x=>ne.createElement("td",{key:x.name},ne.createElement(ol,{propertyType:x.propertyType,path:x.fhirPath,resource:b}))))))),s?.data.ResourceList.length===0&&ne.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ne.createElement("div",{"data-testid":"search-error"},ne.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ne.createElement(px,{onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}var JM=ne.memo(hx);import mo from"react";function Ye(e){return mo.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},mo.createElement("title",null,"Medplum Logo"),mo.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),mo.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),mo.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),mo.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),mo.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as yx}from"@mantine/core";import Oa from"react";function Ro(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Oa.createElement(yx,{icon:Oa.createElement(no,{size:16}),color:"red"},o.map(t=>Oa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as Zt}from"@medplum/core";import Cx,{useCallback as vx}from"react";function fF(e){let o=vx((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return Cx.createElement(Ze,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Zt(t),sender:Zt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Zt(t),operator:Zt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Ll,Button as Sx,createStyles as bx,NativeSelect as Px,Stack as Dx,TextInput as La}from"@mantine/core";import{getReferenceString as kx}from"@medplum/core";import U,{useEffect as El,useRef as Rl,useState as ut}from"react";var Nl=bx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function bF(e){let o=P(),t=X(e.value),[r,a]=ut(void 0),[n,f]=ut(),[l,s]=ut(),[i,u]=ut();function d(){s(void 0)}function c(){f(void 0)}let g=Rl();if(g.current=i,El(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),El(()=>(u(wx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(A,v){u({...g.current,[A]:v})}return U.createElement("div",null,U.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},U.createElement(La,{label:"Plan Title",defaultValue:i.title,onChange:A=>y("title",A.currentTarget.value)}),U.createElement(Hl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:A=>y("action",A)}),U.createElement(Sx,{type:"submit"},"Save")))}function Hl(e){let{classes:o}=Nl(),t=Rl();t.current=e.actions;function r(f){e.onChange(t.current.map(l=>l.id===f.id?f:l))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(l=>l!==f))}return U.createElement("div",{className:o.section},e.actions.map(f=>U.createElement("div",{key:f.id},U.createElement(Tx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),U.createElement("div",{className:o.bottomActions},U.createElement(Ll,{href:"#",onClick:f=>{N(f),a({id:ql()})}},"Add action")))}function Tx(e){let{classes:o,cx:t}=Nl(),{action:r}=e,a=Fx(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function l(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function s(u){N(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return U.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?U.createElement(Ax,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):U.createElement(Bx,{action:r,actionType:a}),U.createElement("div",{className:o.bottomActions},U.createElement(Ll,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ra={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Bx(e){let{action:o,actionType:t}=e,[r,a]=Vl(o);return U.createElement("div",null,U.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&U.createElement("div",null,U.createElement(lo,{value:{reference:o.definitionCanonical}})),r&&U.createElement("div",null,U.createElement(xe,{property:Ra,propertyType:a,value:r})))}function Ax(e){let{action:o}=e,[t,r]=ut(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return U.createElement(Dx,{spacing:"xl"},U.createElement(La,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),U.createElement(La,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),U.createElement(Px,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&U.createElement(Hl,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return U.createElement(Yt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return U.createElement(Yt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return U.createElement(Yt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return U.createElement(Yt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),U.createElement(De,{title:"Timing",description:"When the action should take place."},U.createElement(Mx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Yt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return U.createElement(Rt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:kx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Mx(e){let o=e.action,t="timing",[r,a]=Vl(o);return U.createElement(Ve,{property:Ra,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(ot(o,t,f??t,Ra,n))}})}function Fx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Vl(e){return Pe({type:"PlanDefinitionAction",value:e},"timing")}var Ea=1;function ql(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ea=Math.max(Ea,o+1))}return e}return"id-"+Ea++}function wx(e){return{...e,action:Ul(e.action)}}function Ul(e){if(e)return e.map(o=>({...o,id:ql(o.id),action:Ul(o.action)}))}import{Anchor as Be,Box as qa,Button as Kx,createStyles as jx,NativeSelect as _x,Space as Zx,Textarea as Yx,TextInput as tr,Title as eI}from"@mantine/core";import{globalSchema as oI,isResource as tI}from"@medplum/core";import S,{useEffect as jl,useRef as rI,useState as or}from"react";import{Checkbox as Rx,MultiSelect as Nx,NativeSelect as Hx,Radio as Xl,TextInput as dt,Textarea as Vx}from"@mantine/core";import{capitalize as Va,formatCoding as qx,getTypedPropertyValue as eo,globalSchema as Ux,stringify as Jl}from"@medplum/core";import Y from"react";import{evalFhirPathTyped as Ox,getTypedPropertyValue as Gl}from"@medplum/core";var Na=(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))(Na||{});function Ql(e){return e.type==="choice"||e.type==="open-choice"}function zl(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Wl(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=Lx(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Wl(e,o){if(!Array.isArray(e))return;let t=e.find(r=>r.linkId===o);if(t)return t.answer;for(let r of e)if(r.item){let a=Wl(r.item,o);if(a)return a}}function Ex(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Ox(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function Lx(e,o,t){let r=o||[],a=Gl({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let l of r){let s=Gl({type:"QuestionnaireResponseItemAnswer",value:l},"value[x]"),{operator:i}=e;if(Ex(s,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function er(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.currentResponseItems?.filter(c=>c.linkId===o.linkId)??[],d;Array.isArray(l)?d=l:d=Wx(u[0]?.answer??[],i,l),e.onChange({id:u[0].id,linkId:o.linkId,text:o.text,answer:d})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0;switch(a){case"boolean":return Y.createElement(Mt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Y.createElement(Rx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:ve(e.allResponses,o,t,e.groupSequence)??f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Y.createElement(dt,{type:"number",step:"any",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Y.createElement(dt,{type:"number",step:1,id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Y.createElement(dt,{type:"date",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Y.createElement(Fe,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return Y.createElement(dt,{type:"time",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Y.createElement(dt,{id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Y.createElement(Vx,{id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Y.createElement(bt,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return Y.createElement(Bo,{name:n,targetTypes:Xx(o),defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return Y.createElement(ke,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return Jx(o)?Y.createElement(Gx,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Y.createElement(Qx,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function Gx(e){let{name:o,item:t,initial:r}=e,a=eo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=eo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Ha(l))}if(t.repeats){let{propertyName:f,data:l}=$x(e.item),s=ve(e.allResponses,t,e.index,e.groupSequence,!0)?ve(e.allResponses,t,e.index,e.groupSequence,!0):[Ha(a)];return Y.createElement(Nx,{data:l,placeholder:"Select items",searchable:!0,defaultValue:s,onChange:i=>{let u=i.map(d=>{let c=t.answerOption?.find(y=>y[f]===d),g=eo({type:"QuestionnaireItemAnswerOption",value:c},"value");return{[f]:g.value}});e.onChangeAnswer(u)}})}return Y.createElement(Hx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=eo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Va(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:ve(e.allResponses,t,e.index,e.groupSequence)??Ha(a),data:n})}function Qx(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Y.createElement(Je,{elementDefinition:{binding:{valueSet:t.answerValueSet}},onChange:a}):Y.createElement(zx,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function zx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Ux.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=eo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],g=`${o}-option-${d}`,y=eo({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&Jl(y)===Jl(f)&&(s=g),l.push([g,y])}let i=ve(e.allResponses,t,e.index,e.groupSequence),u=l.find(d=>d[1].value===i)?.[0];return Y.createElement(Xl.Group,{name:o,value:u??s,onChange:d=>{let c=l.find(g=>g[0]===d);if(c){let g=c[1],y="value"+Va(g.type);a({[y]:g.value})}}},l.map(([d,c])=>Y.createElement(Xl,{key:d,id:d,value:d,label:Y.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function Wx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function Xx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function Jx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function $x(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=eo({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Va(t.type),a=(e.answerOption??[]).map(n=>({value:n[r],label:r==="valueCoding"?n.valueCoding?.display:n[r]}));return{propertyName:r,data:a}}function Ha(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Kl(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Kl(r.item,o)));return t}function $l(e){let o=eo({type:"QuestionnaireItemAnswerOption",value:e},"value");return qx(o?.value)||o?.value}function ve(e,o,t=0,r=0,a=!1){let f=Kl(e,o.linkId??"")[r]?.answer;return a?f?.map(l=>$l(l)):$l(f?.[t]??{})}var aI=jx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right: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 ow(e){let o=P(),t=X(e.questionnaire),[r,a]=or(),[n,f]=or(),[l,s]=or(),[i,u]=or();function d(){u(void 0)}function c(){s(void 0)}return jl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),jl(()=>(f(sI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:S.createElement("div",null,S.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},S.createElement(_l,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),S.createElement(Kx,{type:"submit"},"Save")))}function _l(e){let{classes:o,cx:t}=aI(),r=e.item,a=e.item,n=tI(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=rI();u.current=e.item;function d(x){N(x),e.setSelectedKey(e.item.id)}function c(x){N(x),e.setHoverKey(e.item.id)}function g(x){let q=u.current;e.onChange({...q,item:q.item?.map(oe=>oe.id===x.id?x:oe)})}function y(x){e.onChange({...e.item,item:[...e.item.item??[],x]})}function A(x){e.onChange({...e.item,item:e.item.item?.filter(q=>q!==x)})}function v(x,q){e.onChange({...u.current,[x]:q})}function B(x){e.onChange({...e.item,...x})}function I(x){e.onChange({...e.item,item:e.item.item?.map(q=>q===x?{...q,repeats:!q.repeats}:q)})}function H(x,q){let oe=dI(e.item.item,x,q);e.onChange({...e.item,item:oe})}let b=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return S.createElement("div",{"data-testid":a.linkId,className:b,onClick:d,onMouseOver:c},S.createElement("div",{className:o.questionBody},s?S.createElement(S.Fragment,null,n&&S.createElement(tr,{size:"xl",defaultValue:r.title,onChange:x=>v("title",x.currentTarget.value)}),!n&&S.createElement(Yx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:x=>v("text",x.currentTarget.value)}),a.type==="reference"&&S.createElement(lI,{item:a,onChange:x=>v("extension",x)}),Ql(a)&&S.createElement(nI,{item:a,onChange:x=>B(x)})):S.createElement(S.Fragment,null,r.title&&S.createElement(eI,null,r.title),a.text&&S.createElement("div",null,a.text),!f&&S.createElement(er,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((x,q)=>S.createElement("div",{key:x.id},S.createElement(_l,{item:x,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:q===0,isLast:q===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:g,onRemove:()=>A(x),onRepeatable:I,onMoveUp:()=>H(q,-1),onMoveDown:()=>H(q,1)}))),!f&&S.createElement("div",{className:o.topActions},s?S.createElement(S.Fragment,null,S.createElement(tr,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:x=>v("linkId",x.currentTarget.value)}),!f&&S.createElement(_x,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:x=>v("type",x.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):S.createElement("div",null,l)),!n&&S.createElement(qa,{className:o.movementActions},S.createElement(qa,{className:o.columnAlignment},!e.isFirst&&S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveUp&&e.onMoveUp()}},S.createElement(gr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveDown&&e.onMoveDown()}},S.createElement(Ir,{"data-testid":"down-button",size:15,className:o.movementIcons})))),S.createElement("div",{className:o.bottomActions},f&&S.createElement(S.Fragment,null,S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),y({id:oo(),linkId:Qa("q"),type:"string",text:"Question"})}},"Add item"),S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),y({id:oo(),linkId:Qa("g"),type:"group",text:"Group"})}},"Add group")),n&&S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),y(uI())}},"Add Page"),s&&!n&&S.createElement(S.Fragment,null,S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function nI(e){let o=oI.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.item.answerOption??[];return S.createElement("div",null,e.item.answerValueSet!==void 0?S.createElement(tr,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):S.createElement(fI,{options:t,property:o,item:e.item,onChange:e.onChange}),S.createElement(qa,{display:"flex"},S.createElement(Be,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:oo()}]})}},"Add choice"),S.createElement(Zx,{w:"lg"}),S.createElement(Be,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function fI(e){return S.createElement("div",null,e.options.map(o=>{let[t,r]=Pe({type:"QuestionnaireItemAnswerOption",value:o},"value");return S.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(Ve,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],l=f.findIndex(s=>s.id===o.id);f[l]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),S.createElement("div",null,S.createElement(Be,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function lI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return S.createElement(S.Fragment,null,t.map(r=>S.createElement("div",{key:r.id},S.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(tr,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(s=>s.id===r.id),l=n[f].valueCodeableConcept?.coding?.[0]??[];l.display=a.target.value,l.code=a.target.value,e.onChange(n)}}))),S.createElement("div",null,S.createElement(Be,{href:"#",onClick:a=>{N(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),S.createElement(Be,{href:"#",onClick:r=>{N(r),e.onChange([...o,{id:oo(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ua=1,Ga=1;function Qa(e){return e+Ua++}function oo(){return"id-"+Ga++}function sI(e){return{...e,id:e.id||oo(),item:Zl(e.item)}}function Zl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Ga=Math.max(Ga,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ua=Math.max(Ua,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||oo(),item:Zl(o.item),answerOption:iI(o.answerOption)}))}function iI(e){if(e)return e.map(o=>({...o,id:o.id||oo()}))}function uI(){return{id:oo(),linkId:Qa("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function dI(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 rs,Button as No,Group as cI,Stack as mI,Stepper as Yl,Title as pI}from"@mantine/core";import{createReference as xI,getExtension as II,getReferenceString as as}from"@medplum/core";import w,{useEffect as es,useState as Ho}from"react";function ns(e){let o=P(),t=o.getProfile(),[r,a]=Ho(),n=X(e.questionnaire),[f,l]=Ho(),[s,i]=Ho(0),u=SI(n?.item??[]),d=()=>i(y=>y>=u?y:y+1),c=()=>i(y=>y<=0?y:y-1);es(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),es(()=>{l(n?hI(n):void 0)},[n]);function g(y){let A=f?.item??[],B={resourceType:"QuestionnaireResponse",item:ss(A,y)};l(B)}return!r||!n?null:w.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:as(n),subject:e.subject,source:xI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&w.createElement(pI,null,n.title),n.item&&w.createElement(fs,{items:n.item??[],allResponses:f?.item??[],onChange:g,renderPages:u>1,activePage:s}),w.createElement(cI,{position:"right",mt:"xl"},w.createElement(gI,{activePage:s,numberOfPages:u,nextStep:d,prevStep:c,submitButtonText:e.submitButtonText})))}function fs(e){let[o,t]=Ho(za(e.items));function r(n,f){let l=o.some(i=>i.id===n),s;l?s=o.map(i=>i.id===n?f:i):s=[...o,f],t(s),e.onChange(s)}let a=e.items.map((n,f)=>e.renderPages?w.createElement(Yl.Step,{label:n.text,key:n.linkId},w.createElement(os,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):w.createElement(os,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?w.createElement(Yl,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):w.createElement(mI,null,a)}function os(e){return zl(e.item,e.allResponses)?e.item.type==="display"?w.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?w.createElement(ts,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):w.createElement(De,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},w.createElement(ts,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function ts(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:DI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?w.createElement(bI,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):w.createElement(PI,{item:e.item,key:e.item.linkId},({index:r})=>w.createElement(er,{...e,index:r}))}function gI(e){return e.activePage===0&&e.numberOfPages<=0?w.createElement(No,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.prevStep},"Back"),w.createElement(No,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.nextStep},"Next")):w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.prevStep},"Back"),w.createElement(No,{onClick:e.nextStep},"Next"))}function hI(e){return{resourceType:"QuestionnaireResponse",questionnaire:as(e),item:za(e.item)}}function za(e){return e?.map(yI)??[]}function yI(e){return{id:ls(),linkId:e.linkId,text:e.text,item:za(e.item),answer:e.initial?.map(vI)??[]}}var CI=1;function ls(){return"id-"+CI++}function vI(e){return{...e}}function SI(e){return e.filter(t=>II(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function bI(e){let[o,t]=Ho(kI(e.item,e.allResponses)),r=e.item;return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement("div",{key:n},w.createElement("h3",null,e.text),w.createElement(fs,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&w.createElement(rs,{onClick:()=>t(a=>a+1)},"Add Group"))}function PI(e){let[o,t]=Ho(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement(w.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&w.createElement(rs,{onClick:()=>t(a=>a+1)},"Add Item"))}function DI(e,o){return e.length===0||e.length<o+1?ls():e[o].id}function kI(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function TI(e,o){let t=ss(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function BI(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(TI(e[a],o[a])):o[a]&&t.push(o[a]);return t}function ss(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(BI(a,n))}return t}import{ActionIcon as rr,Button as AI,createStyles as MI,Divider as FI,Group as ct,NativeSelect as Wa,Stack as ar,Text as wI,TextInput as OI}from"@mantine/core";import{formatRange as is,getCodeBySystem as EI}from"@medplum/core";import z,{useEffect as LI,useState as Xa}from"react";var RI=MI(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"}})),NI=["gender","age","gestationalAge","context","appliesTo","category"],HI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function bw(e){e=Object.assign(HI,e);let o=e.definition,[t,r]=Xa([]),[a,n]=Xa(1),[f,l]=Xa(1);return LI(()=>{let y=UI(o,l);r(GI(y.qualifiedInterval||[],n))},[o]),z.createElement($,{testid:"reference-range-editor",onSubmit:s},z.createElement(ar,null,t.map(y=>z.createElement(VI,{unit:zI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:g,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(rr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(xo,null)),z.createElement(ct,{position:"right"},z.createElement(AI,{type:"submit"},"Save")));function s(){let y=t.flatMap(A=>A.intervals).filter(A=>!WI(A));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(A=>[...A,y])}function u(y){r(A=>A.filter(v=>v.id!==y.id))}function d(y,A){r(v=>{v=[...v];let B=v.find(H=>H.id===y),I=B?.intervals.findIndex(H=>H.id===A.id);return I!==void 0&&B?.intervals[I]&&(B.intervals[I]=A),v})}function c(y,A){A.id===void 0&&(A.id=`id-${f}`,l(v=>v+1)),r(v=>{v=[...v];let B=v.findIndex(I=>I.id===y);if(B!==-1){let I={...v[B]};A={...A,...I.filters},I.intervals=[...I.intervals,A],v[B]=I}return v})}function g(y,A){r(v=>{v=[...v];let B=v.find(I=>I.id===y);return B&&(B.intervals=B.intervals.filter(I=>I.id!==A.id)),v})}}function VI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=RI();return z.createElement(Ke,{"data-testid":o.id,className:r.section},z.createElement(ar,{spacing:"lg"},z.createElement(ct,{position:"right"},z.createElement(rr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{N(a),e.onRemoveGroup(o)}},z.createElement(ze,null))),z.createElement(qI,{intervalGroup:o,onChange:e.onChange}),z.createElement(FI,null),o.intervals.map(a=>z.createElement(ar,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ct,null,z.createElement(OI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{N(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(rr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{N(n),e.onRemove(o.id,a)}},z.createElement(ze,null))),z.createElement(rt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(rr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(xo,null))))}function qI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(ar,{style:{maxWidth:"50%"}},z.createElement(ct,null,z.createElement(Wa,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(ct,{spacing:"xs"},z.createElement(wI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(rt,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Wa,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(Wa,{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 UI(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 GI(e,o){let t=1,r={};for(let a of e){let n=QI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(NI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function QI(e){return[`gender=${e.gender}`,`age=${is(e.age)}`,`gestationalAge=${is(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function zI(e){return e&&(EI(e,"http://unitsofmeasure.org")||e.text)}function WI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as us,Grid as nr,Text as XI}from"@mantine/core";import{formatDateTime as JI,getReferenceString as $I}from"@medplum/core";import he,{useEffect as KI,useState as ds}from"react";function Ow(e){let o=P(),t=X(e.value),[r,a]=ds(!1),[n,f]=ds();if(KI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return he.createElement(nr,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,g=d?.output?.[0]?.valueReference;return he.createElement(he.Fragment,{key:`action-${u}`},he.createElement(nr.Col,{span:1,p:"md"},d?.status==="completed"?he.createElement(Pr,null):he.createElement(Gr,{color:"gray"})),he.createElement(nr.Col,{span:9,p:"xs"},he.createElement(XI,{weight:500},i.title),i.description&&he.createElement("div",null,i.description),he.createElement("div",null,"Last edited by\xA0",he.createElement(Re,{value:d?.meta?.author}),"\xA0on\xA0",JI(d?.meta?.lastUpdated)),he.createElement("div",null,"Status: ",he.createElement(Vt,{status:d?.status||"unknown"}))),he.createElement(nr.Col,{span:2,p:"md"},c&&!g&&he.createElement(us,{onClick:()=>e.onStart(d,c)},"Start"),c&&g&&he.createElement(us,{onClick:()=>e.onEdit(d,c,g)},"Edit")))}));function l(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===$I(u.resource))return u.resource}}import{createStyles as tg}from"@mantine/core";import be,{useEffect as rg,useState as ag}from"react";import{stringify as YI}from"@medplum/core";function fr(e,o){let t=jI(e,o);return _I(t,e,o)}function jI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,d=u+1,c=u-1,g=l[d],y=l[c],A,v=0;i===-s||i!==s&&y.i<g.i?(v=g.i,A=g):(v=y.i+1,A=y),l[c]=void 0;let B=v-i,I={i:v,j:B,prev:ZI(A),snake:!1};for(;v<t&&B<r&&e[v]===o[B];)v++,B++;if(v>I.i&&(I={i:v,j:B,prev:I,snake:!0}),l[u]=I,v>=t&&B>=r)return l[u]}l[f+s-1]=void 0}}function _I(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function ZI(e){return e&&!e.snake&&e.prev?e.prev:e}function cs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:YI(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 eg(t,o),og(t),t}function eg(e,o){for(let t=1;t<o.length;t++){let r=fr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,l=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let s=0;s<a.revised.lines.length;s++)e.splice(n+s,0,{id:o[t].meta.versionId,meta:o[t].meta,value:l[s],span:1})}}}function og(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var ng=tg(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function Ww(e){let{classes:o}=ng(),t=P(),[r,a]=ag(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 be.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=cs(r);return be.createElement("div",{className:o.container},be.createElement("table",{className:o.root},be.createElement("tbody",null,f.map((l,s)=>be.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&be.createElement(be.Fragment,null,be.createElement("td",{className:o.author,rowSpan:l.span},be.createElement(je,{value:l.meta.author,link:!0})),be.createElement("td",{className:o.dateTime,rowSpan:l.span},be.createElement(se,{to:fg(n,l.meta.versionId)},lg(l.meta.lastUpdated)))),be.createElement("td",{className:o.lineNumber},s+1),be.createElement("td",{className:o.line},be.createElement("pre",{className:o.pre},l.value)))))))}function fg(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function lg(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Vo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Vo(r,"month");let a=Math.floor(o/86400);if(a>0)return Vo(a,"day");let n=Math.floor(o/3600);if(n>0)return Vo(n,"hour");let f=Math.floor(o/60);return f>0?Vo(f,"minute"):Vo(o,"second")}function Vo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as sg}from"@mantine/core";import{stringify as ms}from"@medplum/core";import to from"react";var ig=sg(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Zw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=ms(o,!0).match(/[^\r\n]+/g),a=ms(t,!0).match(/[^\r\n]+/g),n=fr(r,a);return to.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>to.createElement(ug,{key:"delta"+l,delta:f})))}function ug(e){let{classes:o}=ig();return to.createElement(to.Fragment,null,"...",to.createElement("br",null),e.delta.original.lines.length>0&&to.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
66
|
+
`)),e.delta.revised.lines.length>0&&to.createElement("div",{className:o.added},e.delta.revised.lines.join(`
|
|
67
|
+
`)),"...",to.createElement("br",null))}import{Table as dg}from"@mantine/core";import{formatDateTime as cg,normalizeErrorString as mg}from"@medplum/core";import ce,{useEffect as pg,useState as xg}from"react";function fO(e){let o=P(),[t,r]=xg(e.history);return pg(()=>{!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(dg,{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(Ig,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Ig(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(je,{value:t.meta?.author,link:!0})),ce.createElement("td",null,cg(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:gg(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},mg(o?.outcome)))}function gg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as hg,createStyles as yg,Stack as Cg,Text as vg}from"@mantine/core";import{getReferenceString as Sg}from"@medplum/core";import ee,{useEffect as bg,useRef as Pg,useState as mt}from"react";var Dg=yg(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function gO(e){let{classes:o}=Dg(),t=P(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=mt(),l=Pg();l.current=n;let[s,i]=mt(da()),[u,d]=mt(),[c,g]=mt(),[y,A]=mt();if(bg(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Sg(r)],["start","gt"+kg(s)],["start","lt"+Tg(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let v=r.actor?.[0];return ee.createElement("div",{className:o.container,"data-testid":"scheduler"},ee.createElement("div",{className:o.info},v&&ee.createElement(Ce,{value:v,size:"xl"}),v&&ee.createElement(vg,{size:"xl",weight:500},ee.createElement(Re,{value:v})),ee.createElement("p",null,"1 hour"),u&&ee.createElement("p",null,u.toLocaleDateString()),c&&ee.createElement("p",null,ps(new Date(c.start)))),ee.createElement("div",{className:o.selection},!u&&ee.createElement("div",null,ee.createElement("h3",null,"Select date"),ee.createElement(Of,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(Cg,null,n.map(B=>{let I=new Date(B.start);return I.getTime()>u.getTime()&&I.getTime()<u.getTime()+24*3600*1e3&&ee.createElement("div",{key:B.id},ee.createElement(hg,{variant:"outline",style:{width:150},onClick:()=>g(B)},ps(I)))}))),u&&c&&!y&&ee.createElement(ns,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&y&&ee.createElement("div",null,ee.createElement("h3",null,"You're all set!"),ee.createElement("p",null,"Check your email for a calendar invite."))))}function kg(e){return xs(e.getTime())}function Tg(e){return xs(e.getTime()+31*24*60*60*1e3)}function xs(e){return new Date(Math.max(Date.now(),e)).toISOString()}function ps(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as lr}from"@medplum/core";import Bg from"react";function PO(e){return Bg.createElement(Ze,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[lr(o)],subject:o.subject,sender:lr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[lr(o)],subject:o.subject,operator:lr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Kg}from"@medplum/core";import mr,{useEffect as jg,useState as bs}from"react";import{Anchor as Is,Button as Ag,Center as Mg,Group as Fg,Stack as wg,Text as Og,TextInput as Eg,Title as Lg}from"@mantine/core";import{normalizeOperationOutcome as Rg}from"@medplum/core";import we,{useState as Ng}from"react";function sr(e){let o=P(),[t,r]=Ng();return we.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(Rg(n))}}},we.createElement(Mg,{sx:{flexDirection:"column"}},we.createElement(Ye,{size:32}),we.createElement(Lg,null,"Create project")),we.createElement(wg,{spacing:"xl"},we.createElement(Eg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:Ie(t,"firstName")}),we.createElement(Og,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",we.createElement(Is,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",we.createElement(Is,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),we.createElement(Fg,{position:"right",mt:"xl",noWrap:!0},we.createElement(Ag,{type:"submit"},"Create project")))}import{Anchor as cr,Button as Ug,Center as Gg,Checkbox as Qg,Divider as zg,Group as ys,PasswordInput as Wg,Stack as Xg,Text as Cs,TextInput as $a}from"@mantine/core";import{normalizeOperationOutcome as vs}from"@medplum/core";import _,{useEffect as Jg,useState as $g}from"react";import Hg,{useEffect as Vg,useRef as qg,useState as Ja}from"react";function ir(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function ur(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=qg(null),[n,f]=Ja(typeof google<"u"),[l,s]=Ja(!1),[i,u]=Ja(!1);return Vg(()=>{if(typeof google>"u"){ir("https://accounts.google.com/gsi/client",()=>f(!0));return}l||(google.accounts.id.initialize({client_id:t,callback:r}),s(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,l,n,a,i,r]),t?Hg.createElement("div",{ref:a}):null}function dr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function gs(e){typeof grecaptcha>"u"&&ir("https://www.google.com/recaptcha/api.js?render="+e)}function hs(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function Ss(e){let o=dr(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=$g(),f=Ft(a,void 0);return Jg(()=>{t&&gs(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await hs(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:l.firstName,lastName:l.lastName,email:l.email,password:l.password,remember:l.remember==="true",recaptchaSiteKey:t,recaptchaToken:s}))}catch(s){n(vs(s))}}},_.createElement(Gg,{sx:{flexDirection:"column"}},e.children),_.createElement(Ro,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(ys,{position:"center",p:"xl",style:{height:70}},_.createElement(ur,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(vs(s))}}})),_.createElement(zg,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Xg,{spacing:"xl"},_.createElement($a,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:Ie(a,"firstName")}),_.createElement($a,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:Ie(a,"lastName")}),_.createElement($a,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:Ie(a,"email")}),_.createElement(Wg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:Ie(a,"password")}),_.createElement(Cs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(cr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(Cs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(cr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(ys,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Qg,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Ug,{type:"submit"},"Create account")))}function l0(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=P(),[s,i]=bs(void 0),[u,d]=bs();jg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(g=>l.processCode(g.code)).then(()=>f()).catch(g=>d(Kg(g)))},[l,o,t,s,f]);function c(g){g.code?l.processCode(g.code).then(()=>f()).catch(console.log):g.login&&i(g.login)}return mr.createElement(Gt,{width:450},u&&mr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&mr.createElement(Ss,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&mr.createElement(sr,{login:s,handleAuthResponse:c}))}import{showNotification as Ls}from"@mantine/notifications";import{normalizeErrorString as Rs}from"@medplum/core";import po,{useCallback as ja,useEffect as kh,useState as _a}from"react";import{Anchor as Ps,Button as Ds,Center as ks,Checkbox as _g,Divider as Zg,Group as Ka,PasswordInput as Yg,Stack as eh,TextInput as oh}from"@mantine/core";import{normalizeOperationOutcome as th}from"@medplum/core";import j,{useCallback as pr,useState as Ts}from"react";function Bs(e){let[o,t]=Ts();return o?j.createElement(ah,{email:o,...e}):j.createElement(rh,{setEmail:t,...e})}function rh(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=P(),s=!e.disableGoogleAuth&&dr(e.googleClientId),i=pr(async c=>{if(!c.authorizeUrl)return!1;let g=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",g),window.location.assign(y.toString()),!0},[l,f]),u=pr(async c=>{let g=await l.post("auth/method",{email:c.email});await i(g)||o(c.email)},[l,i,o]),d=pr(async c=>{let g=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(g)||r(g)},[l,f,i,r]);return j.createElement($,{style:{maxWidth:400},onSubmit:u},j.createElement(ks,{sx:{flexDirection:"column"}},a),s&&j.createElement(j.Fragment,null,j.createElement(Ka,{position:"center",p:"xl",style:{height:70}},j.createElement(ur,{googleClientId:s,handleGoogleCredential:d})),!n&&j.createElement(Zg,{label:"or",labelPosition:"center",my:"lg"})),!n&&j.createElement(oh,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),j.createElement(Ka,{position:"apart",mt:"xl",spacing:0,noWrap:!0},j.createElement("div",null,t&&j.createElement(Ps,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&j.createElement(Ds,{type:"submit"},"Next")))}function ah(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,l]=Ts(),s=Ft(f,void 0),i=pr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(th(d)))},[n,a,t]);return j.createElement($,{style:{maxWidth:400},onSubmit:i},j.createElement(ks,{sx:{flexDirection:"column"}},r),j.createElement(Ro,{issues:s}),j.createElement(eh,{spacing:"xl"},j.createElement(Yg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:Ie(f,"password")})),j.createElement(Ka,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&j.createElement(Ps,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),j.createElement(_g,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),j.createElement(Ds,{type:"submit"},"Sign in")))}import{Avatar as nh,Center as fh,Group as lh,Stack as sh,Text as As,Title as ih,UnstyledButton as uh}from"@mantine/core";import{normalizeOperationOutcome as dh}from"@medplum/core";import Oe,{useState as ch}from"react";function Ms(e){let o=P(),[t,r]=ch();return Oe.createElement(sh,null,Oe.createElement(fh,{sx:{flexDirection:"column"}},Oe.createElement(Ye,{size:32}),Oe.createElement(ih,{order:3},"Choose profile")),Oe.createElement(Ro,{outcome:t}),e.memberships.map(a=>Oe.createElement(uh,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(dh(n)))}},Oe.createElement(lh,null,Oe.createElement(nh,{radius:"xl"}),Oe.createElement("div",{style:{flex:1}},Oe.createElement(As,{size:"sm",weight:500},a.profile?.display),Oe.createElement(As,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as mh,Center as ph,Checkbox as xh,Group as Ih,Stack as Fs,Title as gh}from"@mantine/core";import Ue from"react";function ws(e){let o=P();return Ue.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ue.createElement(Fs,null,Ue.createElement(ph,{sx:{flexDirection:"column"}},Ue.createElement(Ye,{size:32}),Ue.createElement(gh,null,"Choose scope")),Ue.createElement(Fs,null,(e.scope??"openid").split(" ").map(t=>Ue.createElement(xh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ue.createElement(Ih,{position:"right",mt:"xl"},Ue.createElement(mh,{type:"submit"},"Set scope"))))}import{Alert as hh,Button as yh,Center as Ch,Group as vh,Stack as Os,TextInput as Sh,Title as bh}from"@mantine/core";import{normalizeErrorString as Ph}from"@medplum/core";import Ee,{useState as Dh}from"react";function Es(e){let o=P(),[t,r]=Dh(void 0);return Ee.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(Ph(n)))}},Ee.createElement(Os,null,Ee.createElement(Ch,{sx:{flexDirection:"column"}},Ee.createElement(Ye,{size:32}),Ee.createElement(bh,null,"Enter MFA code")),t&&Ee.createElement(hh,{icon:Ee.createElement(no,{size:16}),title:"Error",color:"red"},t),Ee.createElement(Os,null,Ee.createElement(Sh,{name:"token",label:"MFA code",required:!0})),Ee.createElement(vh,{position:"right",mt:"xl"},Ee.createElement(yh,{type:"submit"},"Submit code"))))}function r1(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=P(),[i,u]=_a(void 0),[d,c]=_a(!1),[g,y]=_a(void 0),A=ja(I=>{f?f(I):s.processCode(I).then(()=>{r&&r()}).catch(H=>Ls({color:"red",message:Rs(H)}))},[s,f,r]),v=ja(I=>{c(!!I.mfaRequired),I.login&&u(I.login),I.memberships&&y(I.memberships),I.code&&(t?y(void 0):A(I.code))},[t,A]),B=ja(I=>{A(I.code)},[A]);return kh(()=>{o&&!i&&s.get("auth/login/"+o).then(v).catch(I=>Ls({color:"red",message:Rs(I)}))},[s,o,i,v]),po.createElement(Gt,{width:450},(()=>i?d?po.createElement(Es,{login:i,handleAuthResponse:v}):g?po.createElement(Ms,{login:i,memberships:g,handleAuthResponse:v}):e.projectId==="new"?po.createElement(sr,{login:i,handleAuthResponse:v}):e.chooseScopes?po.createElement(ws,{login:i,scope:e.scope,handleAuthResponse:B}):po.createElement("div",null,"Success"):po.createElement(Bs,{onForgotPassword:a,onRegister:n,handleAuthResponse:v,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Ya as AddressDisplay,rn as AddressInput,fn as AnnotationInput,db as AppShell,bo as AsyncAutocomplete,Rn as AttachmentArrayDisplay,Hn as AttachmentArrayInput,Po as AttachmentButton,Le as AttachmentDisplay,bt as AttachmentInput,Yo as BackboneElementDisplay,tt as BackboneElementInput,Of as CalendarInput,Mt as CheckboxFormSection,St as CodeInput,ko as CodeableConceptDisplay,af as CodeableConceptInput,zn as CodingDisplay,nf as CodingInput,Xn as ContactDetailDisplay,lf as ContactDetailInput,Dt as ContactPointDisplay,Ot as ContactPointInput,Ke as Container,Fe as DateTimeInput,jB as DefaultResourceTimeline,qn as DescriptionList,Un as DescriptionListEntry,xa as DiagnosticReportDisplay,Gt as Document,Rc as ElementDefinitionInputSelector,Mf as ElementDefinitionTypeInput,sA as EncounterTimeline,yo as ErrorBoundary,hx as FhirPathTable,$ as Form,De as FormSection,Mn as Header,yt as HumanNameDisplay,df as HumanNameInput,Jn as IdentifierDisplay,mf as IdentifierInput,Jr as Loading,Ye as Logo,se as MedplumLink,Lh as MedplumProvider,JM as MemoizedFhirPathTable,RM as MemoizedSearchControl,Kn as MoneyDisplay,pf as MoneyInput,Ln as Navbar,Cm as ObservationTable,Ro as OperationOutcomeAlert,Mo as Panel,fF as PatientTimeline,bF as PlanDefinitionBuilder,Zo as QuantityDisplay,ke as QuantityInput,ow as QuestionnaireBuilder,ns as QuestionnaireForm,Na as QuestionnaireItemType,ts as QuestionnaireRepeatWrapper,kt as RangeDisplay,rt as RangeInput,lo as ReferenceDisplay,Bo as ReferenceInput,bw as ReferenceRangeEditor,VI as ReferenceRangeGroupEditor,l0 as RegisterForm,Ow as RequestGroupDisplay,Yn as ResourceArrayDisplay,Pf as ResourceArrayInput,Ce as ResourceAvatar,je as ResourceBadge,Ww as ResourceBlame,Zw as ResourceDiff,iD as ResourceForm,fO as ResourceHistoryTable,Rt as ResourceInput,Re as ResourceName,xe as ResourcePropertyDisplay,Ve as ResourcePropertyInput,Ia as ResourceTable,Ze as ResourceTimeline,gO as Scheduler,Ma as SearchChangeEvent,co as SearchClickEvent,sx as SearchControl,yl as SearchFieldEditor,Dl as SearchFilterEditor,Fa as SearchLoadEvent,PO as ServiceRequestTimeline,r1 as SignInForm,Vt as StatusBadge,Xf as Timeline,_e as TimelineItem,Af as TimingInput,Sa as addDateFilterBetween,DA as addField,Oo as addFilter,il as addLastMonthFilter,ba as addMissingFilter,dl as addNextMonthFilter,ul as addThisMonthFilter,ll as addTodayFilter,sl as addTomorrowFilter,cl as addYearToDateFilter,fl as addYesterdayFilter,Se as buildFieldNameString,PA as clearFilters,Wt as clearFiltersOnField,wd as convertIsoToLocal,Od as convertLocalToIso,ir as createScriptTag,nl as deleteFilter,Ie as getErrorsForInput,Ft as getIssuesForExpression,Wc as getMonthString,ft as getOpString,hs as getRecaptcha,Il as getSearchOperators,pl as getSortField,da as getStartMonth,lg as getTimeString,Pe as getValueAndType,gs as initRecaptcha,Ql as isChoiceQuestion,zl as isQuestionEnabled,xl as isSortDescending,Fn as parseForm,gl as renderValue,nt as setFilters,Cp as setOffset,ml as setPage,ot as setPropertyValue,Pa as setSort,Kf as sortByDateAndPriority,kA as toggleSort,P as useMedplum,zo as useMedplumContext,Qe as useMedplumNavigate,xt as useMedplumProfile,X as useResource};
|
|
68
68
|
//# sourceMappingURL=index.mjs.map
|