@medplum/react 2.1.8 → 2.1.10
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/README.md +7 -9
- package/api-extractor.json +3 -0
- package/dist/cjs/index.cjs +4 -4
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/esm/index.mjs +4 -4
- package/dist/esm/index.mjs.map +4 -4
- package/dist/types.d.ts +1371 -0
- package/package.json +5 -4
- package/dist/types/AddressDisplay/AddressDisplay.d.ts +0 -6
- package/dist/types/AddressInput/AddressInput.d.ts +0 -8
- package/dist/types/AnnotationInput/AnnotationInput.d.ts +0 -8
- package/dist/types/AppShell/AppShell.d.ts +0 -14
- package/dist/types/AppShell/Header.d.ts +0 -11
- package/dist/types/AppShell/HeaderSearchInput.d.ts +0 -8
- package/dist/types/AppShell/Navbar.d.ts +0 -19
- package/dist/types/AsyncAutocomplete/AsyncAutocomplete.d.ts +0 -15
- package/dist/types/AttachmentArrayDisplay/AttachmentArrayDisplay.d.ts +0 -7
- package/dist/types/AttachmentArrayInput/AttachmentArrayInput.d.ts +0 -9
- package/dist/types/AttachmentButton/AttachmentButton.d.ts +0 -11
- package/dist/types/AttachmentDisplay/AttachmentDisplay.d.ts +0 -7
- package/dist/types/AttachmentInput/AttachmentInput.d.ts +0 -9
- package/dist/types/BackboneElementDisplay/BackboneElementDisplay.d.ts +0 -9
- package/dist/types/BackboneElementInput/BackboneElementInput.d.ts +0 -9
- package/dist/types/BookmarkDialog/BookmarkDialog.d.ts +0 -11
- package/dist/types/CalendarInput/CalendarInput.d.ts +0 -8
- package/dist/types/CalendarInput/CalendarInput.utils.d.ts +0 -7
- package/dist/types/CheckboxFormSection/CheckboxFormSection.d.ts +0 -9
- package/dist/types/CodeInput/CodeInput.d.ts +0 -13
- package/dist/types/CodeableConceptDisplay/CodeableConceptDisplay.d.ts +0 -6
- package/dist/types/CodeableConceptInput/CodeableConceptInput.d.ts +0 -10
- package/dist/types/CodingDisplay/CodingDisplay.d.ts +0 -6
- package/dist/types/CodingInput/CodingInput.d.ts +0 -10
- package/dist/types/ContactDetailDisplay/ContactDetailDisplay.d.ts +0 -6
- package/dist/types/ContactDetailInput/ContactDetailInput.d.ts +0 -8
- package/dist/types/ContactPointDisplay/ContactPointDisplay.d.ts +0 -6
- package/dist/types/ContactPointInput/ContactPointInput.d.ts +0 -8
- package/dist/types/Container/Container.d.ts +0 -3
- package/dist/types/DateTimeInput/DateTimeInput.d.ts +0 -20
- package/dist/types/DateTimeInput/DateTimeInput.utils.d.ts +0 -12
- package/dist/types/DefaultResourceTimeline/DefaultResourceTimeline.d.ts +0 -6
- package/dist/types/DescriptionList/DescriptionList.d.ts +0 -11
- package/dist/types/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +0 -17
- package/dist/types/Document/Document.d.ts +0 -3
- package/dist/types/EncounterTimeline/EncounterTimeline.d.ts +0 -6
- package/dist/types/ErrorBoundary/ErrorBoundary.d.ts +0 -18
- package/dist/types/ExtensionInput/ExtensionInput.d.ts +0 -8
- package/dist/types/FhirPathDisplay/FhirPathDisplay.d.ts +0 -8
- package/dist/types/FhirPathTable/FhirPathTable.d.ts +0 -29
- package/dist/types/Form/Form.d.ts +0 -8
- package/dist/types/Form/FormUtils.d.ts +0 -6
- package/dist/types/FormSection/FormSection.d.ts +0 -11
- package/dist/types/GoogleButton/GoogleButton.d.ts +0 -7
- package/dist/types/GoogleButton/GoogleButton.utils.d.ts +0 -1
- package/dist/types/HumanNameDisplay/HumanNameDisplay.d.ts +0 -8
- package/dist/types/HumanNameInput/HumanNameInput.d.ts +0 -8
- package/dist/types/IdentifierDisplay/IdentifierDisplay.d.ts +0 -6
- package/dist/types/IdentifierInput/IdentifierInput.d.ts +0 -8
- package/dist/types/Loading/Loading.d.ts +0 -2
- package/dist/types/Logo/Logo.d.ts +0 -6
- package/dist/types/MedplumLink/MedplumLink.d.ts +0 -11
- package/dist/types/MedplumProvider/MedplumProvider.context.d.ts +0 -32
- package/dist/types/MedplumProvider/MedplumProvider.d.ts +0 -18
- package/dist/types/MoneyDisplay/MoneyDisplay.d.ts +0 -6
- package/dist/types/MoneyInput/MoneyInput.d.ts +0 -10
- package/dist/types/NoteDisplay/NoteDisplay.d.ts +0 -6
- package/dist/types/OperationOutcomeAlert/OperationOutcomeAlert.d.ts +0 -7
- package/dist/types/Panel/Panel.d.ts +0 -11
- package/dist/types/PatientTimeline/PatientTimeline.d.ts +0 -6
- package/dist/types/PeriodInput/PeriodInput.d.ts +0 -8
- package/dist/types/PlanDefinitionBuilder/PlanDefinitionBuilder.d.ts +0 -7
- package/dist/types/QuantityDisplay/QuantityDisplay.d.ts +0 -6
- package/dist/types/QuantityInput/QuantityInput.d.ts +0 -11
- package/dist/types/QuestionnaireBuilder/QuestionnaireBuilder.d.ts +0 -7
- package/dist/types/QuestionnaireForm/QuestionnaireForm.d.ts +0 -17
- package/dist/types/QuestionnaireForm/QuestionnaireFormItem/QuestionnaireFormItem.d.ts +0 -11
- package/dist/types/RangeDisplay/RangeDisplay.d.ts +0 -6
- package/dist/types/RangeInput/RangeInput.d.ts +0 -14
- package/dist/types/RatioDisplay/RatioDisplay.d.ts +0 -6
- package/dist/types/RatioInput/RatioInput.d.ts +0 -14
- package/dist/types/ReferenceDisplay/ReferenceDisplay.d.ts +0 -7
- package/dist/types/ReferenceInput/ReferenceInput.d.ts +0 -12
- package/dist/types/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +0 -26
- package/dist/types/RequestGroupDisplay/RequestGroupDisplay.d.ts +0 -8
- package/dist/types/ResourceArrayDisplay/ResourceArrayDisplay.d.ts +0 -11
- package/dist/types/ResourceArrayInput/ResourceArrayInput.d.ts +0 -11
- package/dist/types/ResourceAvatar/ResourceAvatar.d.ts +0 -8
- package/dist/types/ResourceBadge/ResourceBadge.d.ts +0 -7
- package/dist/types/ResourceBlame/ResourceBlame.d.ts +0 -8
- package/dist/types/ResourceBlame/ResourceBlame.utils.d.ts +0 -3
- package/dist/types/ResourceDiff/ResourceDiff.d.ts +0 -8
- package/dist/types/ResourceDiffTable/ResourceDiffTable.d.ts +0 -7
- package/dist/types/ResourceForm/ResourceForm.d.ts +0 -9
- package/dist/types/ResourceForm/ResourceForm.utils.d.ts +0 -2
- package/dist/types/ResourceHistoryTable/ResourceHistoryTable.d.ts +0 -8
- package/dist/types/ResourceInput/ResourceInput.d.ts +0 -12
- package/dist/types/ResourceName/ResourceName.d.ts +0 -8
- package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts +0 -17
- package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.utils.d.ts +0 -12
- package/dist/types/ResourcePropertyInput/ResourcePropertyInput.d.ts +0 -21
- package/dist/types/ResourceTable/ResourceTable.d.ts +0 -20
- package/dist/types/ResourceTimeline/ResourceTimeline.d.ts +0 -10
- package/dist/types/ResourceTypeInput/ResourceTypeInput.d.ts +0 -12
- package/dist/types/Scheduler/Scheduler.d.ts +0 -7
- package/dist/types/SearchControl/SearchControl.d.ts +0 -43
- package/dist/types/SearchControl/SearchControlField.d.ts +0 -40
- package/dist/types/SearchControl/SearchUtils.d.ts +0 -173
- package/dist/types/SearchExportDialog/SearchExportDialog.d.ts +0 -15
- package/dist/types/SearchFieldEditor/SearchFieldEditor.d.ts +0 -10
- package/dist/types/SearchFilterEditor/SearchFilterEditor.d.ts +0 -9
- package/dist/types/SearchFilterValueDialog/SearchFilterValueDialog.d.ts +0 -14
- package/dist/types/SearchFilterValueDisplay/SearchFilterValueDisplay.d.ts +0 -7
- package/dist/types/SearchFilterValueInput/SearchFilterValueInput.d.ts +0 -10
- package/dist/types/SearchPopupMenu/SearchPopupMenu.d.ts +0 -10
- package/dist/types/ServiceRequestTimeline/ServiceRequestTimeline.d.ts +0 -6
- package/dist/types/StatusBadge/StatusBadge.d.ts +0 -5
- package/dist/types/Timeline/Timeline.d.ts +0 -15
- package/dist/types/TimingInput/TimingInput.d.ts +0 -8
- package/dist/types/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +0 -15
- package/dist/types/auth/AuthenticationForm.d.ts +0 -27
- package/dist/types/auth/ChooseProfileForm.d.ts +0 -9
- package/dist/types/auth/ChooseScopeForm.d.ts +0 -8
- package/dist/types/auth/MfaForm.d.ts +0 -7
- package/dist/types/auth/NewProjectForm.d.ts +0 -7
- package/dist/types/auth/NewUserForm.d.ts +0 -11
- package/dist/types/auth/RegisterForm.d.ts +0 -11
- package/dist/types/auth/SignInForm.d.ts +0 -26
- package/dist/types/constants.d.ts +0 -1
- package/dist/types/index.d.ts +0 -95
- package/dist/types/stories/covid19.d.ts +0 -15
- package/dist/types/stories/healthgorilla.d.ts +0 -6
- package/dist/types/stories/referenceLab.d.ts +0 -6
- package/dist/types/test.setup.d.ts +0 -1
- package/dist/types/useResource/useResource.d.ts +0 -9
- package/dist/types/useSearch/useSearch.d.ts +0 -32
- package/dist/types/utils/blame.d.ts +0 -8
- package/dist/types/utils/date.d.ts +0 -7
- package/dist/types/utils/diff.d.ts +0 -16
- package/dist/types/utils/dom.d.ts +0 -15
- package/dist/types/utils/outcomes.d.ts +0 -3
- package/dist/types/utils/questionnaire.d.ts +0 -25
- package/dist/types/utils/recaptcha.d.ts +0 -12
- package/dist/types/utils/script.d.ts +0 -6
package/dist/esm/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{formatAddress as Ys}from"@medplum/core";import un from"react";function dn(e){let o=e.value;return o?un.createElement(un.Fragment,null,Ys(o)):null}import{Group as ei,NativeSelect as cn,TextInput as Uo}from"@mantine/core";import Qe,{useRef as oi,useState as ti}from"react";function mn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function pn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function xn(e){let[o,t]=ti(e.defaultValue||{}),r=oi();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function s(c){a(pn(r.current||{},0,c))}function l(c){a(pn(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Qe.createElement(ei,{spacing:"xs",grow:!0,noWrap:!0},Qe.createElement(cn,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Qe.createElement(cn,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Qe.createElement(Uo,{placeholder:"Line 1",defaultValue:mn(o,0),onChange:c=>s(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"Line 2",defaultValue:mn(o,1),onChange:c=>l(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as ni}from"@mantine/core";import{createReference as fi}from"@medplum/core";import li,{useRef as si,useState as ii}from"react";import{createContext as ri,useContext as ai}from"react";var hr=ri(void 0);function Qo(){return ai(hr)}function v(){return Qo().medplum}function ze(){return Qo().navigate}function mt(){return Qo().profile}function In(e){let o=mt(),[t,r]=ii(e.defaultValue||{}),a=si();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&fi(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return li.createElement(ni,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Qu,useMantineTheme as zu}from"@mantine/core";import ao,{Suspense as Wu,useState as Xu}from"react";import{Alert as Ii}from"@mantine/core";import{normalizeErrorString as gi}from"@medplum/core";import{forwardRef as ui,createElement as hn}from"react";import to from"prop-types";var gn={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 di=Object.defineProperty,ci=Object.defineProperties,mi=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,vn=Object.prototype.hasOwnProperty,Sn=Object.prototype.propertyIsEnumerable,Cn=(e,o,t)=>o in e?di(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,yn=(e,o)=>{for(var t in o||(o={}))vn.call(o,t)&&Cn(e,t,o[t]);if(pt)for(var t of pt(o))Sn.call(o,t)&&Cn(e,t,o[t]);return e},pi=(e,o)=>ci(e,mi(o)),xi=(e,o)=>{var t={};for(var r in e)vn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&Sn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=ui((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=xi(f,["color","size","stroke","children"]);return hn("svg",yn(pi(yn({ref:n},gn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,x])=>hn(c,x)),...u||[]])});return r.propTypes={color:to.string,size:to.oneOfType([to.string,to.number]),stroke:to.oneOfType([to.string,to.number])},r.displayName=`${o}`,r};var Cr=p("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var ro=p("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var yr=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var vr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var Sr=p("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var br=p("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Pr=p("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var Tr=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 Dr=p("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var kr=p("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ne=p("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var zo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Br=p("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Ar=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var We=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Wo=p("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var Fr=p("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Mr=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var wr=p("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Or=p("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Er=p("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var xo=p("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Lr=p("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Rr=p("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Nr=p("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Hr=p("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Vr=p("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var xt=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var It=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var qr=p("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Gr=p("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Ur=p("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Qr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var zr=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Wr=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=p("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Xo=p("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jo=p("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Xr=p("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Jr=p("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Kr=p("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var 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 $r=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import jr from"react";var ho=class extends jr.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?jr.createElement(Ii,{icon:jr.createElement(ro,{size:16}),title:"Something went wrong",color:"red"},gi(this.state.error)):this.props.children}};import{Center as hi,Loader as Ci}from"@mantine/core";import bn from"react";function _r(){return bn.createElement(hi,{style:{width:"100%",height:"100vh"}},bn.createElement(Ci,null))}import{Avatar as tu,createStyles as ru,Group as Ct,Header as au,Menu as He,Stack as nu,Text as $o,UnstyledButton as Nn}from"@mantine/core";import{formatHumanName as fu,getReferenceString as Hn}from"@medplum/core";import U,{useState as lu}from"react";import{formatHumanName as yi}from"@medplum/core";import Pn from"react";function gt(e){let o=e.value;return o?Pn.createElement(Pn.Fragment,null,yi(o,e.options)):null}import{Avatar as An}from"@mantine/core";import{getDisplayString as Ei,getImageSrc as Li}from"@medplum/core";import Zr from"react";import{Anchor as vi}from"@mantine/core";import{isReference as Si,isResource as bi}from"@medplum/core";import Pi from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(Tn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&Tn(o[0]))return!0}return!1}function Tn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=ze(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Ti(t);return r&&(l+="/"+r),Pi.createElement(vi,{href:l,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(l)},...s},f)}function Ti(e){if(e){if(typeof e=="string")return Di(e);if(bi(e))return ki(e);if(Si(e))return Bi(e)}return"#"}function Di(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ki(e){return`/${e.resourceType}/${e.id}`}function Bi(e){return`/${e.reference}`}import{deepEquals as Ai,isReference as Bn,isResource as Fi,normalizeOperationOutcome as Mi}from"@medplum/core";import{useCallback as wi,useEffect as Dn,useState as Oi}from"react";function X(e,o){let t=v(),[r,a]=Oi(kn(t,e)),n=wi(f=>{Ai(f,r)||a(f)},[r,a]);return Dn(()=>{n(kn(t,e))},[t,e,n]),Dn(()=>{let f=!0;return Bn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(Mi(s)))}),()=>f=!1},[t,r,e,n,o]),r}function kn(e,o){if(o){if(Fi(o))return o;if(Bn(o))return e.getCachedReference(o)}}function ge(e){let o=X(e.value),t=o?Ei(o):e.alt??"",r=(o&&Li(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Zr.createElement(se,{to:o},Zr.createElement(An,{src:r,alt:t,radius:a,...n})):Zr.createElement(An,{src:r,alt:t,radius:a,...n})}import{createStyles as Ui,Group as Qi,Text as Mn}from"@mantine/core";import{formatHumanName as zi,getDisplayString as Ln,getReferenceString as Wi,isUUID as Xi}from"@medplum/core";import Xe,{forwardRef as Ji,useCallback as wn}from"react";import{Loader as Ri,MultiSelect as Ni}from"@mantine/core";import{showNotification as Hi}from"@mantine/notifications";import{normalizeErrorString as Vi}from"@medplum/core";import Fn,{useCallback as Co,useEffect as qi,useRef as yo,useState as vo}from"react";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Gi(o),u=yo(null),[d,c]=vo(),[x,y]=vo(),[k,T]=vo(),[B,A]=vo(),[I,O]=vo(i.map(r)),[g,M]=vo([]),Y=yo();Y.current=d;let ne=yo();ne.current=x;let Le=yo();Le.current=k;let oo=yo();oo.current=B;let C=yo();C.current=g;let N=Co(()=>{y(void 0);let fe=u.current?.value.trim()||"";if(fe===Y.current)return;c(fe);let te=new AbortController;T(te),a(fe,te.signal).then(be=>{te.signal.aborted||(M(be.map(r)),T(void 0),oo.current&&(be.length>0&&n(be.slice(0,1)),A(!1)))}).catch(be=>{te.signal.aborted||be.message.includes("aborted")||Hi({color:"red",message:Vi(be)})})},[a,n,r]),ke=Co(()=>{Le.current&&(Le.current.abort(),T(void 0)),ne.current!==void 0&&window.clearTimeout(ne.current);let fe=window.setTimeout(()=>N(),100);y(fe)},[N]),Se=Co(fe=>{let te=[],be=[];for(let sn of fe){let ct=C.current?.find(Zs=>Zs.value===sn),Go=ct?.resource;!Go&&s!==!1&&f&&(Go=f(sn),ct=r(Go)),Go&&te.push(Go),ct&&be.push(ct)}n(te),O(be)},[s,n,f,r]),b=Co(fe=>{fe.key==="Enter"&&(!ne.current&&!Le.current?(H(fe),C.current&&C.current.length>0&&(M(C.current.slice(0,1)),Se([C.current[0].value]))):A(!0))},[Se]),W=Co(fe=>{let te=r(f(fe));return M([...C.current,te]),te},[f,M,r]),Re=Co((fe,te)=>!te,[]);return qi(()=>()=>{Le.current&&Le.current.abort()},[]),Fn.createElement(Ni,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:b,onSearchChange:ke,data:[...I,...g],onFocus:N,onChange:Se,onCreate:W,rightSectionWidth:40,rightSection:k?Fn.createElement(Ri,{size:16}):null,filter:Re,creatable:!0})}function Gi(e){return e?Array.isArray(e)?e:[e]:[]}var Ki=Ui(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function $i(e){return e.id}function ji(e){return{value:e.id,label:Ln(e),resource:e}}function Rn(e){let{classes:o}=Ki(),t=ze(),r=v(),a=wn(async(f,s)=>{let l=Zi(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return Yi(u,f)},[r]),n=wn(f=>{f.length>0&&t(`/${Wi(f[0])}`)},[t]);return Xe.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Xe.createElement(Wr,{size:16}),placeholder:"Search",itemComponent:_i,toKey:$i,toOption:ji,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var _i=Ji(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Xe.createElement("div",{ref:t,...o},Xe.createElement(Qi,{noWrap:!0},Xe.createElement(ge,{value:e}),Xe.createElement("div",null,Xe.createElement(Mn,null,Ln(e)),Xe.createElement(Mn,{size:"xs",color:"dimmed"},r))))});function Zi(e){let o=JSON.stringify(e);return Xi(e)?`{
|
|
1
|
+
import Ys,{useEffect as ei,useMemo as oi,useState as ti}from"react";import{createContext as ri,useContext as ai}from"react";import{deepEquals as fi,isReference as cn,isResource as li,normalizeOperationOutcome as si}from"@medplum/core";import{useCallback as ii,useEffect as sn,useState as ui}from"react";import{allOk as di,normalizeOperationOutcome as ci}from"@medplum/core";import{useEffect as mi,useState as mt}from"react";var dn=ri(void 0);function Uo(){return ai(dn)}function P(){return Uo().medplum}function Qe(){return Uo().navigate}function pt(){return Uo().profile}function Zh(e){let o=e.medplum,t=e.navigate??ni,[r,a]=ti({profile:o.getProfile(),loading:!1});ei(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]);let n=oi(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ys.createElement(dn.Provider,{value:n},e.children)}function ni(e){window.location.assign(e)}function X(e,o){let t=P(),[r,a]=ui(un(t,e)),n=ii(f=>{fi(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return cn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(si(s)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(li(o))return o;if(cn(o))return e.getCachedReference(o)}}function rC(e,o){return yr("search",e,o)}function aC(e,o){return yr("searchOne",e,o)}function mn(e,o){return yr("searchResources",e,o)}function yr(e,o,t){let r=P(),[a,n]=mt(),[f,s]=mt(!1),[l,i]=mt(),[u,d]=mt();return mi(()=>{let c=r.fhirSearchUrl(o,t).toString();c!==a&&(n(c),r[e](o,t).then(x=>{s(!1),i(x),d(di)}).catch(x=>{s(!1),i(void 0),d(ci(x))}))},[r,e,o,t,a,i]),[l,f,u]}import{formatAddress as pi}from"@medplum/core";import pn from"react";function xn(e){let o=e.value;return o?pn.createElement(pn.Fragment,null,pi(o)):null}import{Group as xi,NativeSelect as In,TextInput as Qo}from"@mantine/core";import ze,{useRef as Ii,useState as gi}from"react";function gn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function hn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Cn(e){let[o,t]=gi(e.defaultValue||{}),r=Ii();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function s(c){a(hn(r.current||{},0,c))}function l(c){a(hn(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return ze.createElement(xi,{spacing:"xs",grow:!0,noWrap:!0},ze.createElement(In,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),ze.createElement(In,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),ze.createElement(Qo,{placeholder:"Line 1",defaultValue:gn(o,0),onChange:c=>s(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"Line 2",defaultValue:gn(o,1),onChange:c=>l(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as hi}from"@mantine/core";import{createReference as Ci}from"@medplum/core";import yi,{useRef as vi,useState as Si}from"react";function yn(e){let o=pt(),[t,r]=Si(e.defaultValue||{}),a=vi();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&Ci(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return yi.createElement(hi,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as _u,useMantineTheme as Zu}from"@mantine/core";import{showNotification as Yu}from"@mantine/notifications";import ao,{Suspense as ed,useEffect as od,useState as td}from"react";import{Alert as Ai}from"@mantine/core";import{normalizeErrorString as Fi}from"@medplum/core";import{forwardRef as bi,createElement as Sn}from"react";import to from"prop-types";var vn={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Pi=Object.defineProperty,Di=Object.defineProperties,Ti=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,Dn=Object.prototype.hasOwnProperty,Tn=Object.prototype.propertyIsEnumerable,bn=(e,o,t)=>o in e?Pi(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,Pn=(e,o)=>{for(var t in o||(o={}))Dn.call(o,t)&&bn(e,t,o[t]);if(xt)for(var t of xt(o))Tn.call(o,t)&&bn(e,t,o[t]);return e},ki=(e,o)=>Di(e,Ti(o)),Bi=(e,o)=>{var t={};for(var r in e)Dn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&xt)for(var r of xt(e))o.indexOf(r)<0&&Tn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=bi((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=Bi(f,["color","size","stroke","children"]);return Sn("svg",Pn(ki(Pn({ref:n},vn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,x])=>Sn(c,x)),...u||[]])});return r.propTypes={color:to.string,size:to.oneOfType([to.string,to.number]),stroke:to.oneOfType([to.string,to.number])},r.displayName=`${o}`,r};var vr=p("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var ro=p("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var Sr=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var br=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var Pr=p("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var Dr=p("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Tr=p("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var kr=p("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Br=p("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var Ar=p("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Ne=p("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var zo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Fr=p("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var Mr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var We=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Wo=p("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var wr=p("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Or=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Er=p("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Lr=p("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var Rr=p("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var xo=p("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var It=p("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Nr=p("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Hr=p("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Vr=p("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var qr=p("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var gt=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var ht=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Gr=p("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Ur=p("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var Qr=p("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var zr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Wr=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Xr=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=p("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Xo=p("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jo=p("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jr=p("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var $r=p("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Kr=p("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var $o=p("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var jr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import _r from"react";var ho=class extends _r.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?_r.createElement(Ai,{icon:_r.createElement(ro,{size:16}),title:"Something went wrong",color:"red"},Fi(this.state.error)):this.props.children}};import{Center as Mi,Loader as wi}from"@mantine/core";import kn from"react";function Zr(){return kn.createElement(Mi,{style:{width:"100%",height:"100vh"}},kn.createElement(wi,null))}import{Avatar as uu,createStyles as du,Group as vt,Header as cu,Menu as He,Stack as mu,Text as Ko,UnstyledButton as Hn}from"@mantine/core";import{formatHumanName as pu,getReferenceString as Vn}from"@medplum/core";import U,{useState as xu}from"react";import{formatHumanName as Oi}from"@medplum/core";import Bn from"react";function Ct(e){let o=e.value;return o?Bn.createElement(Bn.Fragment,null,Oi(o,e.options)):null}import{Avatar as Fn}from"@mantine/core";import{getDisplayString as Ui,getImageSrc as Qi}from"@medplum/core";import Yr from"react";import{Anchor as Ei}from"@mantine/core";import{isReference as Li,isResource as Ri}from"@medplum/core";import Ni from"react";function N(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(An(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&An(o[0]))return!0}return!1}function An(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Hi(t);return r&&(l+="/"+r),Ni.createElement(Ei,{href:l,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(l)},...s},f)}function Hi(e){if(e){if(typeof e=="string")return Vi(e);if(Ri(e))return qi(e);if(Li(e))return Gi(e)}return"#"}function Vi(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function qi(e){return`/${e.resourceType}/${e.id}`}function Gi(e){return`/${e.reference}`}function he(e){let o=X(e.value),t=o?Ui(o):e.alt??"",r=(o&&Qi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Yr.createElement(se,{to:o},Yr.createElement(Fn,{src:r,alt:t,radius:a,...n})):Yr.createElement(Fn,{src:r,alt:t,radius:a,...n})}import{createStyles as ji,Group as _i,Text as wn}from"@mantine/core";import{formatHumanName as Zi,getDisplayString as Rn,getReferenceString as Yi,isUUID as eu}from"@medplum/core";import Xe,{forwardRef as ou,useCallback as On}from"react";import{Loader as zi,MultiSelect as Wi}from"@mantine/core";import{showNotification as Xi}from"@mantine/notifications";import{normalizeErrorString as Ji}from"@medplum/core";import Mn,{useCallback as Co,useEffect as $i,useRef as yo,useState as vo}from"react";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Ki(o),u=yo(null),[d,c]=vo(),[x,y]=vo(),[k,T]=vo(),[B,A]=vo(),[I,O]=vo(i.map(r)),[g,M]=vo([]),Y=yo();Y.current=d;let ne=yo();ne.current=x;let Le=yo();Le.current=k;let oo=yo();oo.current=B;let me=yo();me.current=g;let C=Co(()=>{y(void 0);let fe=u.current?.value.trim()||"";if(fe===Y.current)return;c(fe);let te=new AbortController;T(te),a(fe,te.signal).then(be=>{te.signal.aborted||(M(be.map(r)),T(void 0),oo.current&&(be.length>0&&n(be.slice(0,1)),A(!1)))}).catch(be=>{te.signal.aborted||be.message.includes("aborted")||Xi({color:"red",message:Ji(be)})})},[a,n,r]),V=Co(()=>{Le.current&&(Le.current.abort(),T(void 0)),ne.current!==void 0&&window.clearTimeout(ne.current);let fe=window.setTimeout(()=>C(),100);y(fe)},[C]),we=Co(fe=>{let te=[],be=[];for(let ln of fe){let ct=me.current?.find(Zs=>Zs.value===ln),Go=ct?.resource;!Go&&s!==!1&&f&&(Go=f(ln),ct=r(Go)),Go&&te.push(Go),ct&&be.push(ct)}n(te),O(be)},[s,n,f,r]),v=Co(fe=>{fe.key==="Enter"&&(!ne.current&&!Le.current?(N(fe),me.current&&me.current.length>0&&(M(me.current.slice(0,1)),we([me.current[0].value]))):A(!0))},[we]),z=Co(fe=>{let te=r(f(fe));return M([...me.current,te]),te},[f,M,r]),Re=Co((fe,te)=>!te,[]);return $i(()=>()=>{Le.current&&Le.current.abort()},[]),Mn.createElement(Wi,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:v,onSearchChange:V,data:[...I,...g],onFocus:C,onChange:we,onCreate:z,rightSectionWidth:40,rightSection:k?Mn.createElement(zi,{size:16}):null,filter:Re,creatable:!0})}function Ki(e){return e?Array.isArray(e)?e:[e]:[]}var tu=ji(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function ru(e){return e.id}function au(e){return{value:e.id,label:Rn(e),resource:e}}function Nn(e){let{classes:o}=tu(),t=Qe(),r=P(),a=On(async(f,s)=>{let l=fu(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return lu(u,f)},[r]),n=On(f=>{f.length>0&&t(`/${Yi(f[0])}`)},[t]);return Xe.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Xe.createElement(Xr,{size:16}),placeholder:"Search",itemComponent:nu,toKey:ru,toOption:au,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var nu=ou(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Xe.createElement("div",{ref:t,...o},Xe.createElement(_i,{noWrap:!0},Xe.createElement(he,{value:e}),Xe.createElement("div",null,Xe.createElement(wn,null,Rn(e)),Xe.createElement(wn,{size:"xs",color:"dimmed"},r))))});function fu(e){let o=JSON.stringify(e);return eu(e)?`{
|
|
2
2
|
Patients1: PatientList(_id: ${o}, _count: 1) {
|
|
3
3
|
resourceType
|
|
4
4
|
id
|
|
@@ -61,8 +61,8 @@ import{formatAddress as Ys}from"@medplum/core";import un from"react";function dn
|
|
|
61
61
|
display
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
}`.replace(/\s+/g," ")}function Yi(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),ou(eu(t),o).slice(0,5)}function eu(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 ou(e,o){return e.sort((t,r)=>On(r,o)-On(t,o))}function On(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,En(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,En(zi(r),o));return t}function En(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var su=ru(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 Vn(e){let o=Qo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=su(),[l,i]=lu(!1);return U.createElement(au,{height:60,p:8,style:{zIndex:101}},U.createElement(Ct,{position:"apart"},U.createElement(Ct,{spacing:"xs"},U.createElement(Nn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&U.createElement(Rn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},U.createElement(He.Target,null,U.createElement(Nn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},U.createElement(Ct,{spacing:7},U.createElement(ge,{value:r,radius:"xl",size:24}),U.createElement($o,{size:"sm",className:f.userName},fu(r?.name?.[0])),U.createElement(Ar,{size:12,stroke:1.5})))),U.createElement(He.Dropdown,null,U.createElement(nu,{align:"center",p:"xl"},U.createElement(ge,{size:"xl",radius:100,value:o.profile}),U.createElement(gt,{value:o.profile?.name?.[0]}),U.createElement($o,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(He.Divider,null),n.map(u=>u.profile.reference!==Hn(o.profile)&&U.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(Ct,null,U.createElement(tu,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement($o,{size:"sm",weight:500},u.profile.display),U.createElement($o,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(He.Divider,null),U.createElement(He.Item,{icon:U.createElement(Jr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(He.Item,{icon:U.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Hn(r)}`)},"Account settings"),U.createElement(He.Item,{icon:U.createElement(Vr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement($o,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Ou,createStyles as Eu,Navbar as ea,ScrollArea as Lu,Space as Ru,Text as Nu}from"@mantine/core";import le,{useState as Hu}from"react";import{Button as cu,Group as mu,Modal as pu,NativeSelect as xu,Stack as Iu,TextInput as gu}from"@mantine/core";import{showNotification as Gn}from"@mantine/notifications";import{deepClone as hu,normalizeErrorString as Cu}from"@medplum/core";import Je from"react";import du from"react";function qn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?iu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&uu(o,t);return o}function iu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function uu(e,o){e[o.name]=o.value}function K(e){return du.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=qn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Un(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=hu(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Gn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Gn({color:"red",message:Cu(u)})})}return Je.createElement(pu,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Je.createElement(K,{onSubmit:r},Je.createElement(Iu,null,Je.createElement(yu,{config:t}),Je.createElement(gu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Je.createElement(mu,{position:"right"},Je.createElement(cu,{mt:"sm",type:"submit"},"OK")))))}function yu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Je.createElement(xu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Fu,{useCallback as Mu,useState as wu}from"react";import Du,{useState as ku}from"react";import vu,{useCallback as Su}from"react";function Yr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function bu(e){return typeof e.display=="string"?e.display:Yr(e)}function Pu(e){return{value:Yr(e),label:bu(e),resource:e}}function Tu(e){return{code:e,display:e}}function bo(e){let o=v(),{binding:t,creatable:r,clearable:a,...n}=e,f=Su(async(s,l)=>{if(!t)return[];let u=(await o.searchValueSet(t,s,{signal:l})).expansion?.contains,d=[];for(let c of u)c.code&&!d.some(x=>x.code===c.code)&&d.push(c);return d},[o,t]);return vu.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:Yr,toOption:Pu,loadOptions:f,onCreate:Tu,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function yt(e){let[o,t]=ku(e.defaultValue);function r(a){let n=a[0],f=Au(n);t(f),e.onChange&&e.onChange(f)}return Du.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Bu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Bu(e){return e?{code:e}:void 0}function Au(e){return e?.code}function Po(e){let[o,t]=wu(e.defaultValue),r=e.onChange,a=Mu(n=>{t(n),r&&r(n)},[r]);return Fu.createElement(yt,{"data-autofocus":e.autoFocus,"data-testid":e.testId,defaultValue:o,onChange:a,name:e.name,placeholder:e.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Qn=Eu(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 zn(e){let{classes:o}=Qn(),t=ze(),r=Gu(e.pathname,e.searchParams,e.menus),[a,n]=Hu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return le.createElement(le.Fragment,null,le.createElement(ea,{width:{sm:250},p:"xs"},le.createElement(Lu,null,!e.resourceTypeSearchDisabled&&le.createElement(ea.Section,{mb:"sm"},le.createElement(Po,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),le.createElement(ea.Section,{grow:!0},e.menus?.map(l=>le.createElement(le.Fragment,{key:`menu-${l.title}`},le.createElement(Nu,{className:o.menuTitle},l.title),l.links?.map(i=>le.createElement(Vu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},le.createElement(qu,{to:i.href,icon:i.icon}),le.createElement("span",null,i.label))))),e.displayAddBookmark&&le.createElement(Ou,{variant:"subtle",size:"xs",mt:"xl",leftIcon:le.createElement(Qr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&le.createElement(Un,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Vu(e){let{classes:o,cx:t}=Qn();return le.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function qu(e){return e.icon?e.icon:le.createElement(Ru,{w:30})}function Gu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let s=Uu(e,o,f.href);s>a&&(a=s,r=f)}return r}function Uu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function Ob(e){let o=zu(),[t,r]=Xu(localStorage.navbarOpen==="true"),a=v(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ao.createElement(_r,null):ao.createElement(Qu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ao.createElement(Vn,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ao.createElement(zn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0},ao.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},ao.createElement(Wu,{fallback:ao.createElement(_r,null)},e.children)))}import oa from"react";import{Anchor as Ju}from"@mantine/core";import Ke from"react";function Oe(e){let{contentType:o,url:t,title:r}=e.value??{};return t?Ke.createElement("div",{"data-testid":"attachment-display"},o?.startsWith("image/")&&Ke.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:t,alt:r}),o?.startsWith("video/")&&Ke.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Ke.createElement("source",{type:o,src:t})),o==="application/pdf"&&Ke.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Ke.createElement("iframe",{width:"100%",height:"400",src:t+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Ke.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Ke.createElement(Ju,{href:t,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:Ku(r)},r||"Download"))):null}function Ku(e){return e?.includes(".")?e:void 0}function Wn(e){return oa.createElement("div",null,e.values?.map((o,t)=>oa.createElement("div",{key:"attatchment-"+t},oa.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Xn}from"@mantine/core";import ie,{useRef as ju,useState as _u}from"react";import ta,{useRef as $u}from"react";function To(e){let o=v(),t=$u(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return ta.createElement(ta.Fragment,null,ta.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Jn(e){let[o,t]=_u(e.defaultValue??[]),r=ju();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Oe,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(Xn,{title:"Remove",size:"sm",onClick:s=>{H(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(We,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(To,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(Xn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Wo,{size:16})))))))}import{Button as Kn}from"@mantine/core";import Do,{useState as Zu}from"react";function vt(e){let[o,t]=Zu(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(Kn,{onClick:a=>{H(a),r(void 0)}},"Remove")):Do.createElement(To,{onUpload:r},a=>Do.createElement(Kn,{...a},"Upload..."))}import{normalizeOperationOutcome as Md}from"@medplum/core";import At,{useEffect as wd,useState as af}from"react";import $n from"react";import{Container as Yu,createStyles as ed}from"@mantine/core";import od from"react";var td=ed(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function $e(e){let{children:o,...t}=e,{classes:r}=td();return od.createElement(Yu,{className:r.root,...t},o)}import{createStyles as rd,Paper as ad,useComponentDefaultProps as nd}from"@mantine/core";import fd from"react";var ld=rd((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%"}}})),sd={shadow:"xs",radius:"md",withBorder:!0};function ko(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=nd("Panel",sd,e),{classes:s,cx:l}=ld({width:r,fill:a},{name:"Panel",unstyled:n});return fd.createElement(ad,{className:l(s.paper,o),...f},t)}function St(e){let{children:o,...t}=e;return $n.createElement($e,null,$n.createElement(ko,{...t},o))}import{Anchor as _n,Button as id,Center as ud,Group as dd,Stack as cd,Text as md,TextInput as pd,Title as xd}from"@mantine/core";import{normalizeOperationOutcome as Id}from"@medplum/core";import Be,{useState as gd}from"react";import no from"react";function je(e){return no.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},no.createElement("title",null,"Medplum Logo"),no.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),no.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),no.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),no.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),no.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function me(e,o){return e?.issue?.filter(t=>jn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
-
`)}function bt(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 Pt(e){let o=v(),[t,r]=gd();return Be.createElement(K,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(Id(n))}}},Be.createElement(ud,{sx:{flexDirection:"column"}},Be.createElement(je,{size:32}),Be.createElement(xd,null,"Create project")),Be.createElement(cd,{spacing:"xl"},Be.createElement(pd,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Be.createElement(md,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Be.createElement(_n,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Be.createElement(_n,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Be.createElement(dd,{position:"right",mt:"xl",noWrap:!0},Be.createElement(id,{type:"submit"},"Create project")))}import{Anchor as Bt,Button as bd,Center as Pd,Checkbox as Td,Divider as Dd,Group as ef,PasswordInput as kd,Stack as Bd,Text as of,TextInput as na}from"@mantine/core";import{normalizeOperationOutcome as tf}from"@medplum/core";import _,{useEffect as Ad,useState as Fd}from"react";import hd,{useEffect as Cd,useRef as yd,useState as ra}from"react";function Tt(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 Dt(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=yd(null),[n,f]=ra(typeof google<"u"),[s,l]=ra(!1),[i,u]=ra(!1);return Cd(()=>{if(typeof google>"u"){Tt("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?hd.createElement("div",{ref:a}):null}function kt(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}import{Alert as vd}from"@mantine/core";import{operationOutcomeIssueToString as Sd}from"@medplum/core";import aa from"react";function Bo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:aa.createElement(vd,{icon:aa.createElement(ro,{size:16}),color:"red"},o.map(t=>aa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},Sd(t))))}function Zn(e){typeof grecaptcha>"u"&&Tt("https://www.google.com/recaptcha/api.js?render="+e)}function Yn(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function rf(e){let o=kt(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=Fd(),f=bt(a,void 0);return Ad(()=>{t&&Zn(t)},[t]),_.createElement(K,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await Yn(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(tf(l))}}},_.createElement(Pd,{sx:{flexDirection:"column"}},e.children),_.createElement(Bo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(ef,{position:"center",p:"xl",style:{height:70}},_.createElement(Dt,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(tf(l))}}})),_.createElement(Dd,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Bd,{spacing:"xl"},_.createElement(na,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),_.createElement(na,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),_.createElement(na,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),_.createElement(kd,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),_.createElement(of,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(Bt,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Bt,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(of,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(Bt,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Bt,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(ef,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Td,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(bd,{type:"submit"},"Create account")))}function sT(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=v(),[l,i]=af(),[u,d]=af();wd(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(x=>s.processCode(x.code)).then(()=>f()).catch(x=>d(Md(x)))},[s,o,t,l,f]);function c(x){x.code?s.processCode(x.code).then(()=>f()).catch(console.log):x.login&&i(x.login)}return At.createElement(St,{width:450},u&&At.createElement("pre",null,JSON.stringify(u,null,2)),!l&&At.createElement(rf,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&At.createElement(Pt,{login:l,handleAuthResponse:c}))}import{showNotification as gf}from"@mantine/notifications";import{normalizeErrorString as hf}from"@medplum/core";import fo,{useCallback as la,useEffect as sc,useState as sa}from"react";import{Anchor as nf,Button as ff,Center as lf,Checkbox as Od,Divider as Ed,Group as fa,PasswordInput as Ld,Stack as Rd,TextInput as Nd}from"@mantine/core";import{normalizeOperationOutcome as Hd}from"@medplum/core";import $,{useCallback as Ft,useState as sf}from"react";function uf(e){let[o,t]=sf();return o?$.createElement(qd,{email:o,...e}):$.createElement(Vd,{setEmail:t,...e})}function Vd(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=v(),l=!e.disableGoogleAuth&&kt(e.googleClientId),i=Ft(async c=>{if(!c.authorizeUrl)return!1;let x=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",x),window.location.assign(y.toString()),!0},[s,f]),u=Ft(async c=>{let x=await s.post("auth/method",{email:c.email});await i(x)||o(c.email)},[s,i,o]),d=Ft(async c=>{let x=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(x)||r(x)},[s,f,i,r]);return $.createElement(K,{style:{maxWidth:400},onSubmit:u},$.createElement(lf,{sx:{flexDirection:"column"}},a),l&&$.createElement($.Fragment,null,$.createElement(fa,{position:"center",p:"xl",style:{height:70}},$.createElement(Dt,{googleClientId:l,handleGoogleCredential:d})),!n&&$.createElement(Ed,{label:"or",labelPosition:"center",my:"lg"})),!n&&$.createElement(Nd,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),$.createElement(fa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},$.createElement("div",null,t&&$.createElement(nf,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&$.createElement(ff,{type:"submit"},"Next")))}function qd(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,s]=sf(),l=bt(f,void 0),i=Ft(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(Hd(d)))},[n,a,t]);return $.createElement(K,{style:{maxWidth:400},onSubmit:i},$.createElement(lf,{sx:{flexDirection:"column"}},r),$.createElement(Bo,{issues:l}),$.createElement(Rd,{spacing:"xl"},$.createElement(Ld,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),$.createElement(fa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&$.createElement(nf,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),$.createElement(Od,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),$.createElement(ff,{type:"submit"},"Sign in")))}import{Avatar as Gd,Center as Ud,Group as Qd,Stack as zd,Text as df,Title as Wd,UnstyledButton as Xd}from"@mantine/core";import{normalizeOperationOutcome as Jd}from"@medplum/core";import Ae,{useState as Kd}from"react";function cf(e){let o=v(),[t,r]=Kd();return Ae.createElement(zd,null,Ae.createElement(Ud,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(Wd,{order:3},"Choose profile")),Ae.createElement(Bo,{outcome:t}),e.memberships.map(a=>Ae.createElement(Xd,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Jd(n)))}},Ae.createElement(Qd,null,Ae.createElement(Gd,{radius:"xl"}),Ae.createElement("div",{style:{flex:1}},Ae.createElement(df,{size:"sm",weight:500},a.profile?.display),Ae.createElement(df,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as $d,Center as jd,Checkbox as _d,Group as Zd,Stack as mf,Title as Yd}from"@mantine/core";import Ve from"react";function pf(e){let o=v();return Ve.createElement(K,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ve.createElement(mf,null,Ve.createElement(jd,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(Yd,null,"Choose scope")),Ve.createElement(mf,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(_d,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement(Zd,{position:"right",mt:"xl"},Ve.createElement($d,{type:"submit"},"Set scope"))))}import{Alert as ec,Button as oc,Center as tc,Group as rc,Stack as xf,TextInput as ac,Title as nc}from"@mantine/core";import{normalizeErrorString as fc}from"@medplum/core";import Fe,{useState as lc}from"react";function If(e){let o=v(),[t,r]=lc();return Fe.createElement(K,{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(fc(n)))}},Fe.createElement(xf,null,Fe.createElement(tc,{sx:{flexDirection:"column"}},Fe.createElement(je,{size:32}),Fe.createElement(nc,null,"Enter MFA code")),t&&Fe.createElement(ec,{icon:Fe.createElement(ro,{size:16}),title:"Error",color:"red"},t),Fe.createElement(xf,null,Fe.createElement(ac,{name:"token",label:"MFA code",required:!0})),Fe.createElement(rc,{position:"right",mt:"xl"},Fe.createElement(oc,{type:"submit"},"Submit code"))))}function nD(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=v(),[i,u]=sa(),[d,c]=sa(!1),[x,y]=sa(),k=la(A=>{f?f(A):l.processCode(A).then(()=>{r&&r()}).catch(I=>gf({color:"red",message:hf(I)}))},[l,f,r]),T=la(A=>{c(!!A.mfaRequired),A.login&&u(A.login),A.memberships&&y(A.memberships),A.code&&(t?y(void 0):k(A.code))},[t,k]),B=la(A=>{k(A.code)},[k]);return sc(()=>{o&&!i&&l.get("auth/login/"+o).then(T).catch(A=>gf({color:"red",message:hf(A)}))},[l,o,i,T]),fo.createElement(St,{width:450},(()=>i?d?fo.createElement(If,{login:i,handleAuthResponse:T}):x?fo.createElement(cf,{login:i,memberships:x,handleAuthResponse:T}):e.projectId==="new"?fo.createElement(Pt,{login:i,handleAuthResponse:T}):e.chooseScopes?fo.createElement(pf,{login:i,scope:e.scope,handleAuthResponse:B}):fo.createElement("div",null,"Success"):fo.createElement(uf,{onForgotPassword:a,onRegister:n,handleAuthResponse:T,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}import{getPropertyDisplayName as Dc,tryGetDataType as kc}from"@medplum/core";import Yo from"react";var Mt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as ic}from"@mantine/core";import jo from"react";var uc=ic(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 Cf(e){let{children:o,compact:t}=e,{classes:r,cx:a}=uc();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function yf(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{ActionIcon as hc,Box as Cc,CopyButton as yc,Tooltip as vc}from"@mantine/core";import{formatDateTime as Sc,formatPeriod as bc,formatTiming as Pc,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as dc}from"@medplum/core";import vf from"react";function Ao(e){return vf.createElement(vf.Fragment,null,dc(e.value))}import{formatCoding as cc}from"@medplum/core";import Sf from"react";function bf(e){return Sf.createElement(Sf.Fragment,null,cc(e.value))}import ia from"react";import Pf from"react";function wt(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("]")),Pf.createElement(Pf.Fragment,null,t.join("").trim())}function Tf(e){let o=e.value;return o?ia.createElement(ia.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>ia.createElement(wt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import mc from"react";function Df(e){return mc.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as pc}from"@medplum/core";import kf from"react";function Bf(e){return kf.createElement(kf.Fragment,null,pc(e.value))}import{formatQuantity as xc}from"@medplum/core";import Af from"react";function _o(e){return Af.createElement(Af.Fragment,null,xc(e.value))}import{formatRange as Ic}from"@medplum/core";import Ff from"react";function Ot(e){return Ff.createElement(Ff.Fragment,null,Ic(e.value))}import Et from"react";function Mf(e){let o=e.value;return o?Et.createElement(Et.Fragment,null,Et.createElement(_o,{value:o.numerator}),"\xA0/\xA0",Et.createElement(_o,{value:o.denominator})):null}import{stringify as gc}from"@medplum/core";import ua from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||gc(e.value);return e.link!==!1&&e.value.reference?ua.createElement(se,{to:e.value},o):ua.createElement(ua.Fragment,null,o)}import Fo from"react";function wf(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?Fo.createElement(Fo.Fragment,null,t.map((a,n)=>Fo.createElement("div",{key:`${n}-${t.length}`},Fo.createElement(pe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Fo.createElement(Fo.Fragment,null)}function pe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Cc,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(yc,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(vc,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(hc,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(Mr,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===V.Attachment?E.createElement(Wn,{values:r,maxWidth:e.maxWidth}):E.createElement(wf,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.decimal:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(lo,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,Sc(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(dn,{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(Ao,{value:r});case V.Coding:return E.createElement(bf,{value:r});case V.ContactDetail:return E.createElement(Tf,{value:r});case V.ContactPoint:return E.createElement(wt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Df,{value:r});case V.Money:return E.createElement(Bf,{value:r});case V.Period:return E.createElement(E.Fragment,null,bc(r));case V.Quantity:case V.Duration:return E.createElement(_o,{value:r});case V.Range:return E.createElement(Ot,{value:r});case V.Ratio:return E.createElement(Mf,{value:r});case V.Reference:return E.createElement(lo,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,Pc(r));case V.Dosage:case V.UsageContext:return E.createElement(Zo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o)throw Error(`Displaying property of type ${e.propertyType} requires element schema`);return E.createElement(Zo,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}import{getTypedPropertyValue as Tc}from"@medplum/core";function ye(e,o){let t=Tc(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=kc(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(Cf,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Mt.includes(f))return null;let[l,i]=ye(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:Yo.createElement(yf,{key:f,term:Dc(f)},Yo.createElement(pe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Ym}from"@mantine/core";import{getPropertyDisplayName as nl,tryGetDataType as ep}from"@medplum/core";import Oo,{useState as op}from"react";import{Group as Bc,Input as Ac}from"@mantine/core";import Lt from"react";function Rt(e){return Lt.createElement(Bc,{noWrap:!0},Lt.createElement("div",null,e.children),Lt.createElement("div",null,Lt.createElement(Ac.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Fc}from"@mantine/core";import Mc from"react";function ve(e){return Mc.createElement(Fc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{capitalize as wc}from"@medplum/core";function et(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",wc(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as Wm,Group as Xm,NativeSelect as Jm,Textarea as Km,TextInput as Ca}from"@mantine/core";import{capitalize as $m,PropertyType as L}from"@medplum/core";import G,{useState as jm}from"react";import Oc,{useState as Ec}from"react";function Of(e){let[o,t]=Ec(e.defaultValue);function r(a){let n=Rc(a);t(n),e.onChange&&e.onChange(n)}return Oc.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Lc(o),maxSelectedValues:1,onChange:r})}function Lc(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Rc(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import Nc,{useState as Hc}from"react";function Nt(e){let[o,t]=Hc(e.defaultValue);function r(a){let n=a[0],f=n&&qc(n);t(f),e.onChange&&e.onChange(f)}return Nc.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Vc(o),maxSelectedValues:1,onChange:r})}function Vc(e){return{system:e.system,code:e.code,display:e.display}}function qc(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Wc,TextInput as Xc}from"@mantine/core";import da,{useRef as Jc,useState as Kc}from"react";import{Group as Gc,NativeSelect as Ef,TextInput as Uc}from"@mantine/core";import Ht,{useRef as Qc,useState as zc}from"react";function Vt(e){let[o,t]=zc(e.defaultValue),r=Qc();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return Ht.createElement(Gc,{spacing:"xs",grow:!0,noWrap:!0},Ht.createElement(Ef,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ht.createElement(Ef,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ht.createElement(Uc,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function Lf(e){let[o,t]=Kc(e.defaultValue),r=Jc();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return da.createElement(Wc,{spacing:"xs",grow:!0,noWrap:!0},da.createElement(Xc,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),da.createElement(Vt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as $c}from"@mantine/core";import jc from"react";import{isValidDate as Rf}from"@medplum/core";function Nf(e){if(!e)return"";let o=new Date(e);return Rf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Hf(e){if(!e)return"";let o=new Date(e);return Rf(o)?o.toISOString():""}function Me(e){return jc.createElement($c,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:_c(),defaultValue:Nf(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Hf(t))}}})}function _c(){return"datetime-local"}import{JsonInput as Zc}from"@mantine/core";import{stringify as Yc}from"@medplum/core";import em from"react";function Vf(e){return em.createElement(Zc,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Yc(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as om,NativeSelect as tm,TextInput as qt}from"@mantine/core";import Mo,{useRef as rm,useState as am}from"react";function qf(e){let[o,t]=am(e.defaultValue),r=rm();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Mo.createElement(om,{spacing:"xs",grow:!0,noWrap:!0},Mo.createElement(tm,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Mo.createElement(qt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Mo.createElement(qt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Mo.createElement(qt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Mo.createElement(qt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as nm,TextInput as Gf}from"@mantine/core";import ca,{useState as fm}from"react";function Uf(e){let[o,t]=fm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ca.createElement(nm,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(Gf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ca.createElement(Gf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as lm,TextInput as sm}from"@mantine/core";import ma,{useCallback as pa,useState as im}from"react";var um=["USD","EUR","CAD","GBP","AUD"];function Qf(e){let{onChange:o}=e,[t,r]=im(e.defaultValue),a=pa(l=>{r(l),o&&o(l)},[o]),n=pa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=pa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=ma.createElement(lm,{defaultValue:t?.currency,data:um,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ma.createElement(sm,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ma.createElement(wr,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as dm}from"@mantine/core";import xa,{useState as cm}from"react";function zf(e){let[o,t]=cm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return xa.createElement(dm,{spacing:"xs",grow:!0,noWrap:!0},xa.createElement(Me,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),xa.createElement(Me,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as mm,NativeSelect as pm,TextInput as Wf}from"@mantine/core";import Gt,{useState as xm}from"react";function Pe(e){let[o,t]=xm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Gt.createElement(mm,{spacing:"xs",grow:!0,noWrap:!0},Gt.createElement(pm,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Gt.createElement(Wf,{id:e.name,name:e.name,required:e.required,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:Im(a.currentTarget.value)})}}),Gt.createElement(Wf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Im(e){if(e)return parseFloat(e)}import{Group as gm}from"@mantine/core";import Ia,{useState as hm}from"react";function ot(e){let[o,t]=hm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ia.createElement(gm,{spacing:"xs",grow:!0,noWrap:!0},Ia.createElement(Pe,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),Ia.createElement(Pe,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Cm}from"@mantine/core";import ga,{useState as ym}from"react";function Xf(e){let[o,t]=ym(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ga.createElement(Cm,{spacing:"xs",grow:!0,noWrap:!0},ga.createElement(Pe,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ga.createElement(Pe,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Fm,NativeSelect as Mm}from"@mantine/core";import{createReference as wm}from"@medplum/core";import Qt,{useState as jf}from"react";import{Group as vm,Text as Jf}from"@mantine/core";import{getDisplayString as Sm,getReferenceString as $f}from"@medplum/core";import so,{forwardRef as bm,useCallback as Kf,useState as Pm}from"react";var Tm={Observation:"code",User:"email:contains"},Dm=["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 km(e){return{value:$f(e),label:Sm(e),resource:e}}function Ut(e){let o=v(),t=e.resourceType,[r,a]=Pm(),n=X(e.defaultValue,a),f=e.onChange,s=Kf(async(i,u)=>{let d=Am(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Kf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(So,{name:e.name,required:e.required,itemComponent:Bm,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:$f,toOption:km,loadOptions:s,onChange:l,clearable:!0})}var Bm=bm(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(vm,{noWrap:!0},so.createElement(ge,{value:o}),so.createElement("div",null,so.createElement(Jf,null,e),so.createElement(Jf,{size:"xs",color:"dimmed"},o.birthDate)))));function Am(e){return Tm[e]??(Dm.includes(e)?"name":"_id")}function wo(e){let o=Om(e.targetTypes),t=Em(e.defaultValue,o),[r,a]=jf(e.defaultValue),[n,f]=jf(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Qt.createElement(Fm,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Qt.createElement(Mm,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:l=>f(l.currentTarget.value),data:o}),!o&&Qt.createElement(Po,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Qt.createElement(Ut,{resourceType:n,name:e.name+"-id",required:e.required,placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?wm(l):void 0)}}))}function Om(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Em(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as _f}from"@mantine/core";import xe,{useRef as Lm,useState as Rm}from"react";function Zf(e){let[o,t]=Rm(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Lm();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(qe,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(_f,{title:"Remove",size:"sm",onClick:s=>{H(s);let l=[...r.current];l.splice(f,1),a(l)}},xe.createElement(We,null))))),xe.createElement("tr",null,xe.createElement("td",null),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(_f,{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 ol,Chip as Yf,Group as zt,Modal as Nm,NativeSelect as Hm,Stack as Vm,Switch as qm,TextInput as Gm}from"@mantine/core";import{formatTiming as Um}from"@medplum/core";import j,{useRef as tl,useState as ha}from"react";var Qm=["sun","mon","tue","wed","thu","fri","sat"];function rl(e){let[o,t]=ha(e.defaultValue),[r,a]=ha(!1),n=tl();return n.current=o,j.createElement(j.Fragment,null,j.createElement(zt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement("span",null,Um(n.current)||"No repeat"),j.createElement(ol,{onClick:()=>a(!0)},"Edit")),j.createElement(zm,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var el={repeat:{period:1,periodUnit:"d"}};function zm(e){let[o,t]=ha(e.defaultValue||el),r=tl();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return j.createElement(Nm,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},j.createElement(Vm,null,j.createElement(ve,{title:"Starts on",htmlFor:"timing-dialog-start"},j.createElement(Me,{name:"timing-dialog-start",onChange:i=>a(i)})),j.createElement(qm,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?el.repeat:void 0)}),o.repeat&&j.createElement(j.Fragment,null,j.createElement(ve,{title:"Repeat every",htmlFor:"timing-dialog-period"},j.createElement(zt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(Gm,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),j.createElement(Hm,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>s(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&j.createElement(ve,{title:"Repeat on"},j.createElement(Yf.Group,{multiple:!0,onChange:l},j.createElement(zt,{position:"apart",mt:"md",spacing:"xs"},Qm.map(i=>j.createElement(Yf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),j.createElement(zt,{position:"right"},j.createElement(ol,{onClick:()=>e.onOk(o)},"OK"))))}function qe(e){let o=e.property,t=e.defaultPropertyType??o.type[0].code,r=e.name,a=e.defaultValue;if(o.max>1&&!e.arrayElement)return t===L.Attachment?G.createElement(Jn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Zf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(_m,{elementDefinitionTypes:n,...e}):G.createElement(al,{elementDefinitionType:n[0],...e})}function _m(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=jm(t);return G.createElement(Xm,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Jm,{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(al,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",$m(r.code)))}}))}function al(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(Ca,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.date:return G.createElement(Ca,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Me,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(Ca,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(yt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(Wm,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(Km,{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(xn,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(In,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(Of,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(Nt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Lf,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Vt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(Vf,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(Uf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(Qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(zf,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(Pe,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(ot,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(Xf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(wo,{name:r,defaultValue:a,targetTypes:Zm(o),onChange:e.onChange});case L.Timing:return G.createElement(rl,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(tt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(tt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Zm(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=op(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=ep(a);if(!n)return Oo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Oo.createElement(Ym,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Mt.includes(s)||!l.type)return null;let[i,u]=ye(f,s),d=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Oo.createElement(Rt,{key:s,title:nl(s),description:l.description,htmlFor:s},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}})):Oo.createElement(ve,{key:s,title:nl(s),description:l.description,withAsterisk:d,htmlFor:s,outcome:e.outcome},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}}))}))}import{Button as ya,createStyles as tp,Group as ll}from"@mantine/core";import oe,{useMemo as rp,useState as ap}from"react";function fl(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Wt(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var np=tp(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 sl(e){let{classes:o}=np(),{onChangeMonth:t,onClick:r}=e,[a,n]=ap(Wt);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=rp(()=>fp(a,e.slots),[a,e.slots]);return oe.createElement("div",null,oe.createElement(ll,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},oe.createElement("p",{style:{flex:1}},fl(a)),oe.createElement(ll,{position:"right",spacing:"xs"},oe.createElement(ya,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),oe.createElement(ya,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),oe.createElement("table",{className:o.table},oe.createElement("thead",null,oe.createElement("tr",null,oe.createElement("th",null,"SUN"),oe.createElement("th",null,"MON"),oe.createElement("th",null,"TUE"),oe.createElement("th",null,"WED"),oe.createElement("th",null,"THU"),oe.createElement("th",null,"FRI"),oe.createElement("th",null,"SAT"))),oe.createElement("tbody",null,s.map((l,i)=>oe.createElement("tr",{key:"week-"+i},l.map((u,d)=>oe.createElement("td",{key:"day-"+d},u&&oe.createElement(ya,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function fp(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:lp(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 lp(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 dx from"react";import{ActionIcon as Dl,Center as Kp,createStyles as $p,Group as jp,Loader as _p,Menu as Ge,ScrollArea as Zp,TextInput as Yp}from"@mantine/core";import{showNotification as ex,updateNotification as ka}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as ox}from"@medplum/core";import D,{useCallback as Kt,useEffect as tx,useRef as kl,useState as Bl}from"react";import{createStyles as vp,Group as Jt,List as dl,Stack as cl,Text as Te,Title as ml}from"@mantine/core";import{capitalize as Sp,formatCodeableConcept as bp,formatDateTime as ba,formatObservationValue as Pp,isReference as Tp}from"@medplum/core";import h,{useEffect as Dp,useState as kp}from"react";import{Blockquote as sp,createStyles as ip,Stack as up}from"@mantine/core";import il from"react";var dp=ip(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function va({value:e}){let{classes:o}=dp();return e?il.createElement(up,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&il.createElement(sp,{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 gp}from"@mantine/core";import Sa from"react";import{Text as cp}from"@mantine/core";import{getDisplayString as mp,isOk as pp,normalizeErrorString as xp}from"@medplum/core";import ul,{useState as Ip}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=Ip(),f=X(o,n),s;if(a&&!pp(a))s=`[${xp(a)}]`;else if(f)s=mp(f);else return null;return t?ul.createElement(se,{to:o,...r},s):ul.createElement(cp,{component:"span",...r},s)}function _e(e){return Sa.createElement(gp,{spacing:"xs"},Sa.createElement(ge,{size:24,radius:12,value:e.value,link:e.link}),Sa.createElement(Ee,{value:e.value,link:e.link}))}import{Badge as hp}from"@mantine/core";import Cp from"react";var yp={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 Xt(e){return Cp.createElement(hp,{color:yp[e.status]},e.status)}var pl=vp(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));Pa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function Pa(e){let o=v(),t=X(e.value),[r,a]=kp();if(Dp(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(cl,null,h.createElement(ml,null,"Diagnostic Report"),h.createElement(Bp,{value:t}),r&&!e.hideSpecimenInfo&&Ap(r),t.result&&h.createElement(Fp,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(va,{value:n}))}function Bp({value:e}){return h.createElement(Jt,{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(_e,{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(_e,{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(_e,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(Te,null,ba(e.issued))),e.status&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(Te,null,Sp(e.status))))}function Ap(e){return h.createElement(cl,{spacing:"xs"},h.createElement(ml,{order:2,size:"h6"},"Specimens"),h.createElement(dl,{type:"ordered"},e?.map(o=>h.createElement(dl.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Jt,{spacing:20},h.createElement(Jt,{spacing:5},h.createElement(Te,{fw:500},"Collected:")," ",ba(o.collection?.collectedDateTime)),h.createElement(Jt,{spacing:5},h.createElement(Te,{fw:500},"Received:")," ",ba(o.receivedTime)))))))}function Fp(e){let{classes:o}=pl();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(xl,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function xl(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(Mp,{key:`obs-${Tp(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Mp(e){let{classes:o,cx:t}=pl(),r=X(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Ep(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(se,{to:r},h.createElement(Ao,{value:r.code}))),h.createElement("td",null,h.createElement(wp,{value:r})),h.createElement("td",null,h.createElement(Op,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Ao,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement(h.Fragment,null,r.category.map(f=>h.createElement("div",{key:`category-${bp(f)}`},h.createElement(Ao,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(lo,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Xt,{status:r.status}))),r.hasMember&&h.createElement(xl,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(va,{value:r.note}))))}function wp(e){let o=e.value;return h.createElement(h.Fragment,null,Pp(o))}function Op(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(Ot,{value:o}):null}function Ep(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Lp}from"@mantine/core";import{getDataType as Rp,getPropertyDisplayName as Np,stringify as Il,toTypedValue as gl}from"@medplum/core";import ue,{useEffect as Hp,useState as Vp}from"react";var qp=Lp(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 Cl(e){let{classes:o}=qp(),t=v(),[r,a]=Vp(!1);if(Hp(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=Rp(e.original.resourceType);return ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.elements).map(([f,s])=>{if(f==="id"||f==="meta")return null;let[l,i]=ye(gl(e.original),f),[u,d]=ye(gl(e.revised),f);return hl(l)&&hl(u)||Il(l)===Il(u)?null:ue.createElement("tr",{key:f},ue.createElement("td",null,Np(f)),ue.createElement("td",{className:o.removed},ue.createElement(pe,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(pe,{property:s,propertyType:d,value:u,ignoreMissingValues:!0})))})))}function hl(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Gp,{useEffect as Up,useState as Qp}from"react";function Ta(e){let o=v(),t=X(e.value),[r,a]=Qp(!1);return Up(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:Gp.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as zp,Group as Wp,Menu as yl,Text as Da}from"@mantine/core";import{formatDateTime as Xp,getReferenceString as Jp}from"@medplum/core";import re from"react";function vl(e){return re.createElement($e,null,e.children)}function Ze(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return re.createElement(ko,{"data-testid":"timeline-item",fill:!0,...n},re.createElement(Wp,{position:"apart",spacing:8,mx:"xs",my:"sm"},re.createElement(ge,{value:f,link:!0,size:"md"}),re.createElement("div",{style:{flex:1}},re.createElement(Da,{size:"sm"},re.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),re.createElement(Da,{size:"xs"},re.createElement(se,{color:"dimmed",to:e.resource},Xp(s)),re.createElement(Da,{component:"span",color:"dimmed",mx:8},"\xB7"),re.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&re.createElement(yl,{position:"bottom-end",shadow:"md",width:200},re.createElement(yl.Target,null,re.createElement(zp,{radius:"xl","aria-label":`Actions for ${Jp(e.resource)}`},re.createElement(Or,null))),a)),re.createElement(ho,null,r&&re.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&re.createElement(re.Fragment,null,e.children)))}function Pl(e,o){e.sort((t,r)=>{let a=Sl(t,o),n=Sl(r,o);return a>n?1:a<n?-1:bl(t,o)-bl(r,o)})}function Sl(e,o){if(!Tl(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function bl(e,o){if(!Tl(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Tl(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var rx=$p(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ye(e){let o=v(),t=ze(),r=o.getProfile(),a=kl(null),n=X(e.value),[f,s]=Bl(),[l,i]=Bl([]),u=e.loadTimelineResources,d=kl(l);d.current=l;let c=Kt(C=>{Pl(C,n),C.reverse(),i(C)},[n]),x=Kt(C=>{let N=[];for(let ke of C){if(ke.status!=="fulfilled")continue;let Se=ke.value;if(Se.type==="history"&&s(Se),Se.entry)for(let b of Se.entry)N.push(b.resource)}c(N)},[c]),y=Kt(C=>c([...d.current,C]),[c]),k=Kt(()=>{let C,N;"resourceType"in e.value?(C=e.value.resourceType,N=e.value.id):[C,N]=e.value.reference?.split("/"),u(o,C,N).then(x).catch(console.log)},[o,e.value,u,x]);tx(()=>k(),[k]);function T(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(N=>y(N)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(N=>y(N)).then(()=>ka({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement(zo,{size:16}),autoClose:2e3})).catch(N=>ka({id:"upload-notification",color:"red",title:"Upload error",message:ox(N),icon:D.createElement(Lr,{size:16}),autoClose:2e3}))}function A(C,N){return o.updateResource({...C,priority:N})}function I(C){A(C,"stat").then(k).catch(console.log)}function O(C){A(C,"routine").then(k).catch(console.log)}function g(C){t(`/${C.resourceType}/${C.id}`)}function M(C){t(`/${C.resourceType}/${C.id}/edit`)}function Y(C){t(`/${C.resourceType}/${C.id}/delete`)}function ne(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Le(){ex({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function oo(C){ka({id:"upload-notification",loading:!0,title:"Uploading...",message:ux(C),autoClose:!1,withCloseButton:!1})}return n?D.createElement(vl,null,e.createCommunication&&D.createElement(ko,null,D.createElement(K,{testid:"timeline-form",onSubmit:C=>{T(C.text);let N=a.current;N&&(N.value="",N.focus())}},D.createElement(jp,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(ge,{value:r}),D.createElement(Yp,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement(Dl,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(qr,{size:16})),D.createElement(To,{onUpload:B,onUploadStart:Le,onUploadProgress:oo},C=>D.createElement(Dl,{...C,radius:"xl",color:"blue",variant:"filled"},D.createElement(Wo,{size:16})))))),l.map(C=>{if(!C)return null;let N=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return D.createElement(ax,{key:N,history:f,resource:C,onDetails:ne});switch(C.resourceType){case"AuditEvent":return D.createElement(sx,{key:N,resource:C,onDetails:g});case"Communication":return D.createElement(fx,{key:N,resource:C,onPin:C.priority!=="stat"?I:void 0,onUnpin:C.priority==="stat"?O:void 0,onDetails:g,onEdit:M,onDelete:Y});case"DiagnosticReport":return D.createElement(ix,{key:N,resource:C,onDetails:g,onEdit:M,onDelete:Y});case"Media":return D.createElement(lx,{key:N,resource:C,onDetails:g,onEdit:M,onDelete:Y});default:return D.createElement(Ze,{key:N,resource:C,padding:!0},D.createElement(Ta,{value:C,ignoreMissingValues:!0}))}})):D.createElement(Kp,{style:{width:"100%",height:"100%"}},D.createElement(_p,null))}function Eo(e){return D.createElement(Ge.Dropdown,null,D.createElement(Ge.Label,null,"Resource"),e.onPin&&D.createElement(Ge.Item,{icon:D.createElement(Gr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(Ge.Item,{icon:D.createElement(Ur,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(Ge.Item,{icon:D.createElement(Hr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&D.createElement(Ge.Item,{icon:D.createElement(Er,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&D.createElement(D.Fragment,null,D.createElement(Ge.Divider,null),D.createElement(Ge.Label,null,"Danger zone"),D.createElement(Ge.Item,{color:"red",icon:D.createElement(Ko,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function ax(e){let o=nx(e.history,e.resource);return o?D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Cl,{original:o,revised:e.resource})):D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("h3",null,"Created"),D.createElement(Ta,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function nx(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 fx(e){let{classes:o}=rx(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return D.createElement(Ze,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("p",null,e.resource.payload?.[0]?.contentString))}function lx(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return D.createElement(Ze,{resource:e.resource,padding:!!t,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Oe,{value:e.resource.content}))}function sx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Zp,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function ix(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Pa,{value:e.resource}))}function ux(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${Ba(e.loaded)} / ${Ba(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${Ba(e.loaded)}`}function Ba(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function xM(e){return dx.createElement(Ye,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import{createReference as $t}from"@medplum/core";import cx from"react";function SM(e){return cx.createElement(Ye,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:$t(o),subject:o.subject,sender:$t(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:$t(o),subject:o.subject,operator:$t(t),issued:new Date().toISOString(),content:r})})}import{Button as vI,Loader as SI,Table as bI}from"@mantine/core";import{normalizeOperationOutcome as PI}from"@medplum/core";import ae,{useEffect as fs,useRef as ls,useState as rr}from"react";import{evalFhirPath as mx}from"@medplum/core";import px from"react";function Al(e){let o;try{o=mx(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return px.createElement(pe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as fI,Button as Ho,Center as or,createStyles as lI,Group as tr,Loader as sI,Menu as rs,Pagination as iI,Table as uI,Text as Na,UnstyledButton as dI}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ga,formatSearchQuery as cI}from"@medplum/core";import S,{useCallback as as,useEffect as ns,useRef as mI,useState as Ha}from"react";import{Box as xx,Button as Ix,Modal as gx,Text as hx}from"@mantine/core";import Lo from"react";function Ml(e){return Lo.createElement(gx,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Lo.createElement(xx,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Lo.createElement(Fl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Lo.createElement(Fl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Lo.createElement(hx,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Fl(e){return Lo.createElement(Ix,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as Bx}from"@mantine/core";import{getDataType as Ax,getSearchParameters as Fx,stringify as Mx}from"@medplum/core";import J,{useEffect as wx,useRef as Xl,useState as Ox}from"react";import{capitalize as Cx,DEFAULT_SEARCH_COUNT as yx,evalFhirPathTyped as vx,formatDateTime as Sx,Operator as w}from"@medplum/core";import jt from"react";var bx={string:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],fulltext:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],token:[w.EQUALS,w.NOT],reference:[w.EQUALS,w.NOT],numeric:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],quantity:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],date:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY],datetime:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY]},Px={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 HM(e){return at(e,[])}function _t(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function Ro(e,o,t,r,a){a&&(e=_t(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function VM(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 El(e,o){return Aa(e,o,-1)}function Ll(e,o){return Aa(e,o,0)}function Rl(e,o){return Aa(e,o,1)}function Aa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Ma(e,o,r,a)}function Nl(e,o){return Fa(e,o,-1)}function Hl(e,o){return Fa(e,o,0)}function Vl(e,o){return Fa(e,o,1)}function Fa(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Ma(e,o,r,a)}function ql(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ma(e,o,t,new Date)}function Ma(e,o,t,r){return e=_t(e,o),e=wl(e,o,w.GREATER_THAN_OR_EQUALS,t),e=wl(e,o,w.LESS_THAN_OR_EQUALS,r),e}function wl(e,o,t,r){return Ro(e,o,t,r.toISOString())}function wa(e,o,t=!0){return Ro(e,o,w.MISSING,t.toString())}function Tx(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Gl(e,o){let t=e.count??yx,r=(o-1)*t;return Tx(e,r)}function Oa(e,o,t){return o===Ul(e)&&t!==void 0&&t===Ql(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function qM(e,o){let t=!1;return Ul(e)===o&&(t=!Ql(e)),Oa(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 Ql(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function zl(e){return bx[e.type]}function nt(e){return Px[e]??""}function he(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(Cx).join(" "))}function Wl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Sx(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Dx(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?kx(e,o.searchParams[0]):null}function Dx(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=ye({type:e.resourceType,value:e},t);return r?jt.createElement(pe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function kx(e,o){let t=vx(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:jt.createElement(jt.Fragment,null,t.map((r,a)=>jt.createElement(pe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Jl(e){let[o,t]=Ox({search:JSON.parse(Mx(e.search))}),r=Xl(null),a=Xl(null);wx(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function s(I){I.key==="Enter"&&u()}function l(){u()}function i(){let I=o.search.fields??[],O=r.current?.value;if(O){let g=[...I,O];t({search:{...o.search,fields:g}})}}function u(){let I=o.search.fields??[],O=a.current?.value;if(O){let g=[...I];g.splice(g.indexOf(O),1),t({search:{...o.search,fields:g}})}}function d(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M<=0||(x(g,M,M-1),t({search:{...o.search,fields:g}}))}function c(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M>=g.length-1||(x(g,M,M+1),t({search:{...o.search,fields:g}}))}function x(I,O,g){let M=I[O];I[O]=I[g],I[g]=M}if(!e.visible)return null;let y=e.search.resourceType,k=Ax(y),T=Fx(y),B=o.search.fields??[],A=Ex(k,T).filter(I=>!B.includes(I)).sort((I,O)=>I.localeCompare(O));return J.createElement(Bx,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:I=>n(I),onDoubleClick:()=>f(),"data-testid":"available"},A.map(I=>J.createElement("option",{key:I,value:I},he(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>s(I),onDoubleClick:()=>l(),"data-testid":"selected"},B.map(I=>J.createElement("option",{key:I,value:I},he(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function Ex(e,o){let t=[],r=new Set,a=new Set;for(let n of Object.keys(e.elements))t.push(n),r.add(n.toLowerCase()),a.add(he(n));if(o)for(let n of Object.keys(o)){let f=he(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(he(n)))}return t}import{Button as st,Group as Ux,Modal as Qx,NativeSelect as $l}from"@mantine/core";import{getSearchParameters as zx,stringify as jl}from"@medplum/core";import R,{useEffect as Wx,useRef as Zl,useState as La}from"react";import{formatDateTime as Lx,getSearchParameterDetails as Rx,globalSchema as Nx,Operator as Kl,SearchParameterType as Hx}from"@medplum/core";import lt from"react";function Zt(e){let{resourceType:o,filter:t}=e,r=Nx.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Kl.EQUALS||t.operator===Kl.NOT_EQUALS))return lt.createElement(Ee,{value:{reference:t.value}});let a=Rx(o,r);if(t.code==="_lastUpdated"||a.type===Hx.DATETIME)return lt.createElement(lt.Fragment,null,Lx(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Vx,TextInput as Ea}from"@mantine/core";import{getSearchParameterDetails as qx,SearchParameterType as No}from"@medplum/core";import io from"react";function Yt(e){let o=qx(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case No.REFERENCE:return io.createElement(wo,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case No.BOOLEAN:return io.createElement(Vx,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case No.DATE:return io.createElement(Ea,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case No.DATETIME:return io.createElement(Me,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case No.NUMBER:return io.createElement(Ea,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case No.QUANTITY:return io.createElement(Pe,{name:t,defaultValue:Gx(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(Ea,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function Gx(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Yl(e){let[o,t]=La(JSON.parse(jl(e.search))),[r,a]=La(-1),n=Zl(o);n.current=o,Wx(()=>{t(JSON.parse(jl(e.search)))},[e.search]);function f(u){t(Ro(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=zx(s)??{},i=o.filters||[];return R.createElement(Qx,{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(_l,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let x=[...i];x[d]=c,t(at(n.current,x)),a(-1)},onCancel:()=>a(-1)}):R.createElement(Xx,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(Ol(n.current,d))})),R.createElement(_l,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),R.createElement(Ux,{position:"right",mt:"xl"},R.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function Xx(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,he(o.code)),R.createElement("td",null,nt(o.operator)),R.createElement("td",null,R.createElement(Zt,{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 _l(e){let[o,t]=La(e.defaultValue??{}),r=Zl(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let s=e.searchParams[o.code],l=s&&zl(s);return R.createElement("tr",null,R.createElement("td",null,R.createElement($l,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:he(i)}))]})),R.createElement("td",null,l&&R.createElement($l,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:nt(i)}))]})),R.createElement("td",null,s&&o.operator&&R.createElement(Yt,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&R.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Jx,Grid as Ra,Modal as Kx}from"@mantine/core";import uo,{useState as $x}from"react";function es(e){let[o,t]=$x(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(Kx,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement(K,{onSubmit:r},uo.createElement(Ra,null,uo.createElement(Ra.Col,{span:10},uo.createElement(Yt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Ra.Col,{span:2},uo.createElement(Jx,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function os(e){if(!e.searchParams)return null;function o(n,f){a(Oa(e.search,n.code,f))}function t(n){a(_t(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(jx,{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},he(n.code))))}function jx(e){switch(e.searchParam.type){case"date":return m.createElement(_x,{...e});case"number":case"quantity":return m.createElement(Zx,{...e});case"reference":return m.createElement(Yx,{...e});case"string":case"token":case"uri":return m.createElement(eI,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function _x(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(Tr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Rl(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Ll(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(El(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Vl(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Hl(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Nl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ql(e.search,t))},"Year to date"),m.createElement(er,{...e}))}function Zx(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(er,{...e}))}function Yx(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(er,{...e}))}function eI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(kr,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(Dr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(er,{...e}))}function er(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(br,{size:14}),onClick:()=>e.onChange(wa(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(Sr,{size:14}),onClick:()=>e.onChange(wa(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement($r,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as oI,getSearchParameter as tI,getSearchParameterDetails as rI,getSearchParameters as aI}from"@medplum/core";function ts(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(nI(o,r));return t}function nI(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=oI(e,o),r=tI(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=aI(e),n;if(a){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(a).filter(s=>s.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=rI(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var Va=class extends Event{constructor(t){super("change");this.definition=t}},qa=class extends Event{constructor(t){super("load");this.response=t}},co=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},pI=lI(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 xI(e){let{classes:o}=pI(),t=v(),[r,a]=Ha(!1),[n,f]=Ha(),{search:s,onLoad:l}=e,[i,u]=Ha({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=mI(i);d.current=i;let c=s.total??"accurate",x=as(b=>{f(void 0),t.search(s.resourceType,cI({...s,total:c,fields:void 0}),b).then(W=>{u({...d.current,searchResponse:W}),l&&l(new qa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,s,c,l]),y=as(()=>{u({...d.current,searchResponse:void 0}),x({cache:"reload"})},[x]);ns(()=>{x()},[x]);function k(b,W){b.stopPropagation();let fe=b.target.checked,te={...d.current.selected};fe?te[W]=!0:delete te[W],u({...d.current,selected:te})}function T(b){b.stopPropagation();let Re=b.target.checked,fe={},te=d.current.searchResponse;Re&&te?.entry&&te.entry.forEach(be=>{be.resource?.id&&(fe[be.resource.id]=!0)}),u({...d.current,selected:fe})}function B(){let b=d.current;if(!b.searchResponse?.entry||b.searchResponse.entry.length===0)return!1;for(let W of b.searchResponse.entry)if(W.resource?.id&&!b.selected[W.resource.id])return!1;return!0}function A(b){e.onChange&&e.onChange(new Va(b))}function I(b,W){if(ht(b.target)||b.button===2)return;H(b);let Re=b.button===1||b.ctrlKey||b.metaKey;!Re&&e.onClick&&e.onClick(new co(W,b)),Re&&e.onAuxClick&&e.onAuxClick(new co(W,b))}function O(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(ns(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return S.createElement(or,{style:{width:"100%",height:"100%"}},S.createElement(sI,null));let g=e.checkboxesEnabled,M=ts(s),Y=s.resourceType,ne=i.searchResponse,oo=ne?.entry?.map(b=>b.resource),C="subtle",N="gray",ke=16,Se=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(tr,{position:"apart",mb:"xl"},S.createElement(tr,{spacing:2},S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Fr,{size:ke}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Nr,{size:ke}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Rr,{size:ke}),onClick:e.onNew},"New..."),!Se&&O()&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Kr,{size:ke}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!Se&&e.onDelete&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Ko,{size:ke}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Se&&e.onBulk&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Pr,{size:ke}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(tr,{spacing:2},ne&&S.createElement(Na,{size:"xs",color:"dimmed"},CI(s,ne.total),"-",yI(s,ne.total)," of"," ",`${c==="estimate"?"~":""}${ne.total?.toLocaleString()}`),S.createElement(fI,{title:"Refresh",onClick:y},S.createElement(zr,{size:"1.125rem"})))),S.createElement(uI,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,g&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:b=>T(b)})),M.map(b=>S.createElement("th",{key:b.name},S.createElement(rs,{shadow:"md",width:240,position:"bottom-end"},S.createElement(rs.Target,null,S.createElement(dI,{className:o.control},S.createElement(tr,{position:"apart",noWrap:!0},S.createElement(Na,{weight:500,size:"sm"},he(b.name)),S.createElement(or,{className:o.icon},S.createElement(Cr,{size:14,stroke:1.5}))))),S.createElement(os,{search:e.search,searchParams:b.searchParams,onPrompt:(W,Re)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:Re})},onChange:W=>{A(W)}}))))),!e.hideFilters&&S.createElement("tr",null,g&&S.createElement("th",null),M.map(b=>S.createElement("th",{key:b.name},b.searchParams&&S.createElement(II,{resourceType:Y,searchParams:b.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,oo?.map(b=>b&&S.createElement("tr",{key:b.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>I(W,b),onAuxClick:W=>I(W,b)},g&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${b.id}`,checked:!!i.selected[b.id],onChange:W=>k(W,b.id)})),M.map(W=>S.createElement("td",{key:W.name},Wl(b,W))))))),oo?.length===0&&S.createElement($e,null,S.createElement(or,{style:{height:150}},S.createElement(Na,{size:"xl",color:"dimmed"},"No results"))),ne?.total!==void 0&&ne.total>0&&S.createElement(or,{m:"md",p:"md"},S.createElement(iI,{value:gI(s),total:hI(s,ne.total),onChange:b=>A(Gl(s,b)),getControlProps:b=>{switch(b){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(Jl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:b=>{A(b),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),S.createElement(Yl,{search:e.search,visible:d.current.filterEditorVisible,onOk:b=>{A(b),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),S.createElement(Ml,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),S.createElement(es,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?he(i.filterDialogSearchParam.code):"",resourceType:Y,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:b=>{A(Ro(e.search,b.code,b.operator,b.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var _w=S.memo(xI);function II(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},nt(t.operator),"\xA0",S.createElement(Zt,{resourceType:e.resourceType,filter:t}))))}function gI(e){return Math.floor((e.offset??0)/(e.count??Ga))+1}function hI(e,o){let t=e.count??Ga;return Math.ceil(o/t)}function CI(e,o){return Math.min(o,(e.offset??0)+1)}function yI(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ga))}function TI(e){let o=v(),[t,r]=rr(!1),[a,n]=rr(),{query:f,fields:s}=e,[l,i]=rr(),[u,d]=rr({}),c=ls();c.current=l;let x=ls({});x.current=u,fs(()=>{n(void 0),o.graphql(f).then(i).catch(I=>n(PI(I)))},[o,f]);function y(I,O){I.stopPropagation();let M=I.target.checked,Y={...x.current};M?Y[O]=!0:delete Y[O],d(Y)}function k(I){I.stopPropagation();let g=I.target.checked,M={},Y=c.current?.data.ResourceList;g&&Y&&Y.forEach(ne=>{ne.id&&(M[ne.id]=!0)}),d(M)}function T(){let I=c.current?.data.ResourceList;if(!I||I.length===0)return!1;for(let O of I)if(O.id&&!x.current[O.id])return!1;return!0}function B(I,O){ht(I.target)||(H(I),I.button!==1&&e.onClick&&e.onClick(new co(O,I)),I.button===1&&e.onAuxClick&&e.onAuxClick(new co(O,I)))}if(fs(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return ae.createElement(SI,null);let A=e.checkboxesEnabled;return ae.createElement("div",{onContextMenu:I=>H(I),"data-testid":"search-control"},ae.createElement(bI,null,ae.createElement("thead",null,ae.createElement("tr",null,A&&ae.createElement("th",null,ae.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:I=>k(I)})),s.map(I=>ae.createElement("th",{key:I.name},I.name)))),ae.createElement("tbody",null,l?.data.ResourceList.map(I=>I&&ae.createElement("tr",{key:I.id,"data-testid":"search-control-row",onClick:O=>B(O,I),onAuxClick:O=>B(O,I)},A&&ae.createElement("td",null,ae.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${I.id}`,checked:!!u[I.id],onChange:O=>y(O,I.id)})),s.map(O=>ae.createElement("td",{key:O.name},ae.createElement(Al,{propertyType:O.propertyType,path:O.fhirPath,resource:I}))))))),l?.data.ResourceList.length===0&&ae.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ae.createElement("div",{"data-testid":"search-error"},ae.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ae.createElement(vI,{onClick:()=>e.onBulk(Object.keys(x.current))},"Bulk..."))}var fO=ae.memo(TI);import{showNotification as DI}from"@mantine/notifications";import kI,{useEffect as ss,useMemo as BI,useState as AI}from"react";function cO(e){let o=e.medplum,t=e.navigate??FI,[r,a]=AI({profile:o.getProfile(),loading:!1});ss(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ss(()=>{function f(){DI({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=BI(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return kI.createElement(hr.Provider,{value:n},e.children)}function FI(e){window.location.assign(e)}import{createReference as ar}from"@medplum/core";import MI,{useCallback as wI}from"react";function CO(e){let o=wI((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 MI.createElement(Ye,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:ar(t),sender:ar(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:ar(t),operator:ar(r),issued:new Date().toISOString(),content:a})})}import{Anchor as us,Button as OI,createStyles as EI,NativeSelect as LI,Stack as RI,TextInput as Qa}from"@mantine/core";import{getReferenceString as NI}from"@medplum/core";import q,{useEffect as is,useRef as ds,useState as it}from"react";var cs=EI(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 RO(e){let o=v(),t=X(e.value),[r,a]=it(!1),[n,f]=it(),[s,l]=it(),[i,u]=it();function d(){l(void 0)}function c(){f(void 0)}let x=ds();if(x.current=i,is(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),is(()=>(u(QI(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(k,T){u({...x.current,[k]:T})}return q.createElement("div",null,q.createElement(K,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Qa,{label:"Plan Title",defaultValue:i.title,onChange:k=>y("title",k.currentTarget.value)}),q.createElement(ms,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:k=>y("action",k)}),q.createElement(OI,{type:"submit"},"Save")))}function ms(e){let{classes:o}=cs(),t=ds();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(HI,{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(us,{href:"#",onClick:f=>{H(f),a({id:xs()})}},"Add action")))}function HI(e){let{classes:o,cx:t}=cs(),{action:r}=e,a=UI(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?q.createElement(qI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(VI,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(us,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var za={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function VI(e){let{action:o,actionType:t}=e,[r,a]=ps(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(lo,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(pe,{property:za,propertyType:a,value:r})))}function qI(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(RI,{spacing:"xl"},q.createElement(Qa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Qa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(LI,{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(ms,{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(nr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(nr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(nr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(nr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(ve,{title:"Timing",description:"When the action should take place."},q.createElement(GI,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function nr(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(Ut,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:NI(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function GI(e){let o=e.action,t="timing",[r,a]=ps(o);return q.createElement(qe,{property:za,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,za,n))}})}function UI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function ps(e){return ye({type:"PlanDefinitionAction",value:e},"timing")}var Ua=1;function xs(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ua=Math.max(Ua,o+1))}return e}return"id-"+Ua++}function QI(e){return{...e,action:Is(e.action)}}function Is(e){if(e)return e.map(o=>({...o,id:xs(o.id),action:Is(o.action)}))}import{Anchor as De,Box as _a,Button as ug,createStyles as dg,Group as cg,NativeSelect as mg,Space as pg,Textarea as xg,TextInput as Za,Title as Ig}from"@mantine/core";import{getElementDefinition as gg,isResource as hg}from"@medplum/core";import P,{useEffect as Ds,useRef as Cg,useState as ur}from"react";import{Checkbox as $I,Group as jI,MultiSelect as _I,NativeSelect as ZI,Radio as Ss,Textarea as YI,TextInput as ut}from"@mantine/core";import{capitalize as Ja,deepEquals as eg,formatCoding as Ka,getElementDefinition as og,getTypedPropertyValue as Ue,stringify as bs}from"@medplum/core";import Z from"react";import{deepClone as zI,evalFhirPathTyped as WI,formatCoding as XI,getExtension as gs,getTypedPropertyValue as Wa}from"@medplum/core";var fr=(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))(fr||{});function hs(e){return e.type==="choice"||e.type==="open-choice"}function Cs(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=vs(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=KI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function ys(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>XI(f.valueCoding)===r||f[o]===r),n=Wa({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function vs(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=vs(t.item,o);if(r)return r}}}function JI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=WI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function KI(e,o,t){let r=o||[],a=Wa({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Wa({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(JI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function lr(e){let o=gs(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(o){if(o.valueCode!==void 0)return[o.valueCode];if(o.valueCodeableConcept)return o.valueCodeableConcept?.coding?.map(t=>t.code)}}function sr(e,o){let t=zI(e),r=gs(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?(r&&(t.extension=t.extension?.filter(a=>a!==r)),t):(r||(t.extension||(t.extension=[]),r={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},t.extension.push(r)),o.length===1?(r.valueCode=o[0],delete r.valueCodeableConcept):(r.valueCodeableConcept={coding:o.map(a=>({code:a}))},delete r.valueCode),t)}function ir(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(x=>x.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=ng(d[0]?.answer??[],u,l),e.onChange({id:d[0].id,linkId:o.linkId,text:o.text,answer:c})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=ja(e.allResponses,o,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Z.createElement(Rt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Z.createElement($I,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Z.createElement(ut,{type:"number",step:"any",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Z.createElement(ut,{type:"number",step:1,id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Z.createElement(ut,{type:"date",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Z.createElement(Me,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Z.createElement(ut,{type:"time",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Z.createElement(ut,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Z.createElement(YI,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Z.createElement(jI,{py:4},Z.createElement(vt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)}));case"reference":return Z.createElement(wo,{name:n,required:o.required,targetTypes:lr(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Z.createElement(Pe,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return fg(o)?Z.createElement(tg,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Z.createElement(rg,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function tg(e){let{name:o,item:t,initial:r}=e,a=Ue({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=Ue({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(Xa(l))}let f=ja(e.allResponses,t,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=lg(e.item),i=sg(e.allResponses,t,e.groupSequence);return Z.createElement(_I,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Xa(a)],onChange:u=>{let d=ys(u,s,t);e.onChangeAnswer(d)}})}return Z.createElement(ZI,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=Ue({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Ja(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:(Ka(f?.value)||f?.value)??Xa(a),data:n})}function rg(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Z.createElement(Nt,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):Z.createElement(ag,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function ag(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=og("QuestionnaireItemAnswerOption","value[x]"),f=Ue({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],x=`${o}-option-${d}`,y=Ue({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&bs(y)===bs(f)&&(l=x),s.push([x,y])}let i=ja(e.allResponses,t,e.index,e.groupSequence),u=ig(s,i);return Z.createElement(Ss.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(x=>x[0]===d);if(c){let x=c[1],y="value"+Ja(x.type);a({[y]:x.value})}}},s.map(([d,c])=>Z.createElement(Ss,{key:d,id:d,value:d,py:4,label:Z.createElement(pe,{property:n,propertyType:c.type,value:c.value})})))}function ng(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 fg(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function lg(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=Ue({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Ja(t.type),a=(e.answerOption??[]).map(n=>({value:Ps(n,r),label:Ps(n,r)}));return{propertyName:r,data:a}}function Ps(e,o){return Ka(e.valueCoding)||e[o]?.toString()}function Xa(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function $a(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat($a(r.item,o)));return t}function Ts(e){return Ue({type:"QuestionnaireItemAnswer",value:e},"value")}function ja(e,o,t=0,r=0){let n=$a(e,o.linkId??"")[r]?.answer;return Ts(n?.[t]??{})}function sg(e,o,t=0){let a=$a(e,o.linkId??"")[t]?.answer;return a?a.map(f=>Ts(f)).map(f=>Ka(f?.value)||f?.value):[]}function ig(e,o){return e.find(t=>eg(t[1].value,o?.value))?.[0]}var yg=dg(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 p0(e){let o=v(),t=X(e.questionnaire),[r,a]=ur(!1),[n,f]=ur(),[s,l]=ur(),[i,u]=ur();function d(){u(void 0)}function c(){l(void 0)}return Ds(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),Ds(()=>(f(Pg(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:P.createElement("div",null,P.createElement(K,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},P.createElement(ks,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),P.createElement(ug,{type:"submit"},"Save")))}function ks(e){let{classes:o,cx:t}=yg(),r=e.item,a=e.item,n=hg(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Cg();u.current=e.item;function d(g){H(g),e.setSelectedKey(e.item.id)}function c(g){H(g),e.setHoverKey(e.item.id)}function x(g){let M=u.current;e.onChange({...M,item:M.item?.map(Y=>Y.id===g.id?g:Y)})}function y(g){e.onChange({...e.item,item:[...e.item.item??[],g]})}function k(g){e.onChange({...e.item,item:e.item.item?.filter(M=>M!==g)})}function T(g,M){e.onChange({...u.current,[g]:M})}function B(g){e.onChange({...e.item,...g})}function A(g){e.onChange({...e.item,item:e.item.item?.map(M=>M===g?{...M,repeats:!M.repeats}:M)})}function I(g,M){let Y=kg(e.item.item,g,M);e.onChange({...e.item,item:Y})}let O=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return P.createElement("div",{"data-testid":a.linkId,className:O,onClick:d,onMouseOver:c},P.createElement("div",{className:o.questionBody},l?P.createElement(P.Fragment,null,n&&P.createElement(Za,{size:"xl",defaultValue:r.title,onChange:g=>T("title",g.currentTarget.value)}),!n&&P.createElement(xg,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>T("text",g.currentTarget.value)}),a.type==="reference"&&P.createElement(bg,{item:a,onChange:B}),hs(a)&&P.createElement(vg,{item:a,onChange:g=>B(g)})):P.createElement(P.Fragment,null,r.title&&P.createElement(Ig,null,r.title),a.text&&P.createElement("div",null,a.text),!f&&P.createElement(ir,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((g,M)=>P.createElement("div",{key:g.id},P.createElement(ks,{item:g,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:M===0,isLast:M===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:x,onRemove:()=>k(g),onRepeatable:A,onMoveUp:()=>I(M,-1),onMoveDown:()=>I(M,1)}))),!f&&P.createElement("div",{className:o.topActions},l?P.createElement(P.Fragment,null,P.createElement(Za,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>T("linkId",g.currentTarget.value)}),!f&&P.createElement(mg,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:g=>T("type",g.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):P.createElement("div",null,s)),!n&&P.createElement(_a,{className:o.movementActions},P.createElement(_a,{className:o.columnAlignment},!e.isFirst&&P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveUp&&e.onMoveUp()}},P.createElement(vr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveDown&&e.onMoveDown()}},P.createElement(yr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),P.createElement("div",{className:o.bottomActions},f&&P.createElement(P.Fragment,null,P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("q"),type:"string",text:"Question"})}},"Add item"),P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("g"),type:"group",text:"Group"})}},"Add group")),n&&P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),y(Dg())}},"Add Page"),l&&!n&&P.createElement(P.Fragment,null,P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function vg(e){let o=gg("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return P.createElement("div",null,e.item.answerValueSet!==void 0?P.createElement(Za,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):P.createElement(Sg,{options:t,property:o,item:e.item,onChange:e.onChange}),P.createElement(_a,{display:"flex"},P.createElement(De,{href:"#",onClick:r=>{H(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:mo()}]})}},"Add choice"),P.createElement(pg,{w:"lg"}),P.createElement(De,{href:"#",onClick:r=>{H(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function Sg(e){return P.createElement("div",null,e.options.map(o=>{let[t,r]=ye({type:"QuestionnaireItemAnswerOption",value:o},"value");return P.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},P.createElement("div",null,P.createElement(qe,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),P.createElement("div",null,P.createElement(De,{href:"#",onClick:a=>{H(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function bg(e){let o=lr(e.item)??[];return P.createElement(P.Fragment,null,o.map((t,r)=>P.createElement(cg,{key:`${t}-${r}`},P.createElement(Po,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(sr(e.item,o.map(n=>n===t?a:n)))}}),P.createElement(De,{href:"#",onClick:a=>{H(a),e.onChange(sr(e.item,o.filter(n=>n!==t)))}},"Remove"))),P.createElement(De,{href:"#",onClick:t=>{H(t),e.onChange(sr(e.item,[...o,""]))}},"Add Resource Type"))}var Ya=1,en=1;function on(e){return e+Ya++}function mo(){return"id-"+en++}function Pg(e){return{...e,id:e.id||mo(),item:Bs(e.item)}}function Bs(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(en=Math.max(en,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ya=Math.max(Ya,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||mo(),item:Bs(o.item),answerOption:Tg(o.answerOption)}))}function Tg(e){if(e)return e.map(o=>({...o,id:o.id||mo()}))}function Dg(){return{id:mo(),linkId:on("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function kg(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 ws,Button as tn,Group as Bg,Stack as Ag,Stepper as As,Title as Os}from"@mantine/core";import{createReference as Fg,getExtension as Mg,getReferenceString as Es}from"@medplum/core";import Q,{useEffect as Fs,useState as Vo}from"react";function Ls(e){let o=v(),t=o.getProfile(),[r,a]=Vo(!1),n=X(e.questionnaire),[f,s]=Vo(),[l,i]=Vo(0);Fs(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Fs(()=>{s(n?Og(n):void 0)},[n]);function u(y){let k=f?.item??[],B={resourceType:"QuestionnaireResponse",item:Hs(k,y)};s(B)}if(!r||!n)return null;let d=Ng(n),c=()=>i(y=>y+1),x=()=>i(y=>y-1);return Q.createElement(K,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Es(n),subject:e.subject,source:Fg(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&Q.createElement(Os,null,n.title),n.item&&Q.createElement(Rs,{items:n.item??[],allResponses:f?.item??[],onChange:u,renderPages:d>1,activePage:l}),Q.createElement(wg,{activePage:l,numberOfPages:d,nextStep:c,prevStep:x,submitButtonText:e.submitButtonText}))}function Rs(e){let[o,t]=Vo(an(e.items));function r(n,f){let s=o.some(i=>i.id===n),l;s?l=o.map(i=>i.id===n?f:i):l=[...o,f],t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?Q.createElement(As.Step,{label:n.text,key:n.linkId},Q.createElement(Ms,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):Q.createElement(Ms,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?Q.createElement(As,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):Q.createElement(Ag,null,a)}function Ms(e){return Cs(e.item,e.allResponses)?e.item.type==="display"?Q.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?Q.createElement(rn,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):e.item.type==="boolean"?Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):Q.createElement(ve,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text,withAsterisk:e.item.required},Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function rn(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(s=>s.linkId===o.linkId);e.onChange({id:qg(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?Q.createElement(Hg,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):Q.createElement(Vg,{item:e.item,key:e.item.linkId},({index:r})=>Q.createElement(ir,{...e,index:r}))}function wg(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return Q.createElement(Bg,{position:"right",mt:"xl",spacing:"xs"},o&&Q.createElement(tn,{onClick:e.prevStep},"Back"),t&&Q.createElement(tn,{onClick:a=>{a.currentTarget.closest("form").reportValidity()&&e.nextStep()}},"Next"),r&&Q.createElement(tn,{type:"submit"},e.submitButtonText??"Submit"))}function Og(e){return{resourceType:"QuestionnaireResponse",questionnaire:Es(e),item:an(e.item)}}function an(e){return e?.map(Eg)??[]}function Eg(e){return{id:Ns(),linkId:e.linkId,text:e.text,item:an(e.item),answer:e.initial?.map(Rg)??[]}}var Lg=1;function Ns(){return"id-"+Lg++}function Rg(e){return{...e}}function Ng(e){let o=e?.item?.[0];return o&&Mg(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function Hg(e){let[o,t]=Vo(Gg(e.item,e.allResponses)),r=e.item;return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement("div",{key:n},e.text&&Q.createElement(Os,{order:3,mb:"md"},e.text),Q.createElement(Rs,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&Q.createElement(ws,{onClick:()=>t(a=>a+1)},"Add Group"))}function Vg(e){let[o,t]=Vo(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement(Q.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&Q.createElement(ws,{onClick:()=>t(a=>a+1)},"Add Item"))}function qg(e,o){return e.length===0||e.length<o+1?Ns():e[o].id}function Gg(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function Ug(e,o){let t=Hs(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function Qg(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(Ug(e[a],o[a])):o[a]&&t.push(o[a]);return t}function Hs(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat(Qg(a,n))}return t}import{ActionIcon as dr,Button as zg,createStyles as Wg,Divider as Xg,Group as dt,NativeSelect as nn,Stack as cr,Text as Jg,TextInput as Kg}from"@mantine/core";import{formatRange as Vs,getCodeBySystem as $g}from"@medplum/core";import z,{useEffect as jg,useState as fn}from"react";var _g=Wg(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"}})),Zg=["gender","age","gestationalAge","context","appliesTo","category"],Yg={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function L0(e){e=Object.assign(Yg,e);let o=e.definition,[t,r]=fn([]),[a,n]=fn(1),[f,s]=fn(1);return jg(()=>{let y=th(o,s);r(rh(y.qualifiedInterval||[],n))},[o]),z.createElement(K,{testid:"reference-range-editor",onSubmit:l},z.createElement(cr,null,t.map(y=>z.createElement(eh,{unit:nh(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:x,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(dr,{title:"Add Group",size:"sm",onClick:y=>{H(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},z.createElement(po,null)),z.createElement(dt,{position:"right"},z.createElement(zg,{type:"submit"},"Save")));function l(){let y=t.flatMap(k=>k.intervals).filter(k=>!fh(k));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(k=>[...k,y])}function u(y){r(k=>k.filter(T=>T.id!==y.id))}function d(y,k){r(T=>{T=[...T];let B=T.find(I=>I.id===y),A=B?.intervals.findIndex(I=>I.id===k.id);return A!==void 0&&B?.intervals[A]&&(B.intervals[A]=k),T})}function c(y,k){k.id===void 0&&(k.id=`id-${f}`,s(T=>T+1)),r(T=>{T=[...T];let B=T.findIndex(A=>A.id===y);if(B!==-1){let A={...T[B]};k={...k,...A.filters},A.intervals=[...A.intervals,k],T[B]=A}return T})}function x(y,k){r(T=>{T=[...T];let B=T.find(A=>A.id===y);return B&&(B.intervals=B.intervals.filter(A=>A.id!==k.id)),T})}}function eh(e){let{intervalGroup:o,unit:t}=e,{classes:r}=_g();return z.createElement($e,{"data-testid":o.id,className:r.section},z.createElement(cr,{spacing:"lg"},z.createElement(dt,{position:"right"},z.createElement(dr,{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(We,null))),z.createElement(oh,{intervalGroup:o,onChange:e.onChange}),z.createElement(Xg,null),o.intervals.map(a=>z.createElement(cr,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(dt,null,z.createElement(Kg,{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(dr,{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(We,null))),z.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(dr,{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 oh(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(cr,{style:{maxWidth:"50%"}},z.createElement(dt,null,z.createElement(nn,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(dt,{spacing:"xs"},z.createElement(Jg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(ot,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(nn,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(nn,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function th(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 rh(e,o){let t=1,r={};for(let a of e){let n=ah(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Zg.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function ah(e){return[`gender=${e.gender}`,`age=${Vs(e.age)}`,`gestationalAge=${Vs(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function nh(e){return e&&($g(e,"http://unitsofmeasure.org")||e.text)}function fh(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as qs,Grid as mr,Text as lh}from"@mantine/core";import{formatDateTime as sh,getReferenceString as ih}from"@medplum/core";import Ie,{useEffect as uh,useState as Gs}from"react";function W0(e){let o=v(),t=X(e.value),[r,a]=Gs(!1),[n,f]=Gs();if(uh(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return Ie.createElement(mr,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,x=d?.output?.[0]?.valueReference;return Ie.createElement(Ie.Fragment,{key:`action-${u}`},Ie.createElement(mr.Col,{span:1,p:"md"},d?.status==="completed"?Ie.createElement(Br,null):Ie.createElement(Xr,{color:"gray"})),Ie.createElement(mr.Col,{span:9,p:"xs"},Ie.createElement(lh,{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",sh(d?.meta?.lastUpdated)),Ie.createElement("div",null,"Status: ",Ie.createElement(Xt,{status:d?.status||"unknown"}))),Ie.createElement(mr.Col,{span:2,p:"md"},c&&!x&&Ie.createElement(qs,{onClick:()=>e.onStart(d,c)},"Start"),c&&x&&Ie.createElement(qs,{onClick:()=>e.onEdit(d,c,x)},"Edit")))}));function s(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===ih(u.resource))return u.resource}}import{createStyles as gh}from"@mantine/core";import Ce,{useEffect as hh,useState as Ch}from"react";import{stringify as ph}from"@medplum/core";function pr(e,o){let t=dh(e,o);return ch(t,e,o)}function dh(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,d=u+1,c=u-1,x=s[d],y=s[c],k,T=0;i===-l||i!==l&&y.i<x.i?(T=x.i,k=x):(T=y.i+1,k=y),s[c]=void 0;let B=T-i,A={i:T,j:B,prev:mh(k),snake:!1};for(;T<t&&B<r&&e[T]===o[B];)T++,B++;if(T>A.i&&(A={i:T,j:B,prev:A,snake:!0}),s[u]=A,T>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function ch(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function mh(e){return e&&!e.snake&&e.prev?e.prev:e}function Us(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:ph(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 xh(t,o),Ih(t),t}function xh(e,o){for(let t=1;t<o.length;t++){let r=pr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function Ih(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}function Qs(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function zs(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return qo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return qo(r,"month");let a=Math.floor(o/86400);if(a>0)return qo(a,"day");let n=Math.floor(o/3600);if(n>0)return qo(n,"hour");let f=Math.floor(o/60);return f>0?qo(f,"minute"):qo(o,"second")}function qo(e,o){return`${e} ${e===1?o:o+"s"} ago`}var yh=gh(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 n1(e){let{classes:o}=yh(),t=v(),[r,a]=Ch(e.history);if(hh(()=>{!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 Ce.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Us(r);return Ce.createElement("div",{className:o.container},Ce.createElement("table",{className:o.root},Ce.createElement("tbody",null,f.map((s,l)=>Ce.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&Ce.createElement(Ce.Fragment,null,Ce.createElement("td",{className:o.author,rowSpan:s.span},Ce.createElement(_e,{value:s.meta.author,link:!0})),Ce.createElement("td",{className:o.dateTime,rowSpan:s.span},Ce.createElement(se,{to:Qs(n,s.meta.versionId)},zs(s.meta.lastUpdated)))),Ce.createElement("td",{className:o.lineNumber},l+1),Ce.createElement("td",{className:o.line},Ce.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as vh}from"@mantine/core";import{stringify as Ws}from"@medplum/core";import eo from"react";var Sh=vh(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function c1(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Ws(o,!0).match(/[^\r\n]+/g),a=Ws(t,!0).match(/[^\r\n]+/g),n=pr(r,a);return eo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>eo.createElement(bh,{key:"delta"+s,delta:f})))}function bh(e){let{classes:o}=Sh();return eo.createElement(eo.Fragment,null,"...",eo.createElement("br",null),e.delta.original.lines.length>0&&eo.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
64
|
+
}`.replace(/\s+/g," ")}function lu(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),iu(su(t),o).slice(0,5)}function su(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function iu(e,o){return e.sort((t,r)=>En(r,o)-En(t,o))}function En(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Ln(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Ln(Zi(r),o));return t}function Ln(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Iu=du(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function qn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=Iu(),[l,i]=xu(!1);return U.createElement(cu,{height:60,p:8,style:{zIndex:101}},U.createElement(vt,{position:"apart"},U.createElement(vt,{spacing:"xs"},U.createElement(Hn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&U.createElement(Nn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},U.createElement(He.Target,null,U.createElement(Hn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},U.createElement(vt,{spacing:7},U.createElement(he,{value:r,radius:"xl",size:24}),U.createElement(Ko,{size:"sm",className:f.userName},pu(r?.name?.[0])),U.createElement(Mr,{size:12,stroke:1.5})))),U.createElement(He.Dropdown,null,U.createElement(mu,{align:"center",p:"xl"},U.createElement(he,{size:"xl",radius:100,value:o.profile}),U.createElement(Ct,{value:o.profile?.name?.[0]}),U.createElement(Ko,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(He.Divider,null),n.map(u=>u.profile.reference!==Vn(o.profile)&&U.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(vt,null,U.createElement(uu,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(Ko,{size:"sm",weight:500},u.profile.display),U.createElement(Ko,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(He.Divider,null),U.createElement(He.Item,{icon:U.createElement($r,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(He.Item,{icon:U.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Vn(r)}`)},"Account settings"),U.createElement(He.Item,{icon:U.createElement(qr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(Ko,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Gu,createStyles as Uu,Navbar as oa,ScrollArea as Qu,Space as zu,Text as Wu}from"@mantine/core";import le,{useState as Xu}from"react";import{Button as yu,Group as vu,Modal as Su,NativeSelect as bu,Stack as Pu,TextInput as Du}from"@mantine/core";import{showNotification as Un}from"@mantine/notifications";import{deepClone as Tu,normalizeErrorString as ku}from"@medplum/core";import Je from"react";import Cu from"react";function Gn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?gu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&hu(o,t);return o}function gu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function hu(e,o){e[o.name]=o.value}function $(e){return Cu.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Gn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Qn(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=Tu(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Un({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Un({color:"red",message:ku(u)})})}return Je.createElement(Su,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Je.createElement($,{onSubmit:r},Je.createElement(Pu,null,Je.createElement(Bu,{config:t}),Je.createElement(Du,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Je.createElement(vu,{position:"right"},Je.createElement(yu,{mt:"sm",type:"submit"},"OK")))))}function Bu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Je.createElement(bu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Hu,{useCallback as Vu,useState as qu}from"react";import Eu,{useState as Lu}from"react";import Au,{useCallback as Fu}from"react";function ea(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Mu(e){return typeof e.display=="string"?e.display:ea(e)}function wu(e){return{value:ea(e),label:Mu(e),resource:e}}function Ou(e){return{code:e,display:e}}function bo(e){let o=P(),{binding:t,creatable:r,clearable:a,...n}=e,f=Fu(async(s,l)=>{if(!t)return[];let u=(await o.searchValueSet(t,s,{signal:l})).expansion?.contains,d=[];for(let c of u)c.code&&!d.some(x=>x.code===c.code)&&d.push(c);return d},[o,t]);return Au.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:ea,toOption:wu,loadOptions:f,onCreate:Ou,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function St(e){let[o,t]=Lu(e.defaultValue);function r(a){let n=a[0],f=Nu(n);t(f),e.onChange&&e.onChange(f)}return Eu.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Ru(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Ru(e){return e?{code:e}:void 0}function Nu(e){return e?.code}function Po(e){let[o,t]=qu(e.defaultValue),r=e.onChange,a=Vu(n=>{t(n),r&&r(n)},[r]);return Hu.createElement(St,{"data-autofocus":e.autoFocus,"data-testid":e.testId,defaultValue:o,onChange:a,name:e.name,placeholder:e.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var zn=Uu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function Wn(e){let{classes:o}=zn(),t=Qe(),r=Ku(e.pathname,e.searchParams,e.menus),[a,n]=Xu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return le.createElement(le.Fragment,null,le.createElement(oa,{width:{sm:250},p:"xs"},le.createElement(Qu,null,!e.resourceTypeSearchDisabled&&le.createElement(oa.Section,{mb:"sm"},le.createElement(Po,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),le.createElement(oa.Section,{grow:!0},e.menus?.map(l=>le.createElement(le.Fragment,{key:`menu-${l.title}`},le.createElement(Wu,{className:o.menuTitle},l.title),l.links?.map(i=>le.createElement(Ju,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},le.createElement($u,{to:i.href,icon:i.icon}),le.createElement("span",null,i.label))))),e.displayAddBookmark&&le.createElement(Gu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:le.createElement(zr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&le.createElement(Qn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Ju(e){let{classes:o,cx:t}=zn();return le.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function $u(e){return e.icon?e.icon:le.createElement(zu,{w:30})}function Ku(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let s=ju(e,o,f.href);s>a&&(a=s,r=f)}return r}function ju(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function Vb(e){let o=Zu(),[t,r]=td(localStorage.navbarOpen==="true"),a=P(),n=pt();od(()=>{function i(){Yu({color:"red",message:"No connection to server",autoClose:!1})}return a.addEventListener("offline",i),()=>a.removeEventListener("offline",i)},[a]);function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ao.createElement(Zr,null):ao.createElement(_u,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ao.createElement(qn,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ao.createElement(Wn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0},ao.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},ao.createElement(ed,{fallback:ao.createElement(Zr,null)},e.children)))}import ta from"react";import{Anchor as rd}from"@mantine/core";import $e from"react";function Oe(e){let{contentType:o,url:t,title:r}=e.value??{};return t?$e.createElement("div",{"data-testid":"attachment-display"},o?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:t,alt:r}),o?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:o,src:t})),o==="application/pdf"&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:t+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(rd,{href:t,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:ad(r)},r||"Download"))):null}function ad(e){return e?.includes(".")?e:void 0}function Xn(e){return ta.createElement("div",null,e.values?.map((o,t)=>ta.createElement("div",{key:"attatchment-"+t},ta.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Jn}from"@mantine/core";import ie,{useRef as ld,useState as sd}from"react";import ra,{useRef as nd}from"react";import{normalizeOperationOutcome as fd}from"@medplum/core";function Do(e){let o=P(),t=nd(null);function r(f){N(f),t.current?.click()}function a(f){N(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{e.onUploadError&&e.onUploadError(fd(u))})}return ra.createElement(ra.Fragment,null,ra.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function $n(e){let[o,t]=sd(e.defaultValue??[]),r=ld();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Oe,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(Jn,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(We,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(Do,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(Jn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Wo,{size:16})))))))}import{Button as Kn}from"@mantine/core";import To,{useState as id}from"react";function bt(e){let[o,t]=id(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?To.createElement(To.Fragment,null,To.createElement(Oe,{value:o,maxWidth:200}),To.createElement(Kn,{onClick:a=>{N(a),r(void 0)}},"Remove")):To.createElement(Do,{onUpload:r},a=>To.createElement(Kn,{...a},"Upload..."))}import{normalizeOperationOutcome as Ud}from"@medplum/core";import Mt,{useEffect as Qd,useState as nf}from"react";import jn from"react";import{Container as ud,createStyles as dd}from"@mantine/core";import cd from"react";var md=dd(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=md();return cd.createElement(ud,{className:r.root,...t},o)}import{createStyles as pd,Paper as xd,useComponentDefaultProps as Id}from"@mantine/core";import gd from"react";var hd=pd((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Cd={shadow:"xs",radius:"md",withBorder:!0};function ko(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Id("Panel",Cd,e),{classes:s,cx:l}=hd({width:r,fill:a},{name:"Panel",unstyled:n});return gd.createElement(xd,{className:l(s.paper,o),...f},t)}function Pt(e){let{children:o,...t}=e;return jn.createElement(Ke,null,jn.createElement(ko,{...t},o))}import{Anchor as Zn,Button as yd,Center as vd,Group as Sd,Stack as bd,Text as Pd,TextInput as Dd,Title as Td}from"@mantine/core";import{normalizeOperationOutcome as kd}from"@medplum/core";import ke,{useState as Bd}from"react";import no from"react";function je(e){return no.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},no.createElement("title",null,"Medplum Logo"),no.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),no.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),no.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),no.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),no.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function pe(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
+
`)}function Dt(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))}function _n(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function Tt(e){let o=P(),[t,r]=Bd();return ke.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(kd(n))}}},ke.createElement(vd,{sx:{flexDirection:"column"}},ke.createElement(je,{size:32}),ke.createElement(Td,null,"Create project")),ke.createElement(bd,{spacing:"xl"},ke.createElement(Dd,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:pe(t,"firstName")}),ke.createElement(Pd,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",ke.createElement(Zn,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",ke.createElement(Zn,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),ke.createElement(Sd,{position:"right",mt:"xl",noWrap:!0},ke.createElement(yd,{type:"submit"},"Create project")))}import{Anchor as Ft,Button as Ed,Center as Ld,Checkbox as Rd,Divider as Nd,Group as of,PasswordInput as Hd,Stack as Vd,Text as tf,TextInput as fa}from"@mantine/core";import{normalizeOperationOutcome as rf}from"@medplum/core";import _,{useEffect as qd,useState as Gd}from"react";import Ad,{useEffect as Fd,useRef as Md,useState as aa}from"react";function kt(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function Bt(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=Md(null),[n,f]=aa(typeof google<"u"),[s,l]=aa(!1),[i,u]=aa(!1);return Fd(()=>{if(typeof google>"u"){kt("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?Ad.createElement("div",{ref:a}):null}function At(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}import{Alert as wd}from"@mantine/core";import{operationOutcomeIssueToString as Od}from"@medplum/core";import na from"react";function Bo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:na.createElement(wd,{icon:na.createElement(ro,{size:16}),color:"red"},o.map(t=>na.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},Od(t))))}function Yn(e){typeof grecaptcha>"u"&&kt("https://www.google.com/recaptcha/api.js?render="+e)}function ef(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function af(e){let o=At(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=Gd(),f=Dt(a,void 0);return qd(()=>{t&&Yn(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await ef(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(rf(l))}}},_.createElement(Ld,{sx:{flexDirection:"column"}},e.children),_.createElement(Bo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(of,{position:"center",p:"xl",style:{height:70}},_.createElement(Bt,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(rf(l))}}})),_.createElement(Nd,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Vd,{spacing:"xl"},_.createElement(fa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:pe(a,"firstName")}),_.createElement(fa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:pe(a,"lastName")}),_.createElement(fa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:pe(a,"email")}),_.createElement(Hd,{name:"password",label:"Password",autoComplete:"off",required:!0,error:pe(a,"password")}),_.createElement(tf,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(Ft,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Ft,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(tf,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(Ft,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Ft,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(of,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Rd,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Ed,{type:"submit"},"Create account")))}function xD(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=P(),[l,i]=nf(),[u,d]=nf();Qd(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(x=>s.processCode(x.code)).then(()=>f()).catch(x=>d(Ud(x)))},[s,o,t,l,f]);function c(x){x.code?s.processCode(x.code).then(()=>f()).catch(console.log):x.login&&i(x.login)}return Mt.createElement(Pt,{width:450},u&&Mt.createElement("pre",null,JSON.stringify(u,null,2)),!l&&Mt.createElement(af,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&Mt.createElement(Tt,{login:l,handleAuthResponse:c}))}import{showNotification as hf}from"@mantine/notifications";import{normalizeErrorString as Cf}from"@medplum/core";import fo,{useCallback as sa,useEffect as Cc,useState as ia}from"react";import{Anchor as ff,Button as lf,Center as sf,Checkbox as zd,Divider as Wd,Group as la,PasswordInput as Xd,Stack as Jd,TextInput as $d}from"@mantine/core";import{normalizeOperationOutcome as Kd}from"@medplum/core";import K,{useCallback as wt,useState as uf}from"react";function df(e){let[o,t]=uf();return o?K.createElement(_d,{email:o,...e}):K.createElement(jd,{setEmail:t,...e})}function jd(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=P(),l=!e.disableGoogleAuth&&At(e.googleClientId),i=wt(async c=>{if(!c.authorizeUrl)return!1;let x=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",x),window.location.assign(y.toString()),!0},[s,f]),u=wt(async c=>{let x=await s.post("auth/method",{email:c.email});await i(x)||o(c.email)},[s,i,o]),d=wt(async c=>{let x=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(x)||r(x)},[s,f,i,r]);return K.createElement($,{style:{maxWidth:400},onSubmit:u},K.createElement(sf,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(la,{position:"center",p:"xl",style:{height:70}},K.createElement(Bt,{googleClientId:l,handleGoogleCredential:d})),!n&&K.createElement(Wd,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement($d,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(la,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(ff,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(lf,{type:"submit"},"Next")))}function _d(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,s]=uf(),l=Dt(f,void 0),i=wt(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(Kd(d)))},[n,a,t]);return K.createElement($,{style:{maxWidth:400},onSubmit:i},K.createElement(sf,{sx:{flexDirection:"column"}},r),K.createElement(Bo,{issues:l}),K.createElement(Jd,{spacing:"xl"},K.createElement(Xd,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:pe(f,"password")})),K.createElement(la,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(ff,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(zd,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(lf,{type:"submit"},"Sign in")))}import{Avatar as Zd,Center as Yd,Group as ec,Stack as oc,Text as cf,Title as tc,UnstyledButton as rc}from"@mantine/core";import{normalizeOperationOutcome as ac}from"@medplum/core";import Be,{useState as nc}from"react";function mf(e){let o=P(),[t,r]=nc();return Be.createElement(oc,null,Be.createElement(Yd,{sx:{flexDirection:"column"}},Be.createElement(je,{size:32}),Be.createElement(tc,{order:3},"Choose profile")),Be.createElement(Bo,{outcome:t}),e.memberships.map(a=>Be.createElement(rc,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(ac(n)))}},Be.createElement(ec,null,Be.createElement(Zd,{radius:"xl"}),Be.createElement("div",{style:{flex:1}},Be.createElement(cf,{size:"sm",weight:500},a.profile?.display),Be.createElement(cf,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as fc,Center as lc,Checkbox as sc,Group as ic,Stack as pf,Title as uc}from"@mantine/core";import Ve from"react";function xf(e){let o=P();return Ve.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ve.createElement(pf,null,Ve.createElement(lc,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(uc,null,"Choose scope")),Ve.createElement(pf,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(sc,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement(ic,{position:"right",mt:"xl"},Ve.createElement(fc,{type:"submit"},"Set scope"))))}import{Alert as dc,Button as cc,Center as mc,Group as pc,Stack as If,TextInput as xc,Title as Ic}from"@mantine/core";import{normalizeErrorString as gc}from"@medplum/core";import Ae,{useState as hc}from"react";function gf(e){let o=P(),[t,r]=hc();return Ae.createElement($,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(gc(n)))}},Ae.createElement(If,null,Ae.createElement(mc,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(Ic,null,"Enter MFA code")),t&&Ae.createElement(dc,{icon:Ae.createElement(ro,{size:16}),title:"Error",color:"red"},t),Ae.createElement(If,null,Ae.createElement(xc,{name:"token",label:"MFA code",required:!0})),Ae.createElement(pc,{position:"right",mt:"xl"},Ae.createElement(cc,{type:"submit"},"Submit code"))))}function cT(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=P(),[i,u]=ia(),[d,c]=ia(!1),[x,y]=ia(),k=sa(A=>{f?f(A):l.processCode(A).then(()=>{r&&r()}).catch(I=>hf({color:"red",message:Cf(I)}))},[l,f,r]),T=sa(A=>{c(!!A.mfaRequired),A.login&&u(A.login),A.memberships&&y(A.memberships),A.code&&(t?y(void 0):k(A.code))},[t,k]),B=sa(A=>{k(A.code)},[k]);return Cc(()=>{o&&!i&&l.get("auth/login/"+o).then(T).catch(A=>hf({color:"red",message:Cf(A)}))},[l,o,i,T]),fo.createElement(Pt,{width:450},(()=>i?d?fo.createElement(gf,{login:i,handleAuthResponse:T}):x?fo.createElement(mf,{login:i,memberships:x,handleAuthResponse:T}):e.projectId==="new"?fo.createElement(Tt,{login:i,handleAuthResponse:T}):e.chooseScopes?fo.createElement(xf,{login:i,scope:e.scope,handleAuthResponse:B}):fo.createElement("div",null,"Success"):fo.createElement(df,{onForgotPassword:a,onRegister:n,handleAuthResponse:T,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}import{getPropertyDisplayName as Nc,tryGetDataType as Hc}from"@medplum/core";import Yo from"react";var Ot=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as yc}from"@mantine/core";import jo from"react";var vc=yc(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function yf(e){let{children:o,compact:t}=e,{classes:r,cx:a}=vc();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function vf(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{ActionIcon as Ac,Box as Fc,CopyButton as Mc,Tooltip as wc}from"@mantine/core";import{formatDateTime as Oc,formatPeriod as Ec,formatTiming as Lc,PropertyType as H}from"@medplum/core";import E from"react";import{formatCodeableConcept as Sc}from"@medplum/core";import Sf from"react";function Ao(e){return Sf.createElement(Sf.Fragment,null,Sc(e.value))}import{formatCoding as bc}from"@medplum/core";import bf from"react";function Pf(e){return bf.createElement(bf.Fragment,null,bc(e.value))}import ua from"react";import Df from"react";function Et(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Df.createElement(Df.Fragment,null,t.join("").trim())}function Tf(e){let o=e.value;return o?ua.createElement(ua.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>ua.createElement(Et,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Pc from"react";function kf(e){return Pc.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Dc}from"@medplum/core";import Bf from"react";function Af(e){return Bf.createElement(Bf.Fragment,null,Dc(e.value))}import{formatQuantity as Tc}from"@medplum/core";import Ff from"react";function _o(e){return Ff.createElement(Ff.Fragment,null,Tc(e.value))}import{formatRange as kc}from"@medplum/core";import Mf from"react";function Lt(e){return Mf.createElement(Mf.Fragment,null,kc(e.value))}import Rt from"react";function wf(e){let o=e.value;return o?Rt.createElement(Rt.Fragment,null,Rt.createElement(_o,{value:o.numerator}),"\xA0/\xA0",Rt.createElement(_o,{value:o.denominator})):null}import{stringify as Bc}from"@medplum/core";import da from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Bc(e.value);return e.link!==!1&&e.value.reference?da.createElement(se,{to:e.value},o):da.createElement(da.Fragment,null,o)}import Fo from"react";function Of(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?Fo.createElement(Fo.Fragment,null,t.map((a,n)=>Fo.createElement("div",{key:`${n}-${t.length}`},Fo.createElement(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Fo.createElement(Fo.Fragment,null)}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Fc,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Mc,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(wc,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Ac,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(Or,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===H.Attachment?E.createElement(Xn,{values:r,maxWidth:e.maxWidth}):E.createElement(Of,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case H.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case H.SystemString:case H.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case H.code:case H.date:case H.decimal:case H.integer:case H.positiveInt:case H.unsignedInt:case H.uri:case H.url:return E.createElement(E.Fragment,null,r);case H.canonical:return E.createElement(lo,{value:{reference:r},link:e.link});case H.dateTime:case H.instant:return E.createElement(E.Fragment,null,Oc(r));case H.markdown:return E.createElement("pre",null,r);case H.Address:return E.createElement(xn,{value:r});case H.Annotation:return E.createElement(E.Fragment,null,r?.text);case H.Attachment:return E.createElement(Oe,{value:r,maxWidth:e.maxWidth});case H.CodeableConcept:return E.createElement(Ao,{value:r});case H.Coding:return E.createElement(Pf,{value:r});case H.ContactDetail:return E.createElement(Tf,{value:r});case H.ContactPoint:return E.createElement(Et,{value:r});case H.HumanName:return E.createElement(Ct,{value:r});case H.Identifier:return E.createElement(kf,{value:r});case H.Money:return E.createElement(Af,{value:r});case H.Period:return E.createElement(E.Fragment,null,Ec(r));case H.Quantity:case H.Duration:return E.createElement(_o,{value:r});case H.Range:return E.createElement(Lt,{value:r});case H.Ratio:return E.createElement(wf,{value:r});case H.Reference:return E.createElement(lo,{value:r,link:e.link});case H.Timing:return E.createElement(E.Fragment,null,Lc(r));case H.Dosage:case H.UsageContext:return E.createElement(Zo,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o)throw Error(`Displaying property of type ${e.propertyType} requires element schema`);return E.createElement(Zo,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}import{getTypedPropertyValue as Rc}from"@medplum/core";function ve(e,o){let t=Rc(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Hc(r);return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Yo.createElement("div",null,t.name):Yo.createElement(yf,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Ot.includes(f))return null;let[l,i]=ve(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:Yo.createElement(vf,{key:f,term:Nc(f)},Yo.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as up}from"@mantine/core";import{getPropertyDisplayName as fl,tryGetDataType as dp}from"@medplum/core";import Oo,{useState as cp}from"react";import{Group as Vc,Input as qc}from"@mantine/core";import Nt from"react";function Ht(e){return Nt.createElement(Vc,{noWrap:!0},Nt.createElement("div",null,e.children),Nt.createElement("div",null,Nt.createElement(qc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Gc}from"@mantine/core";import Uc from"react";function Se(e){return Uc.createElement(Gc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:pe(e.outcome,e.htmlFor)},e.children)}import{capitalize as Qc}from"@medplum/core";function et(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",Qc(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as tp,Group as rp,NativeSelect as ap,Textarea as np,TextInput as ya}from"@mantine/core";import{capitalize as fp,PropertyType as L}from"@medplum/core";import G,{useState as lp}from"react";import zc,{useState as Wc}from"react";function Ef(e){let[o,t]=Wc(e.defaultValue);function r(a){let n=Jc(a);t(n),e.onChange&&e.onChange(n)}return zc.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Xc(o),maxSelectedValues:1,onChange:r})}function Xc(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Jc(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import $c,{useState as Kc}from"react";function Vt(e){let[o,t]=Kc(e.defaultValue);function r(a){let n=a[0],f=n&&_c(n);t(f),e.onChange&&e.onChange(f)}return $c.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&jc(o),maxSelectedValues:1,onChange:r})}function jc(e){return{system:e.system,code:e.code,display:e.display}}function _c(e){return{system:e.system,code:e.code,display:e.display}}import{Group as tm,TextInput as rm}from"@mantine/core";import ca,{useRef as am,useState as nm}from"react";import{Group as Zc,NativeSelect as Lf,TextInput as Yc}from"@mantine/core";import qt,{useRef as em,useState as om}from"react";function Gt(e){let[o,t]=om(e.defaultValue),r=em();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return qt.createElement(Zc,{spacing:"xs",grow:!0,noWrap:!0},qt.createElement(Lf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),qt.createElement(Lf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),qt.createElement(Yc,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function Rf(e){let[o,t]=nm(e.defaultValue),r=am();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return ca.createElement(tm,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(rm,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),ca.createElement(Gt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as fm}from"@mantine/core";import lm from"react";import{isValidDate as Nf}from"@medplum/core";function Hf(e){if(!e)return"";let o=new Date(e);return Nf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Vf(e){if(!e)return"";let o=new Date(e);return Nf(o)?o.toISOString():""}function Fe(e){return lm.createElement(fm,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:sm(),defaultValue:Hf(e.defaultValue),autoFocus:e.autoFocus,error:pe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Vf(t))}}})}function sm(){return"datetime-local"}import{JsonInput as im}from"@mantine/core";import{stringify as um}from"@medplum/core";import dm from"react";function qf(e){return dm.createElement(im,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:um(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as cm,NativeSelect as mm,TextInput as Ut}from"@mantine/core";import Mo,{useRef as pm,useState as xm}from"react";function Gf(e){let[o,t]=xm(e.defaultValue),r=pm();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Mo.createElement(cm,{spacing:"xs",grow:!0,noWrap:!0},Mo.createElement(mm,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Mo.createElement(Ut,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Mo.createElement(Ut,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Mo.createElement(Ut,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Mo.createElement(Ut,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Im,TextInput as Uf}from"@mantine/core";import ma,{useState as gm}from"react";function Qf(e){let[o,t]=gm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ma.createElement(Im,{spacing:"xs",grow:!0,noWrap:!0},ma.createElement(Uf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ma.createElement(Uf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as hm,TextInput as Cm}from"@mantine/core";import pa,{useCallback as xa,useState as ym}from"react";var vm=["USD","EUR","CAD","GBP","AUD"];function zf(e){let{onChange:o}=e,[t,r]=ym(e.defaultValue),a=xa(l=>{r(l),o&&o(l)},[o]),n=xa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=xa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=pa.createElement(hm,{defaultValue:t?.currency,data:vm,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return pa.createElement(Cm,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:pa.createElement(Er,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as Sm}from"@mantine/core";import Ia,{useState as bm}from"react";function Wf(e){let[o,t]=bm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ia.createElement(Sm,{spacing:"xs",grow:!0,noWrap:!0},Ia.createElement(Fe,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Ia.createElement(Fe,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Pm,NativeSelect as Dm,TextInput as Xf}from"@mantine/core";import Qt,{useState as Tm}from"react";function Pe(e){let[o,t]=Tm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qt.createElement(Pm,{spacing:"xs",grow:!0,noWrap:!0},Qt.createElement(Dm,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Qt.createElement(Xf,{id:e.name,name:e.name,required:e.required,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:km(a.currentTarget.value)})}}),Qt.createElement(Xf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function km(e){if(e)return parseFloat(e)}import{Group as Bm}from"@mantine/core";import ga,{useState as Am}from"react";function ot(e){let[o,t]=Am(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ga.createElement(Bm,{spacing:"xs",grow:!0,noWrap:!0},ga.createElement(Pe,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ga.createElement(Pe,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Fm}from"@mantine/core";import ha,{useState as Mm}from"react";function Jf(e){let[o,t]=Mm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ha.createElement(Fm,{spacing:"xs",grow:!0,noWrap:!0},ha.createElement(Pe,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ha.createElement(Pe,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Gm,NativeSelect as Um}from"@mantine/core";import{createReference as Qm}from"@medplum/core";import Wt,{useState as _f}from"react";import{Group as wm,Text as $f}from"@mantine/core";import{getDisplayString as Om,getReferenceString as jf}from"@medplum/core";import so,{forwardRef as Em,useCallback as Kf,useState as Lm}from"react";var Rm={Observation:"code",User:"email:contains"},Nm=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function Hm(e){return{value:jf(e),label:Om(e),resource:e}}function zt(e){let o=P(),t=e.resourceType,[r,a]=Lm(),n=X(e.defaultValue,a),f=e.onChange,s=Kf(async(i,u)=>{let d=qm(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Kf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(So,{name:e.name,required:e.required,itemComponent:Vm,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:jf,toOption:Hm,loadOptions:s,onChange:l,clearable:!0})}var Vm=Em(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(wm,{noWrap:!0},so.createElement(he,{value:o}),so.createElement("div",null,so.createElement($f,null,e),so.createElement($f,{size:"xs",color:"dimmed"},o.birthDate)))));function qm(e){return Rm[e]??(Nm.includes(e)?"name":"_id")}function wo(e){let o=zm(e.targetTypes),t=Wm(e.defaultValue,o),[r,a]=_f(e.defaultValue),[n,f]=_f(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Wt.createElement(Gm,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Wt.createElement(Um,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:l=>f(l.currentTarget.value),data:o}),!o&&Wt.createElement(Po,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Wt.createElement(zt,{resourceType:n,name:e.name+"-id",required:e.required,placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?Qm(l):void 0)}}))}function zm(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Wm(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as Zf}from"@mantine/core";import Ie,{useRef as Xm,useState as Jm}from"react";function Yf(e){let[o,t]=Jm(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Xm();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return Ie.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Ie.createElement("colgroup",null,Ie.createElement("col",{width:"97%"}),Ie.createElement("col",{width:"3%"})),Ie.createElement("tbody",null,o.map((n,f)=>Ie.createElement("tr",{key:`${f}-${o.length}`},Ie.createElement("td",null,Ie.createElement(qe,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Zf,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=[...r.current];l.splice(f,1),a(l)}},Ie.createElement(We,null))))),Ie.createElement("tr",null,Ie.createElement("td",null),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Zf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},Ie.createElement(po,null))))))}import{Button as tl,Chip as el,Group as Xt,Modal as $m,NativeSelect as Km,Stack as jm,Switch as _m,TextInput as Zm}from"@mantine/core";import{formatTiming as Ym}from"@medplum/core";import j,{useRef as rl,useState as Ca}from"react";var ep=["sun","mon","tue","wed","thu","fri","sat"];function al(e){let[o,t]=Ca(e.defaultValue),[r,a]=Ca(!1),n=rl();return n.current=o,j.createElement(j.Fragment,null,j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement("span",null,Ym(n.current)||"No repeat"),j.createElement(tl,{onClick:()=>a(!0)},"Edit")),j.createElement(op,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var ol={repeat:{period:1,periodUnit:"d"}};function op(e){let[o,t]=Ca(e.defaultValue||ol),r=rl();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return j.createElement($m,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},j.createElement(jm,null,j.createElement(Se,{title:"Starts on",htmlFor:"timing-dialog-start"},j.createElement(Fe,{name:"timing-dialog-start",onChange:i=>a(i)})),j.createElement(_m,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?ol.repeat:void 0)}),o.repeat&&j.createElement(j.Fragment,null,j.createElement(Se,{title:"Repeat every",htmlFor:"timing-dialog-period"},j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(Zm,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),j.createElement(Km,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>s(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&j.createElement(Se,{title:"Repeat on"},j.createElement(el.Group,{multiple:!0,onChange:l},j.createElement(Xt,{position:"apart",mt:"md",spacing:"xs"},ep.map(i=>j.createElement(el,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),j.createElement(Xt,{position:"right"},j.createElement(tl,{onClick:()=>e.onOk(o)},"OK"))))}function qe(e){let o=e.property,t=e.defaultPropertyType??o.type[0].code,r=e.name,a=e.defaultValue;if(o.max>1&&!e.arrayElement)return t===L.Attachment?G.createElement($n,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Yf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(sp,{elementDefinitionTypes:n,...e}):G.createElement(nl,{elementDefinitionType:n[0],...e})}function sp(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=lp(t);return G.createElement(rp,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(ap,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(nl,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",fp(r.code)))}}))}function nl(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(ya,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.date:return G.createElement(ya,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Fe,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(ya,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(St,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(tp,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(np,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return G.createElement(Cn,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(yn,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(bt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(Ef,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(Vt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Rf,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Gt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(qf,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(Gf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(Qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(zf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(Wf,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(Pe,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(ot,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(Jf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(wo,{name:r,defaultValue:a,targetTypes:ip(o),onChange:e.onChange});case L.Timing:return G.createElement(al,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(tt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(tt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function ip(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=cp(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=dp(a);if(!n)return Oo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Oo.createElement(up,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Ot.includes(s)||!l.type)return null;let[i,u]=ve(f,s),d=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Oo.createElement(Ht,{key:s,title:fl(s),description:l.description,htmlFor:s},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}})):Oo.createElement(Se,{key:s,title:fl(s),description:l.description,withAsterisk:d,htmlFor:s,outcome:e.outcome},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}}))}))}import{Button as va,createStyles as mp,Group as sl}from"@mantine/core";import oe,{useMemo as pp,useState as xp}from"react";function ll(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Jt(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var Ip=mp(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function il(e){let{classes:o}=Ip(),{onChangeMonth:t,onClick:r}=e,[a,n]=xp(Jt);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=pp(()=>gp(a,e.slots),[a,e.slots]);return oe.createElement("div",null,oe.createElement(sl,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},oe.createElement("p",{style:{flex:1}},ll(a)),oe.createElement(sl,{position:"right",spacing:"xs"},oe.createElement(va,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),oe.createElement(va,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),oe.createElement("table",{className:o.table},oe.createElement("thead",null,oe.createElement("tr",null,oe.createElement("th",null,"SUN"),oe.createElement("th",null,"MON"),oe.createElement("th",null,"TUE"),oe.createElement("th",null,"WED"),oe.createElement("th",null,"THU"),oe.createElement("th",null,"FRI"),oe.createElement("th",null,"SAT"))),oe.createElement("tbody",null,s.map((l,i)=>oe.createElement("tr",{key:"week-"+i},l.map((u,d)=>oe.createElement("td",{key:"day-"+d},u&&oe.createElement(va,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function gp(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:hp(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function hp(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import vx from"react";import{ActionIcon as kl,Center as nx,createStyles as fx,Group as lx,Loader as sx,Menu as Ge,ScrollArea as ix,TextInput as ux}from"@mantine/core";import{showNotification as dx,updateNotification as jt}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as Bl}from"@medplum/core";import D,{useCallback as _t,useEffect as cx,useRef as Al,useState as Fl}from"react";import{createStyles as wp,Group as Kt,List as cl,Stack as ml,Text as De,Title as pl}from"@mantine/core";import{capitalize as Op,formatCodeableConcept as Ep,formatDateTime as Pa,formatObservationValue as Lp,isReference as Rp}from"@medplum/core";import h,{useEffect as Np,useState as Hp}from"react";import{Blockquote as Cp,createStyles as yp,Stack as vp}from"@mantine/core";import ul from"react";var Sp=yp(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function Sa({value:e}){let{classes:o}=Sp();return e?ul.createElement(vp,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&ul.createElement(Cp,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as Bp}from"@mantine/core";import ba from"react";import{Text as bp}from"@mantine/core";import{getDisplayString as Pp,isOk as Dp,normalizeErrorString as Tp}from"@medplum/core";import dl,{useState as kp}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=kp(),f=X(o,n),s;if(a&&!Dp(a))s=`[${Tp(a)}]`;else if(f)s=Pp(f);else return null;return t?dl.createElement(se,{to:o,...r},s):dl.createElement(bp,{component:"span",...r},s)}function _e(e){return ba.createElement(Bp,{spacing:"xs"},ba.createElement(he,{size:24,radius:12,value:e.value,link:e.link}),ba.createElement(Ee,{value:e.value,link:e.link}))}import{Badge as Ap}from"@mantine/core";import Fp from"react";var Mp={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function $t(e){return Fp.createElement(Ap,{color:Mp[e.status]},e.status)}var xl=wp(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));Da.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function Da(e){let o=P(),t=X(e.value),[r,a]=Hp();if(Np(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(ml,null,h.createElement(pl,null,"Diagnostic Report"),h.createElement(Vp,{value:t}),r&&!e.hideSpecimenInfo&&qp(r),t.result&&h.createElement(Gp,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(Sa,{value:n}))}function Vp({value:e}){return h.createElement(Kt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(De,null,h.createElement(_e,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(De,null,h.createElement(_e,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(De,null,h.createElement(_e,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(De,null,Pa(e.issued))),e.status&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(De,null,Op(e.status))))}function qp(e){return h.createElement(ml,{spacing:"xs"},h.createElement(pl,{order:2,size:"h6"},"Specimens"),h.createElement(cl,{type:"ordered"},e?.map(o=>h.createElement(cl.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Kt,{spacing:20},h.createElement(Kt,{spacing:5},h.createElement(De,{fw:500},"Collected:")," ",Pa(o.collection?.collectedDateTime)),h.createElement(Kt,{spacing:5},h.createElement(De,{fw:500},"Received:")," ",Pa(o.receivedTime)))))))}function Gp(e){let{classes:o}=xl();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,h.createElement(Il,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Il(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(Up,{key:`obs-${Rp(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Up(e){let{classes:o,cx:t}=xl(),r=X(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Wp(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(se,{to:r},h.createElement(Ao,{value:r.code}))),h.createElement("td",null,h.createElement(Qp,{value:r})),h.createElement("td",null,h.createElement(zp,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Ao,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement(h.Fragment,null,r.category.map(f=>h.createElement("div",{key:`category-${Ep(f)}`},h.createElement(Ao,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(lo,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement($t,{status:r.status}))),r.hasMember&&h.createElement(Il,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(Sa,{value:r.note}))))}function Qp(e){let o=e.value;return h.createElement(h.Fragment,null,Lp(o))}function zp(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(Lt,{value:o}):null}function Wp(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Xp}from"@mantine/core";import{getDataType as Jp,getPropertyDisplayName as $p,stringify as gl,toTypedValue as hl}from"@medplum/core";import ue,{useEffect as Kp,useState as jp}from"react";var _p=Xp(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function yl(e){let{classes:o}=_p(),t=P(),[r,a]=jp(!1);if(Kp(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=Jp(e.original.resourceType);return ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.elements).map(([f,s])=>{if(f==="id"||f==="meta")return null;let[l,i]=ve(hl(e.original),f),[u,d]=ve(hl(e.revised),f);return Cl(l)&&Cl(u)||gl(l)===gl(u)?null:ue.createElement("tr",{key:f},ue.createElement("td",null,$p(f)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:s,propertyType:d,value:u,ignoreMissingValues:!0})))})))}function Cl(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Zp,{useEffect as Yp,useState as ex}from"react";function Ta(e){let o=P(),t=X(e.value),[r,a]=ex(!1);return Yp(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:Zp.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as ox,Group as tx,Menu as vl,Text as ka}from"@mantine/core";import{formatDateTime as rx,getReferenceString as ax}from"@medplum/core";import re from"react";function Sl(e){return re.createElement(Ke,null,e.children)}function Ze(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return re.createElement(ko,{"data-testid":"timeline-item",fill:!0,...n},re.createElement(tx,{position:"apart",spacing:8,mx:"xs",my:"sm"},re.createElement(he,{value:f,link:!0,size:"md"}),re.createElement("div",{style:{flex:1}},re.createElement(ka,{size:"sm"},re.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),re.createElement(ka,{size:"xs"},re.createElement(se,{color:"dimmed",to:e.resource},rx(s)),re.createElement(ka,{component:"span",color:"dimmed",mx:8},"\xB7"),re.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&re.createElement(vl,{position:"bottom-end",shadow:"md",width:200},re.createElement(vl.Target,null,re.createElement(ox,{radius:"xl","aria-label":`Actions for ${ax(e.resource)}`},re.createElement(Lr,null))),a)),re.createElement(ho,null,r&&re.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&re.createElement(re.Fragment,null,e.children)))}function Dl(e,o){e.sort((t,r)=>{let a=bl(t,o),n=bl(r,o);return a>n?1:a<n?-1:Pl(t,o)-Pl(r,o)})}function bl(e,o){if(!Tl(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Pl(e,o){if(!Tl(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Tl(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var mx=fx(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ye(e){let o=P(),t=Qe(),r=o.getProfile(),a=Al(null),n=X(e.value),[f,s]=Fl(),[l,i]=Fl([]),u=e.loadTimelineResources,d=Al(l);d.current=l;let c=_t(C=>{Dl(C,n),C.reverse(),i(C)},[n]),x=_t(C=>{let V=[];for(let we of C){if(we.status!=="fulfilled")continue;let v=we.value;if(v.type==="history"&&s(v),v.entry)for(let z of v.entry)V.push(z.resource)}c(V)},[c]),y=_t(C=>c([...d.current,C]),[c]),k=_t(()=>{let C,V;"resourceType"in e.value?(C=e.value.resourceType,V=e.value.id):[C,V]=e.value.reference?.split("/"),u(o,C,V).then(x).catch(console.log)},[o,e.value,u,x]);cx(()=>k(),[k]);function T(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(V=>y(V)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(V=>y(V)).then(()=>jt({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement(zo,{size:16}),autoClose:2e3})).catch(V=>jt({id:"upload-notification",color:"red",title:"Upload error",message:Bl(V),icon:D.createElement(It,{size:16}),autoClose:2e3}))}function A(C,V){return o.updateResource({...C,priority:V})}function I(C){A(C,"stat").then(k).catch(console.log)}function O(C){A(C,"routine").then(k).catch(console.log)}function g(C){t(`/${C.resourceType}/${C.id}`)}function M(C){t(`/${C.resourceType}/${C.id}/edit`)}function Y(C){t(`/${C.resourceType}/${C.id}/delete`)}function ne(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Le(){dx({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function oo(C){jt({id:"upload-notification",loading:!0,title:"Uploading...",message:yx(C),autoClose:!1,withCloseButton:!1})}function me(C){jt({id:"upload-notification",color:"red",title:"Upload error",message:Bl(C),icon:D.createElement(It,{size:16}),autoClose:2e3})}return n?D.createElement(Sl,null,e.createCommunication&&D.createElement(ko,null,D.createElement($,{testid:"timeline-form",onSubmit:C=>{T(C.text);let V=a.current;V&&(V.value="",V.focus())}},D.createElement(lx,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(he,{value:r}),D.createElement(ux,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement(kl,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(Gr,{size:16})),D.createElement(Do,{onUpload:B,onUploadStart:Le,onUploadProgress:oo,onUploadError:me},C=>D.createElement(kl,{...C,radius:"xl",color:"blue",variant:"filled"},D.createElement(Wo,{size:16})))))),l.map(C=>{if(!C)return null;let V=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return D.createElement(px,{key:V,history:f,resource:C,onDetails:ne});switch(C.resourceType){case"AuditEvent":return D.createElement(hx,{key:V,resource:C,onDetails:g});case"Communication":return D.createElement(Ix,{key:V,resource:C,onPin:C.priority!=="stat"?I:void 0,onUnpin:C.priority==="stat"?O:void 0,onDetails:g,onEdit:M,onDelete:Y});case"DiagnosticReport":return D.createElement(Cx,{key:V,resource:C,onDetails:g,onEdit:M,onDelete:Y});case"Media":return D.createElement(gx,{key:V,resource:C,onDetails:g,onEdit:M,onDelete:Y});default:return D.createElement(Ze,{key:V,resource:C,padding:!0},D.createElement(Ta,{value:C,ignoreMissingValues:!0}))}})):D.createElement(nx,{style:{width:"100%",height:"100%"}},D.createElement(sx,null))}function Eo(e){return D.createElement(Ge.Dropdown,null,D.createElement(Ge.Label,null,"Resource"),e.onPin&&D.createElement(Ge.Item,{icon:D.createElement(Ur,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(Ge.Item,{icon:D.createElement(Qr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(Ge.Item,{icon:D.createElement(Vr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&D.createElement(Ge.Item,{icon:D.createElement(Rr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&D.createElement(D.Fragment,null,D.createElement(Ge.Divider,null),D.createElement(Ge.Label,null,"Danger zone"),D.createElement(Ge.Item,{color:"red",icon:D.createElement($o,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function px(e){let o=xx(e.history,e.resource);return o?D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(yl,{original:o,revised:e.resource})):D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("h3",null,"Created"),D.createElement(Ta,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function xx(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function Ix(e){let{classes:o}=mx(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return D.createElement(Ze,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("p",null,e.resource.payload?.[0]?.contentString))}function gx(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return D.createElement(Ze,{resource:e.resource,padding:!!t,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Oe,{value:e.resource.content}))}function hx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(ix,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function Cx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Da,{value:e.resource}))}function yx(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${Ba(e.loaded)} / ${Ba(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${Ba(e.loaded)}`}function Ba(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function hM(e){return vx.createElement(Ye,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import{createReference as Zt}from"@medplum/core";import Sx from"react";function DM(e){return Sx.createElement(Ye,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Zt(o),subject:o.subject,sender:Zt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Zt(o),subject:o.subject,operator:Zt(t),issued:new Date().toISOString(),content:r})})}import{Button as MI,Loader as wI,Table as OI}from"@mantine/core";import{normalizeOperationOutcome as EI}from"@medplum/core";import ae,{useEffect as ss,useRef as is,useState as fr}from"react";import{evalFhirPath as bx}from"@medplum/core";import Px from"react";function Ml(e){let o;try{o=bx(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return Px.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as II,Button as Ho,Center as ar,createStyles as gI,Group as nr,Loader as hI,Menu as ns,Pagination as CI,Table as yI,Text as Na,UnstyledButton as vI}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ga,formatSearchQuery as SI}from"@medplum/core";import S,{useCallback as fs,useEffect as ls,useRef as bI,useState as Ha}from"react";import{Box as Dx,Button as Tx,Modal as kx,Text as Bx}from"@mantine/core";import Lo from"react";function Ol(e){return Lo.createElement(kx,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Lo.createElement(Dx,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Lo.createElement(wl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Lo.createElement(wl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Lo.createElement(Bx,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function wl(e){return Lo.createElement(Tx,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as Hx}from"@mantine/core";import{getDataType as Vx,getSearchParameters as qx,stringify as Gx}from"@medplum/core";import J,{useEffect as Ux,useRef as $l,useState as Qx}from"react";import{capitalize as Ax,DEFAULT_SEARCH_COUNT as Fx,evalFhirPathTyped as Mx,formatDateTime as wx,Operator as w}from"@medplum/core";import Yt from"react";var Ox={string:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],fulltext:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],token:[w.EQUALS,w.NOT],reference:[w.EQUALS,w.NOT],numeric:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],quantity:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],date:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY],datetime:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY]},Ex={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function at(e,o){return{...e,filters:o,offset:0,name:void 0}}function GM(e){return at(e,[])}function er(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function Ro(e,o,t,r,a){a&&(e=er(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function UM(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function Ll(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function Rl(e,o){return Aa(e,o,-1)}function Nl(e,o){return Aa(e,o,0)}function Hl(e,o){return Aa(e,o,1)}function Aa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Ma(e,o,r,a)}function Vl(e,o){return Fa(e,o,-1)}function ql(e,o){return Fa(e,o,0)}function Gl(e,o){return Fa(e,o,1)}function Fa(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Ma(e,o,r,a)}function Ul(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ma(e,o,t,new Date)}function Ma(e,o,t,r){return e=er(e,o),e=El(e,o,w.GREATER_THAN_OR_EQUALS,t),e=El(e,o,w.LESS_THAN_OR_EQUALS,r),e}function El(e,o,t,r){return Ro(e,o,t,r.toISOString())}function wa(e,o,t=!0){return Ro(e,o,w.MISSING,t.toString())}function Lx(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Ql(e,o){let t=e.count??Fx,r=(o-1)*t;return Lx(e,r)}function Oa(e,o,t){return o===zl(e)&&t!==void 0&&t===Wl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function QM(e,o){let t=!1;return zl(e)===o&&(t=!Wl(e)),Oa(e,o,t)}function zl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function Wl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Xl(e){return Ox[e.type]}function nt(e){return Ex[e]??""}function Ce(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"||o==="Id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(Ax).join(" "))}function Jl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?wx(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Rx(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Nx(e,o.searchParams[0]):null}function Rx(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=ve({type:e.resourceType,value:e},t);return r?Yt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Nx(e,o){let t=Mx(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Yt.createElement(Yt.Fragment,null,t.map((r,a)=>Yt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Kl(e){let[o,t]=Qx({search:JSON.parse(Gx(e.search))}),r=$l(null),a=$l(null);Ux(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function s(I){I.key==="Enter"&&u()}function l(){u()}function i(){let I=o.search.fields??[],O=r.current?.value;if(O){let g=[...I,O];t({search:{...o.search,fields:g}})}}function u(){let I=o.search.fields??[],O=a.current?.value;if(O){let g=[...I];g.splice(g.indexOf(O),1),t({search:{...o.search,fields:g}})}}function d(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M<=0||(x(g,M,M-1),t({search:{...o.search,fields:g}}))}function c(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M>=g.length-1||(x(g,M,M+1),t({search:{...o.search,fields:g}}))}function x(I,O,g){let M=I[O];I[O]=I[g],I[g]=M}if(!e.visible)return null;let y=e.search.resourceType,k=Vx(y),T=qx(y),B=o.search.fields??[],A=zx(k,T).filter(I=>!B.includes(I)).sort((I,O)=>I.localeCompare(O));return J.createElement(Hx,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:I=>n(I),onDoubleClick:()=>f(),"data-testid":"available"},A.map(I=>J.createElement("option",{key:I,value:I},Ce(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>s(I),onDoubleClick:()=>l(),"data-testid":"selected"},B.map(I=>J.createElement("option",{key:I,value:I},Ce(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function zx(e,o){let t=[],r=new Set,a=new Set;for(let n of Object.keys(e.elements))t.push(n),r.add(n.toLowerCase()),a.add(Ce(n));if(o)for(let n of Object.keys(o)){let f=Ce(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(Ce(n)))}return t}import{Button as st,Group as Zx,Modal as Yx,NativeSelect as _l}from"@mantine/core";import{getSearchParameters as eI,stringify as Zl}from"@medplum/core";import R,{useEffect as oI,useRef as es,useState as La}from"react";import{formatDateTime as Wx,getSearchParameterDetails as Xx,globalSchema as Jx,Operator as jl,SearchParameterType as $x}from"@medplum/core";import lt from"react";function or(e){let{resourceType:o,filter:t}=e,r=Jx.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===jl.EQUALS||t.operator===jl.NOT_EQUALS))return lt.createElement(Ee,{value:{reference:t.value}});let a=Xx(o,r);if(t.code==="_lastUpdated"||a.type===$x.DATETIME)return lt.createElement(lt.Fragment,null,Wx(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Kx,TextInput as Ea}from"@mantine/core";import{getSearchParameterDetails as jx,SearchParameterType as No}from"@medplum/core";import io from"react";function tr(e){let o=jx(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case No.REFERENCE:return io.createElement(wo,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case No.BOOLEAN:return io.createElement(Kx,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case No.DATE:return io.createElement(Ea,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case No.DATETIME:return io.createElement(Fe,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case No.NUMBER:return io.createElement(Ea,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case No.QUANTITY:return io.createElement(Pe,{name:t,defaultValue:_x(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(Ea,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function _x(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function os(e){let[o,t]=La(JSON.parse(Zl(e.search))),[r,a]=La(-1),n=es(o);n.current=o,oI(()=>{t(JSON.parse(Zl(e.search)))},[e.search]);function f(u){t(Ro(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=eI(s)??{},i=o.filters||[];return R.createElement(Yx,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(Yl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let x=[...i];x[d]=c,t(at(n.current,x)),a(-1)},onCancel:()=>a(-1)}):R.createElement(tI,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(Ll(n.current,d))})),R.createElement(Yl,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),R.createElement(Zx,{position:"right",mt:"xl"},R.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function tI(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,Ce(o.code)),R.createElement("td",null,nt(o.operator)),R.createElement("td",null,R.createElement(or,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Yl(e){let[o,t]=La(e.defaultValue??{}),r=es(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let s=e.searchParams[o.code],l=s&&Xl(s);return R.createElement("tr",null,R.createElement("td",null,R.createElement(_l,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:Ce(i)}))]})),R.createElement("td",null,l&&R.createElement(_l,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:nt(i)}))]})),R.createElement("td",null,s&&o.operator&&R.createElement(tr,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&R.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as rI,Grid as Ra,Modal as aI}from"@mantine/core";import uo,{useState as nI}from"react";function ts(e){let[o,t]=nI(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(aI,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement($,{onSubmit:r},uo.createElement(Ra,null,uo.createElement(Ra.Col,{span:10},uo.createElement(tr,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Ra.Col,{span:2},uo.createElement(rI,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function rs(e){if(!e.searchParams)return null;function o(n,f){a(Oa(e.search,n.code,f))}function t(n){a(er(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(fI,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(F.Dropdown,null,e.searchParams.map(n=>m.createElement(F.Item,{key:n.code},Ce(n.code))))}function fI(e){switch(e.searchParam.type){case"date":return m.createElement(lI,{...e});case"number":case"quantity":return m.createElement(sI,{...e});case"reference":return m.createElement(iI,{...e});case"string":case"token":case"uri":return m.createElement(uI,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function lI(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(kr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Hl(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Nl(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Rl(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Gl(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ql(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Vl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Ul(e.search,t))},"Year to date"),m.createElement(rr,{...e}))}function sI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(rr,{...e}))}function iI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(rr,{...e}))}function uI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ar,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(Br,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(rr,{...e}))}function rr(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Dr,{size:14}),onClick:()=>e.onChange(wa(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(Pr,{size:14}),onClick:()=>e.onChange(wa(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(jr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as dI,getSearchParameter as cI,getSearchParameterDetails as mI,getSearchParameters as pI}from"@medplum/core";function as(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(xI(o,r));return t}function xI(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=dI(e,o),r=cI(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=pI(e),n;if(a){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(a).filter(s=>s.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=mI(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var Va=class extends Event{constructor(t){super("change");this.definition=t}},qa=class extends Event{constructor(t){super("load");this.response=t}},co=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},PI=gI(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function DI(e){let{classes:o}=PI(),t=P(),[r,a]=Ha(!1),[n,f]=Ha(),{search:s,onLoad:l}=e,[i,u]=Ha({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=bI(i);d.current=i;let c=s.total??"accurate",x=fs(v=>{f(void 0),t.search(s.resourceType,SI({...s,total:c,fields:void 0}),v).then(z=>{u({...d.current,searchResponse:z}),l&&l(new qa(z))}).catch(z=>{u({...d.current,searchResponse:void 0}),f(z)})},[t,s,c,l]),y=fs(()=>{u({...d.current,searchResponse:void 0}),x({cache:"reload"})},[x]);ls(()=>{x()},[x]);function k(v,z){v.stopPropagation();let fe=v.target.checked,te={...d.current.selected};fe?te[z]=!0:delete te[z],u({...d.current,selected:te})}function T(v){v.stopPropagation();let Re=v.target.checked,fe={},te=d.current.searchResponse;Re&&te?.entry&&te.entry.forEach(be=>{be.resource?.id&&(fe[be.resource.id]=!0)}),u({...d.current,selected:fe})}function B(){let v=d.current;if(!v.searchResponse?.entry||v.searchResponse.entry.length===0)return!1;for(let z of v.searchResponse.entry)if(z.resource?.id&&!v.selected[z.resource.id])return!1;return!0}function A(v){e.onChange&&e.onChange(new Va(v))}function I(v,z){if(yt(v.target)||v.button===2)return;N(v);let Re=v.button===1||v.ctrlKey||v.metaKey;!Re&&e.onClick&&e.onClick(new co(z,v)),Re&&e.onAuxClick&&e.onAuxClick(new co(z,v))}function O(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(ls(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return S.createElement(ar,{style:{width:"100%",height:"100%"}},S.createElement(hI,null));let g=e.checkboxesEnabled,M=as(s),Y=s.resourceType,ne=i.searchResponse,oo=ne?.entry?.map(v=>v.resource),me="subtle",C="gray",V=16,we=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(nr,{position:"apart",mb:"xl"},S.createElement(nr,{spacing:2},S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(wr,{size:V}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Hr,{size:V}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Nr,{size:V}),onClick:e.onNew},"New..."),!we&&O()&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Kr,{size:V}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!we&&e.onDelete&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement($o,{size:V}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!we&&e.onBulk&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Tr,{size:V}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(nr,{spacing:2},ne&&S.createElement(Na,{size:"xs",color:"dimmed"},AI(s,ne.total),"-",FI(s,ne.total)," of"," ",`${c==="estimate"?"~":""}${ne.total?.toLocaleString()}`),S.createElement(II,{title:"Refresh",onClick:y},S.createElement(Wr,{size:"1.125rem"})))),S.createElement(yI,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,g&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:v=>T(v)})),M.map(v=>S.createElement("th",{key:v.name},S.createElement(ns,{shadow:"md",width:240,position:"bottom-end"},S.createElement(ns.Target,null,S.createElement(vI,{className:o.control},S.createElement(nr,{position:"apart",noWrap:!0},S.createElement(Na,{weight:500,size:"sm"},Ce(v.name)),S.createElement(ar,{className:o.icon},S.createElement(vr,{size:14,stroke:1.5}))))),S.createElement(rs,{search:e.search,searchParams:v.searchParams,onPrompt:(z,Re)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:z,filterDialogFilter:Re})},onChange:z=>{A(z)}}))))),!e.hideFilters&&S.createElement("tr",null,g&&S.createElement("th",null),M.map(v=>S.createElement("th",{key:v.name},v.searchParams&&S.createElement(TI,{resourceType:Y,searchParams:v.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,oo?.map(v=>v&&S.createElement("tr",{key:v.id,className:o.tr,"data-testid":"search-control-row",onClick:z=>I(z,v),onAuxClick:z=>I(z,v)},g&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${v.id}`,checked:!!i.selected[v.id],onChange:z=>k(z,v.id)})),M.map(z=>S.createElement("td",{key:z.name},Jl(v,z))))))),oo?.length===0&&S.createElement(Ke,null,S.createElement(ar,{style:{height:150}},S.createElement(Na,{size:"xl",color:"dimmed"},"No results"))),ne?.total!==void 0&&ne.total>0&&S.createElement(ar,{m:"md",p:"md"},S.createElement(CI,{value:kI(s),total:BI(s,ne.total),onChange:v=>A(Ql(s,v)),getControlProps:v=>{switch(v){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(Kl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:v=>{A(v),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),S.createElement(os,{search:e.search,visible:d.current.filterEditorVisible,onOk:v=>{A(v),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),S.createElement(Ol,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),S.createElement(ts,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?Ce(i.filterDialogSearchParam.code):"",resourceType:Y,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:v=>{A(Ro(e.search,v.code,v.operator,v.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var eO=S.memo(DI);function TI(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},nt(t.operator),"\xA0",S.createElement(or,{resourceType:e.resourceType,filter:t}))))}function kI(e){return Math.floor((e.offset??0)/(e.count??Ga))+1}function BI(e,o){let t=e.count??Ga;return Math.ceil(o/t)}function AI(e,o){return Math.min(o,(e.offset??0)+1)}function FI(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ga))}function LI(e){let o=P(),[t,r]=fr(!1),[a,n]=fr(),{query:f,fields:s}=e,[l,i]=fr(),[u,d]=fr({}),c=is();c.current=l;let x=is({});x.current=u,ss(()=>{n(void 0),o.graphql(f).then(i).catch(I=>n(EI(I)))},[o,f]);function y(I,O){I.stopPropagation();let M=I.target.checked,Y={...x.current};M?Y[O]=!0:delete Y[O],d(Y)}function k(I){I.stopPropagation();let g=I.target.checked,M={},Y=c.current?.data.ResourceList;g&&Y&&Y.forEach(ne=>{ne.id&&(M[ne.id]=!0)}),d(M)}function T(){let I=c.current?.data.ResourceList;if(!I||I.length===0)return!1;for(let O of I)if(O.id&&!x.current[O.id])return!1;return!0}function B(I,O){yt(I.target)||(N(I),I.button!==1&&e.onClick&&e.onClick(new co(O,I)),I.button===1&&e.onAuxClick&&e.onAuxClick(new co(O,I)))}if(ss(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return ae.createElement(wI,null);let A=e.checkboxesEnabled;return ae.createElement("div",{onContextMenu:I=>N(I),"data-testid":"search-control"},ae.createElement(OI,null,ae.createElement("thead",null,ae.createElement("tr",null,A&&ae.createElement("th",null,ae.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:I=>k(I)})),s.map(I=>ae.createElement("th",{key:I.name},I.name)))),ae.createElement("tbody",null,l?.data.ResourceList.map(I=>I&&ae.createElement("tr",{key:I.id,"data-testid":"search-control-row",onClick:O=>B(O,I),onAuxClick:O=>B(O,I)},A&&ae.createElement("td",null,ae.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${I.id}`,checked:!!u[I.id],onChange:O=>y(O,I.id)})),s.map(O=>ae.createElement("td",{key:O.name},ae.createElement(Ml,{propertyType:O.propertyType,path:O.fhirPath,resource:I}))))))),l?.data.ResourceList.length===0&&ae.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ae.createElement("div",{"data-testid":"search-error"},ae.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ae.createElement(MI,{onClick:()=>e.onBulk(Object.keys(x.current))},"Bulk..."))}var iO=ae.memo(LI);import{createReference as lr}from"@medplum/core";import RI,{useCallback as NI}from"react";function IO(e){let o=NI((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return RI.createElement(Ye,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:lr(t),sender:lr(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:lr(t),operator:lr(r),issued:new Date().toISOString(),content:a})})}import{Anchor as ds,Button as HI,createStyles as VI,NativeSelect as qI,Stack as GI,TextInput as Qa}from"@mantine/core";import{getReferenceString as UI}from"@medplum/core";import q,{useEffect as us,useRef as cs,useState as it}from"react";var ms=VI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function wO(e){let o=P(),t=X(e.value),[r,a]=it(!1),[n,f]=it(),[s,l]=it(),[i,u]=it();function d(){l(void 0)}function c(){f(void 0)}let x=cs();if(x.current=i,us(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),us(()=>(u($I(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(k,T){u({...x.current,[k]:T})}return q.createElement("div",null,q.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Qa,{label:"Plan Title",defaultValue:i.title,onChange:k=>y("title",k.currentTarget.value)}),q.createElement(ps,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:k=>y("action",k)}),q.createElement(HI,{type:"submit"},"Save")))}function ps(e){let{classes:o}=ms(),t=cs();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(QI,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(ds,{href:"#",onClick:f=>{N(f),a({id:Is()})}},"Add action")))}function QI(e){let{classes:o,cx:t}=ms(),{action:r}=e,a=JI(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){N(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?q.createElement(WI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(zI,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(ds,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var za={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function zI(e){let{action:o,actionType:t}=e,[r,a]=xs(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(lo,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(xe,{property:za,propertyType:a,value:r})))}function WI(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(GI,{spacing:"xl"},q.createElement(Qa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Qa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(qI,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(ps,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(sr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(sr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(sr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(sr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Se,{title:"Timing",description:"When the action should take place."},q.createElement(XI,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function sr(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(zt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:UI(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function XI(e){let o=e.action,t="timing",[r,a]=xs(o);return q.createElement(qe,{property:za,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,za,n))}})}function JI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function xs(e){return ve({type:"PlanDefinitionAction",value:e},"timing")}var Ua=1;function Is(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ua=Math.max(Ua,o+1))}return e}return"id-"+Ua++}function $I(e){return{...e,action:gs(e.action)}}function gs(e){if(e)return e.map(o=>({...o,id:Is(o.id),action:gs(o.action)}))}import{Anchor as Te,Box as _a,Button as xg,createStyles as Ig,Group as gg,NativeSelect as hg,Space as Cg,Textarea as yg,TextInput as Za,Title as vg}from"@mantine/core";import{getElementDefinition as Sg,isResource as bg}from"@medplum/core";import b,{useEffect as ks,useRef as Pg,useState as mr}from"react";import{Checkbox as eg,Group as og,MultiSelect as tg,NativeSelect as rg,Radio as bs,Textarea as ag,TextInput as ut}from"@mantine/core";import{capitalize as Ja,deepEquals as ng,formatCoding as $a,getElementDefinition as fg,getTypedPropertyValue as Ue,stringify as Ps}from"@medplum/core";import Z from"react";import{deepClone as KI,evalFhirPathTyped as jI,formatCoding as _I,getExtension as hs,getTypedPropertyValue as Wa}from"@medplum/core";var ir=(B=>(B.group="group",B.display="display",B.question="question",B.boolean="boolean",B.decimal="decimal",B.integer="integer",B.date="date",B.dateTime="dateTime",B.time="time",B.string="string",B.text="text",B.url="url",B.choice="choice",B.openChoice="open-choice",B.attachment="attachment",B.reference="reference",B.quantity="quantity",B))(ir||{});function Cs(e){return e.type==="choice"||e.type==="open-choice"}function ys(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Ss(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=YI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function vs(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>_I(f.valueCoding)===r||f[o]===r),n=Wa({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function Ss(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=Ss(t.item,o);if(r)return r}}}function ZI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=jI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function YI(e,o,t){let r=o||[],a=Wa({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Wa({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(ZI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function ur(e){let o=hs(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(o){if(o.valueCode!==void 0)return[o.valueCode];if(o.valueCodeableConcept)return o.valueCodeableConcept?.coding?.map(t=>t.code)}}function dr(e,o){let t=KI(e),r=hs(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?(r&&(t.extension=t.extension?.filter(a=>a!==r)),t):(r||(t.extension||(t.extension=[]),r={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},t.extension.push(r)),o.length===1?(r.valueCode=o[0],delete r.valueCodeableConcept):(r.valueCodeableConcept={coding:o.map(a=>({code:a}))},delete r.valueCode),t)}function cr(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(x=>x.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=ug(d[0]?.answer??[],u,l),e.onChange({id:d[0].id,linkId:o.linkId,text:o.text,answer:c})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=ja(e.allResponses,o,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Z.createElement(Ht,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Z.createElement(eg,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Z.createElement(ut,{type:"number",step:"any",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Z.createElement(ut,{type:"number",step:1,id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Z.createElement(ut,{type:"date",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Z.createElement(Fe,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Z.createElement(ut,{type:"time",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Z.createElement(ut,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Z.createElement(ag,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Z.createElement(og,{py:4},Z.createElement(bt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)}));case"reference":return Z.createElement(wo,{name:n,required:o.required,targetTypes:ur(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Z.createElement(Pe,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return dg(o)?Z.createElement(lg,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Z.createElement(sg,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function lg(e){let{name:o,item:t,initial:r}=e,a=Ue({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=Ue({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(Xa(l))}let f=ja(e.allResponses,t,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=cg(e.item),i=mg(e.allResponses,t,e.groupSequence);return Z.createElement(tg,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Xa(a)],onChange:u=>{let d=vs(u,s,t);e.onChangeAnswer(d)}})}return Z.createElement(rg,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=Ue({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Ja(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:($a(f?.value)||f?.value)??Xa(a),data:n})}function sg(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Z.createElement(Vt,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):Z.createElement(ig,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function ig(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=fg("QuestionnaireItemAnswerOption","value[x]"),f=Ue({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],x=`${o}-option-${d}`,y=Ue({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&Ps(y)===Ps(f)&&(l=x),s.push([x,y])}let i=ja(e.allResponses,t,e.index,e.groupSequence),u=pg(s,i);return Z.createElement(bs.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(x=>x[0]===d);if(c){let x=c[1],y="value"+Ja(x.type);a({[y]:x.value})}}},s.map(([d,c])=>Z.createElement(bs,{key:d,id:d,value:d,py:4,label:Z.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function ug(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function dg(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function cg(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=Ue({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Ja(t.type),a=(e.answerOption??[]).map(n=>({value:Ds(n,r),label:Ds(n,r)}));return{propertyName:r,data:a}}function Ds(e,o){return $a(e.valueCoding)||e[o]?.toString()}function Xa(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ka(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Ka(r.item,o)));return t}function Ts(e){return Ue({type:"QuestionnaireItemAnswer",value:e},"value")}function ja(e,o,t=0,r=0){let n=Ka(e,o.linkId??"")[r]?.answer;return Ts(n?.[t]??{})}function mg(e,o,t=0){let a=Ka(e,o.linkId??"")[t]?.answer;return a?a.map(f=>Ts(f)).map(f=>$a(f?.value)||f?.value):[]}function pg(e,o){return e.find(t=>ng(t[1].value,o?.value))?.[0]}var Dg=Ig(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:32,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function i0(e){let o=P(),t=X(e.questionnaire),[r,a]=mr(!1),[n,f]=mr(),[s,l]=mr(),[i,u]=mr();function d(){u(void 0)}function c(){l(void 0)}return ks(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),ks(()=>(f(Ag(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:b.createElement("div",null,b.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},b.createElement(Bs,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),b.createElement(xg,{type:"submit"},"Save")))}function Bs(e){let{classes:o,cx:t}=Dg(),r=e.item,a=e.item,n=bg(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Pg();u.current=e.item;function d(g){N(g),e.setSelectedKey(e.item.id)}function c(g){N(g),e.setHoverKey(e.item.id)}function x(g){let M=u.current;e.onChange({...M,item:M.item?.map(Y=>Y.id===g.id?g:Y)})}function y(g){e.onChange({...e.item,item:[...e.item.item??[],g]})}function k(g){e.onChange({...e.item,item:e.item.item?.filter(M=>M!==g)})}function T(g,M){e.onChange({...u.current,[g]:M})}function B(g){e.onChange({...e.item,...g})}function A(g){e.onChange({...e.item,item:e.item.item?.map(M=>M===g?{...M,repeats:!M.repeats}:M)})}function I(g,M){let Y=wg(e.item.item,g,M);e.onChange({...e.item,item:Y})}let O=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return b.createElement("div",{"data-testid":a.linkId,className:O,onClick:d,onMouseOver:c},b.createElement("div",{className:o.questionBody},l?b.createElement(b.Fragment,null,n&&b.createElement(Za,{size:"xl",defaultValue:r.title,onChange:g=>T("title",g.currentTarget.value)}),!n&&b.createElement(yg,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>T("text",g.currentTarget.value)}),a.type==="reference"&&b.createElement(Bg,{item:a,onChange:B}),Cs(a)&&b.createElement(Tg,{item:a,onChange:g=>B(g)})):b.createElement(b.Fragment,null,r.title&&b.createElement(vg,null,r.title),a.text&&b.createElement("div",null,a.text),!f&&b.createElement(cr,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((g,M)=>b.createElement("div",{key:g.id},b.createElement(Bs,{item:g,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:M===0,isLast:M===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:x,onRemove:()=>k(g),onRepeatable:A,onMoveUp:()=>I(M,-1),onMoveDown:()=>I(M,1)}))),!f&&b.createElement("div",{className:o.topActions},l?b.createElement(b.Fragment,null,b.createElement(Za,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>T("linkId",g.currentTarget.value)}),!f&&b.createElement(hg,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:g=>T("type",g.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):b.createElement("div",null,s)),!n&&b.createElement(_a,{className:o.movementActions},b.createElement(_a,{className:o.columnAlignment},!e.isFirst&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveUp&&e.onMoveUp()}},b.createElement(br,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveDown&&e.onMoveDown()}},b.createElement(Sr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),b.createElement("div",{className:o.bottomActions},f&&b.createElement(b.Fragment,null,b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("q"),type:"string",text:"Question"})}},"Add item"),b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("g"),type:"group",text:"Group"})}},"Add group")),n&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y(Mg())}},"Add Page"),l&&!n&&b.createElement(b.Fragment,null,b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function Tg(e){let o=Sg("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return b.createElement("div",null,e.item.answerValueSet!==void 0?b.createElement(Za,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):b.createElement(kg,{options:t,property:o,item:e.item,onChange:e.onChange}),b.createElement(_a,{display:"flex"},b.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:mo()}]})}},"Add choice"),b.createElement(Cg,{w:"lg"}),b.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function kg(e){return b.createElement("div",null,e.options.map(o=>{let[t,r]=ve({type:"QuestionnaireItemAnswerOption",value:o},"value");return b.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},b.createElement("div",null,b.createElement(qe,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),b.createElement("div",null,b.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function Bg(e){let o=ur(e.item)??[];return b.createElement(b.Fragment,null,o.map((t,r)=>b.createElement(gg,{key:`${t}-${r}`},b.createElement(Po,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(dr(e.item,o.map(n=>n===t?a:n)))}}),b.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange(dr(e.item,o.filter(n=>n!==t)))}},"Remove"))),b.createElement(Te,{href:"#",onClick:t=>{N(t),e.onChange(dr(e.item,[...o,""]))}},"Add Resource Type"))}var Ya=1,en=1;function on(e){return e+Ya++}function mo(){return"id-"+en++}function Ag(e){return{...e,id:e.id||mo(),item:As(e.item)}}function As(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(en=Math.max(en,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ya=Math.max(Ya,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||mo(),item:As(o.item),answerOption:Fg(o.answerOption)}))}function Fg(e){if(e)return e.map(o=>({...o,id:o.id||mo()}))}function Mg(){return{id:mo(),linkId:on("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function wg(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Anchor as Os,Button as tn,Group as Og,Stack as Eg,Stepper as Fs,Title as Es}from"@mantine/core";import{createReference as Lg,getExtension as Rg,getReferenceString as Ls}from"@medplum/core";import Q,{useEffect as Ms,useState as Vo}from"react";function Rs(e){let o=P(),t=o.getProfile(),[r,a]=Vo(!1),n=X(e.questionnaire),[f,s]=Vo(),[l,i]=Vo(0);Ms(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Ms(()=>{s(n?Hg(n):void 0)},[n]);function u(y){let k=f?.item??[],B={resourceType:"QuestionnaireResponse",item:Vs(k,y)};s(B)}if(!r||!n)return null;let d=Ug(n),c=()=>i(y=>y+1),x=()=>i(y=>y-1);return Q.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Ls(n),subject:e.subject,source:Lg(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&Q.createElement(Es,null,n.title),n.item&&Q.createElement(Ns,{items:n.item??[],allResponses:f?.item??[],onChange:u,renderPages:d>1,activePage:l}),Q.createElement(Ng,{activePage:l,numberOfPages:d,nextStep:c,prevStep:x,submitButtonText:e.submitButtonText}))}function Ns(e){let[o,t]=Vo(an(e.items));function r(n,f){let s=o.some(i=>i.id===n),l;s?l=o.map(i=>i.id===n?f:i):l=[...o,f],t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?Q.createElement(Fs.Step,{label:n.text,key:n.linkId},Q.createElement(ws,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):Q.createElement(ws,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?Q.createElement(Fs,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):Q.createElement(Eg,null,a)}function ws(e){return ys(e.item,e.allResponses)?e.item.type==="display"?Q.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?Q.createElement(rn,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):e.item.type==="boolean"?Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):Q.createElement(Se,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text,withAsterisk:e.item.required},Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function rn(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(s=>s.linkId===o.linkId);e.onChange({id:Wg(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?Q.createElement(Qg,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):Q.createElement(zg,{item:e.item,key:e.item.linkId},({index:r})=>Q.createElement(cr,{...e,index:r}))}function Ng(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return Q.createElement(Og,{position:"right",mt:"xl",spacing:"xs"},o&&Q.createElement(tn,{onClick:e.prevStep},"Back"),t&&Q.createElement(tn,{onClick:a=>{a.currentTarget.closest("form").reportValidity()&&e.nextStep()}},"Next"),r&&Q.createElement(tn,{type:"submit"},e.submitButtonText??"Submit"))}function Hg(e){return{resourceType:"QuestionnaireResponse",questionnaire:Ls(e),item:an(e.item)}}function an(e){return e?.map(Vg)??[]}function Vg(e){return{id:Hs(),linkId:e.linkId,text:e.text,item:an(e.item),answer:e.initial?.map(Gg)??[]}}var qg=1;function Hs(){return"id-"+qg++}function Gg(e){return{...e}}function Ug(e){let o=e?.item?.[0];return o&&Rg(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function Qg(e){let[o,t]=Vo(Xg(e.item,e.allResponses)),r=e.item;return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement("div",{key:n},e.text&&Q.createElement(Es,{order:3,mb:"md"},e.text),Q.createElement(Ns,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&Q.createElement(Os,{onClick:()=>t(a=>a+1)},"Add Group"))}function zg(e){let[o,t]=Vo(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement(Q.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&Q.createElement(Os,{onClick:()=>t(a=>a+1)},"Add Item"))}function Wg(e,o){return e.length===0||e.length<o+1?Hs():e[o].id}function Xg(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function Jg(e,o){let t=Vs(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function $g(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(Jg(e[a],o[a])):o[a]&&t.push(o[a]);return t}function Vs(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat($g(a,n))}return t}import{ActionIcon as pr,Button as Kg,createStyles as jg,Divider as _g,Group as dt,NativeSelect as nn,Stack as xr,Text as Zg,TextInput as Yg}from"@mantine/core";import{formatRange as qs,getCodeBySystem as eh}from"@medplum/core";import W,{useEffect as oh,useState as fn}from"react";var th=jg(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),rh=["gender","age","gestationalAge","context","appliesTo","category"],ah={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function A0(e){e=Object.assign(ah,e);let o=e.definition,[t,r]=fn([]),[a,n]=fn(1),[f,s]=fn(1);return oh(()=>{let y=lh(o,s);r(sh(y.qualifiedInterval||[],n))},[o]),W.createElement($,{testid:"reference-range-editor",onSubmit:l},W.createElement(xr,null,t.map(y=>W.createElement(nh,{unit:uh(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:x,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),W.createElement(pr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},W.createElement(po,null)),W.createElement(dt,{position:"right"},W.createElement(Kg,{type:"submit"},"Save")));function l(){let y=t.flatMap(k=>k.intervals).filter(k=>!dh(k));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(k=>[...k,y])}function u(y){r(k=>k.filter(T=>T.id!==y.id))}function d(y,k){r(T=>{T=[...T];let B=T.find(I=>I.id===y),A=B?.intervals.findIndex(I=>I.id===k.id);return A!==void 0&&B?.intervals[A]&&(B.intervals[A]=k),T})}function c(y,k){k.id===void 0&&(k.id=`id-${f}`,s(T=>T+1)),r(T=>{T=[...T];let B=T.findIndex(A=>A.id===y);if(B!==-1){let A={...T[B]};k={...k,...A.filters},A.intervals=[...A.intervals,k],T[B]=A}return T})}function x(y,k){r(T=>{T=[...T];let B=T.find(A=>A.id===y);return B&&(B.intervals=B.intervals.filter(A=>A.id!==k.id)),T})}}function nh(e){let{intervalGroup:o,unit:t}=e,{classes:r}=th();return W.createElement(Ke,{"data-testid":o.id,className:r.section},W.createElement(xr,{spacing:"lg"},W.createElement(dt,{position:"right"},W.createElement(pr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{N(a),e.onRemoveGroup(o)}},W.createElement(We,null))),W.createElement(fh,{intervalGroup:o,onChange:e.onChange}),W.createElement(_g,null),o.intervals.map(a=>W.createElement(xr,{key:`interval-${a.id}`,spacing:"xs"},W.createElement(dt,null,W.createElement(Yg,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{N(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),W.createElement(pr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{N(n),e.onRemove(o.id,a)}},W.createElement(We,null))),W.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),W.createElement(pr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},W.createElement(po,null))))}function fh(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return W.createElement(xr,{style:{maxWidth:"50%"}},W.createElement(dt,null,W.createElement(nn,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),W.createElement(dt,{spacing:"xs"},W.createElement(Zg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),W.createElement("div",{id:`div-age-${o.id}`},W.createElement(ot,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),W.createElement(nn,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),W.createElement(nn,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function lh(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function sh(e,o){let t=1,r={};for(let a of e){let n=ih(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(rh.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function ih(e){return[`gender=${e.gender}`,`age=${qs(e.age)}`,`gestationalAge=${qs(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function uh(e){return e&&(eh(e,"http://unitsofmeasure.org")||e.text)}function dh(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Gs,Grid as Ir,Text as ch}from"@mantine/core";import{formatDateTime as mh,getReferenceString as ph}from"@medplum/core";import ge,{useEffect as xh,useState as Us}from"react";function H0(e){let o=P(),t=X(e.value),[r,a]=Us(!1),[n,f]=Us();if(xh(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ge.createElement(Ir,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,x=d?.output?.[0]?.valueReference;return ge.createElement(ge.Fragment,{key:`action-${u}`},ge.createElement(Ir.Col,{span:1,p:"md"},d?.status==="completed"?ge.createElement(Fr,null):ge.createElement(Jr,{color:"gray"})),ge.createElement(Ir.Col,{span:9,p:"xs"},ge.createElement(ch,{weight:500},i.title),i.description&&ge.createElement("div",null,i.description),ge.createElement("div",null,"Last edited by\xA0",ge.createElement(Ee,{value:d?.meta?.author}),"\xA0on\xA0",mh(d?.meta?.lastUpdated)),ge.createElement("div",null,"Status: ",ge.createElement($t,{status:d?.status||"unknown"}))),ge.createElement(Ir.Col,{span:2,p:"md"},c&&!x&&ge.createElement(Gs,{onClick:()=>e.onStart(d,c)},"Start"),c&&x&&ge.createElement(Gs,{onClick:()=>e.onEdit(d,c,x)},"Edit")))}));function s(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===ph(u.resource))return u.resource}}import{createStyles as Sh}from"@mantine/core";import ye,{useEffect as bh,useState as Ph}from"react";import{stringify as Ch}from"@medplum/core";function gr(e,o){let t=Ih(e,o);return gh(t,e,o)}function Ih(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,d=u+1,c=u-1,x=s[d],y=s[c],k,T=0;i===-l||i!==l&&y.i<x.i?(T=x.i,k=x):(T=y.i+1,k=y),s[c]=void 0;let B=T-i,A={i:T,j:B,prev:hh(k),snake:!1};for(;T<t&&B<r&&e[T]===o[B];)T++,B++;if(T>A.i&&(A={i:T,j:B,prev:A,snake:!0}),s[u]=A,T>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function gh(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function hh(e){return e&&!e.snake&&e.prev?e.prev:e}function Qs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:Ch(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return yh(t,o),vh(t),t}function yh(e,o){for(let t=1;t<o.length;t++){let r=gr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function vh(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}function zs(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Ws(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return qo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return qo(r,"month");let a=Math.floor(o/86400);if(a>0)return qo(a,"day");let n=Math.floor(o/3600);if(n>0)return qo(n,"hour");let f=Math.floor(o/60);return f>0?qo(f,"minute"):qo(o,"second")}function qo(e,o){return`${e} ${e===1?o:o+"s"} ago`}var Dh=Sh(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function Z0(e){let{classes:o}=Dh(),t=P(),[r,a]=Ph(e.history);if(bh(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ye.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Qs(r);return ye.createElement("div",{className:o.container},ye.createElement("table",{className:o.root},ye.createElement("tbody",null,f.map((s,l)=>ye.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&ye.createElement(ye.Fragment,null,ye.createElement("td",{className:o.author,rowSpan:s.span},ye.createElement(_e,{value:s.meta.author,link:!0})),ye.createElement("td",{className:o.dateTime,rowSpan:s.span},ye.createElement(se,{to:zs(n,s.meta.versionId)},Ws(s.meta.lastUpdated)))),ye.createElement("td",{className:o.lineNumber},l+1),ye.createElement("td",{className:o.line},ye.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as Th}from"@mantine/core";import{stringify as Xs}from"@medplum/core";import eo from"react";var kh=Th(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function n1(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Xs(o,!0).match(/[^\r\n]+/g),a=Xs(t,!0).match(/[^\r\n]+/g),n=gr(r,a);return eo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>eo.createElement(Bh,{key:"delta"+s,delta:f})))}function Bh(e){let{classes:o}=kh();return eo.createElement(eo.Fragment,null,"...",eo.createElement("br",null),e.delta.original.lines.length>0&&eo.createElement("div",{className:o.removed},e.delta.original.lines.join(`
|
|
66
66
|
`)),e.delta.revised.lines.length>0&&eo.createElement("div",{className:o.added},e.delta.revised.lines.join(`
|
|
67
|
-
`)),"...",eo.createElement("br",null))}import{Button as
|
|
67
|
+
`)),"...",eo.createElement("br",null))}import{Button as Js,Group as Ah,Stack as Fh,TextInput as $s}from"@mantine/core";import{deepClone as Mh}from"@medplum/core";import Me,{useEffect as wh,useState as Ks}from"react";function m1(e){let o=P(),t=X(e.defaultValue),[r,a]=Ks(!1),[n,f]=Ks();return wh(()=>{t&&(f(Mh(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?Me.createElement("div",null,"Loading..."):Me.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Me.createElement(Fh,{mb:"xl"},Me.createElement(Se,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Me.createElement($s,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Me.createElement(Se,{title:"ID",htmlFor:"id",outcome:e.outcome},Me.createElement($s,{name:"id",defaultValue:n.id,disabled:!0}))),Me.createElement(tt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Me.createElement(Ah,{position:"right",mt:"xl"},Me.createElement(Js,{type:"submit"},"OK"),e.onDelete&&Me.createElement(Js,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}import{Table as Oh}from"@mantine/core";import{formatDateTime as Eh,normalizeErrorString as Lh}from"@medplum/core";import ce,{useEffect as Rh,useState as Nh}from"react";function v1(e){let o=P(),[t,r]=Nh(e.history);return Rh(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ce.createElement(Oh,{withBorder:!0,withColumnBorders:!0},ce.createElement("thead",null,ce.createElement("tr",null,ce.createElement("th",null,"Author"),ce.createElement("th",null,"Date"),ce.createElement("th",null,"Version"))),ce.createElement("tbody",null,t.entry?.map((a,n)=>ce.createElement(Hh,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Hh(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(_e,{value:t.meta?.author,link:!0})),ce.createElement("td",null,Eh(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:Vh(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},Lh(o?.outcome)))}function Vh(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as qh,createStyles as Gh,Stack as Uh,Text as Qh}from"@mantine/core";import{getReferenceString as zh,isReference as Wh}from"@medplum/core";import ee,{useState as hr}from"react";var Xh=Gh(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function w1(e){let{classes:o}=Xh(),t=X(e.schedule),r=X(e.questionnaire),[a,n]=hr(Jt()),[f,s]=hr(),[l,i]=hr(),[u,d]=hr(),[c]=mn("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Wh(e.schedule)?e.schedule.reference:zh(e.schedule)],["start","gt"+Jh(a)],["start","lt"+$h(a)]]));if(!t||!c||!r)return null;let x=t.actor?.[0];return ee.createElement("div",{className:o.container,"data-testid":"scheduler"},ee.createElement("div",{className:o.info},x&&ee.createElement(he,{value:x,size:"xl"}),x&&ee.createElement(Qh,{size:"xl",weight:500},ee.createElement(Ee,{value:x})),ee.createElement("p",null,"1 hour"),f&&ee.createElement("p",null,f.toLocaleDateString()),l&&ee.createElement("p",null,js(new Date(l.start)))),ee.createElement("div",{className:o.selection},!f&&ee.createElement("div",null,ee.createElement("h3",null,"Select date"),ee.createElement(il,{slots:c,onChangeMonth:n,onClick:s})),f&&!l&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(Uh,null,c.map(y=>{let k=new Date(y.start);return k.getTime()>f.getTime()&&k.getTime()<f.getTime()+24*3600*1e3&&ee.createElement("div",{key:y.id},ee.createElement(qh,{variant:"outline",style:{width:150},onClick:()=>i(y)},js(k)))}))),f&&l&&!u&&ee.createElement(Rs,{questionnaire:r,submitButtonText:"Next",onSubmit:d}),f&&l&&u&&ee.createElement("div",null,ee.createElement("h3",null,"You're all set!"),ee.createElement("p",null,"Check your email for a calendar invite."))))}function Jh(e){return _s(e.getTime())}function $h(e){return _s(e.getTime()+31*24*60*60*1e3)}function _s(e){let o=new Date(Math.max(Date.now(),e));return o.setHours(0,0,0,0),o.toISOString()}function js(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as Cr}from"@medplum/core";import Kh from"react";function V1(e){return Kh.createElement(Ye,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[Cr(o)],subject:o.subject,sender:Cr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[Cr(o)],subject:o.subject,operator:Cr(t),issued:new Date().toISOString(),content:r})})}export{xn as AddressDisplay,Cn as AddressInput,yn as AnnotationInput,Vb as AppShell,So as AsyncAutocomplete,Xn as AttachmentArrayDisplay,$n as AttachmentArrayInput,Do as AttachmentButton,Oe as AttachmentDisplay,bt as AttachmentInput,Zo as BackboneElementDisplay,tt as BackboneElementInput,il as CalendarInput,Ht as CheckboxFormSection,St as CodeInput,Ao as CodeableConceptDisplay,Ef as CodeableConceptInput,Pf as CodingDisplay,Vt as CodingInput,Tf as ContactDetailDisplay,Rf as ContactDetailInput,Et as ContactPointDisplay,Gt as ContactPointInput,Ke as Container,Fe as DateTimeInput,hM as DefaultResourceTimeline,yf as DescriptionList,vf as DescriptionListEntry,Da as DiagnosticReportDisplay,Pt as Document,sp as ElementDefinitionInputSelector,nl as ElementDefinitionTypeInput,DM as EncounterTimeline,ho as ErrorBoundary,LI as FhirPathTable,$ as Form,Se as FormSection,qn as Header,Ct as HumanNameDisplay,Gf as HumanNameInput,kf as IdentifierDisplay,Qf as IdentifierInput,Zr as Loading,je as Logo,se as MedplumLink,Zh as MedplumProvider,iO as MemoizedFhirPathTable,eO as MemoizedSearchControl,Af as MoneyDisplay,zf as MoneyInput,Wn as Navbar,Gp as ObservationTable,Bo as OperationOutcomeAlert,ko as Panel,IO as PatientTimeline,wO as PlanDefinitionBuilder,_o as QuantityDisplay,Pe as QuantityInput,i0 as QuestionnaireBuilder,Rs as QuestionnaireForm,ir as QuestionnaireItemType,rn as QuestionnaireRepeatWrapper,Lt as RangeDisplay,ot as RangeInput,lo as ReferenceDisplay,wo as ReferenceInput,A0 as ReferenceRangeEditor,nh as ReferenceRangeGroupEditor,xD as RegisterForm,H0 as RequestGroupDisplay,Of as ResourceArrayDisplay,Yf as ResourceArrayInput,he as ResourceAvatar,_e as ResourceBadge,Z0 as ResourceBlame,n1 as ResourceDiff,m1 as ResourceForm,v1 as ResourceHistoryTable,zt as ResourceInput,Ee as ResourceName,xe as ResourcePropertyDisplay,qe as ResourcePropertyInput,Ta as ResourceTable,Ye as ResourceTimeline,w1 as Scheduler,Va as SearchChangeEvent,co as SearchClickEvent,DI as SearchControl,Kl as SearchFieldEditor,os as SearchFilterEditor,qa as SearchLoadEvent,V1 as ServiceRequestTimeline,cT as SignInForm,$t as StatusBadge,Sl as Timeline,Ze as TimelineItem,al as TimingInput,Ma as addDateFilterBetween,UM as addField,Ro as addFilter,Vl as addLastMonthFilter,wa as addMissingFilter,Gl as addNextMonthFilter,ql as addThisMonthFilter,Nl as addTodayFilter,Hl as addTomorrowFilter,Ul as addYearToDateFilter,Rl as addYesterdayFilter,Ce as buildFieldNameString,GM as clearFilters,er as clearFiltersOnField,Hf as convertIsoToLocal,Vf as convertLocalToIso,kt as createScriptTag,Ll as deleteFilter,pe as getErrorsForInput,Dt as getIssuesForExpression,vs as getNewMultiSelectValues,nt as getOpString,ur as getQuestionnaireItemReferenceTargetTypes,ef as getRecaptcha,Xl as getSearchOperators,zl as getSortField,Yn as initRecaptcha,Cs as isChoiceQuestion,ys as isQuestionEnabled,Wl as isSortDescending,Gn as parseForm,dn as reactContext,Jl as renderValue,at as setFilters,Lx as setOffset,Ql as setPage,dr as setQuestionnaireItemReferenceTargetTypes,Oa as setSort,Dl as sortByDateAndPriority,QM as toggleSort,P as useMedplum,Uo as useMedplumContext,Qe as useMedplumNavigate,pt as useMedplumProfile,X as useResource,rC as useSearch,aC as useSearchOne,mn as useSearchResources};
|
|
68
68
|
//# sourceMappingURL=index.mjs.map
|