@medplum/react 5.0.3 → 5.0.4

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.
@@ -62,7 +62,7 @@
62
62
  }
63
63
  }
64
64
  }`.replaceAll(/\s+/g," ")}function getResourcesFromResponse(response,query){let resources=[];return response.data.Patients1&&resources.push(...response.data.Patients1),response.data.Patients2&&resources.push(...response.data.Patients2),response.data.ServiceRequestList&&resources.push(...response.data.ServiceRequestList),sortByRelevance(dedupeResources(resources),query).slice(0,5)}function dedupeResources(resources){let ids=new Set,result=[];for(let resource of resources)ids.has(resource.id)||(ids.add(resource.id),result.push(resource));return result}function sortByRelevance(resources,query){return resources.sort((a,b)=>getResourceScore(b,query)-getResourceScore(a,query))}function getResourceScore(resource,query){let bestScore=0;if(resource.identifier)for(let identifier of resource.identifier)bestScore=Math.max(bestScore,getStringScore(identifier.value,query));if(resource.resourceType==="Patient"&&resource.name)for(let name of resource.name)bestScore=Math.max(bestScore,getStringScore((0,import_core21.formatHumanName)(name),query));return bestScore}function getStringScore(str,query){if(!str)return 0;let index=str.toLowerCase().indexOf(query.toLowerCase());return index<0?0:100-index}var import_jsx_runtime12=require("react/jsx-runtime");function Header(props){let profile=(0,import_react_hooks6.useMedplumProfile)(),[userMenuOpened,setUserMenuOpened]=(0,import_react8.useState)(!1);return(0,import_jsx_runtime12.jsx)(import_core22.AppShell.Header,{p:8,style:{zIndex:101},children:(0,import_jsx_runtime12.jsxs)(import_core22.Group,{justify:"space-between",children:[(0,import_jsx_runtime12.jsxs)(import_core22.Group,{gap:"xs",children:[(0,import_jsx_runtime12.jsx)(import_core22.UnstyledButton,{className:Header_default.logoButton,onClick:props.navbarToggle,children:props.logo}),!props.headerSearchDisabled&&(0,import_jsx_runtime12.jsx)(HeaderSearchInput,{pathname:props.pathname,searchParams:props.searchParams})]}),(0,import_jsx_runtime12.jsxs)(import_core22.Group,{gap:"lg",pr:"sm",children:[props.notifications,(0,import_jsx_runtime12.jsxs)(import_core22.Menu,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"fade-down"},opened:userMenuOpened,onClose:()=>setUserMenuOpened(!1),children:[(0,import_jsx_runtime12.jsx)(import_core22.Menu.Target,{children:(0,import_jsx_runtime12.jsx)(import_core22.UnstyledButton,{className:clsx_default(Header_default.user,{[Header_default.userActive]:userMenuOpened}),onClick:()=>setUserMenuOpened(o=>!o),children:(0,import_jsx_runtime12.jsxs)(import_core22.Group,{gap:7,children:[(0,import_jsx_runtime12.jsx)(ResourceAvatar,{value:profile,radius:"xl",size:24}),(0,import_jsx_runtime12.jsx)(import_core22.Text,{size:"sm",className:Header_default.userName,children:(0,import_core23.formatHumanName)(profile?.name?.[0])}),(0,import_jsx_runtime12.jsx)(IconChevronDown,{size:12,stroke:1.5})]})})}),(0,import_jsx_runtime12.jsx)(import_core22.Menu.Dropdown,{children:(0,import_jsx_runtime12.jsx)(HeaderDropdown,{version:props.version})})]})]})]})})}var import_core28=require("@mantine/core"),import_react_hooks9=require("@medplum/react-hooks");var import_react15=require("react");var import_core25=require("@mantine/core"),import_notifications2=require("@mantine/notifications"),import_core26=require("@medplum/core"),import_react_hooks7=require("@medplum/react-hooks");var import_react10=require("react");var import_react9=require("react"),FormContext=(0,import_react9.createContext)({submitting:!1});FormContext.displayName="FormContext";function parseForm(form){let result={};for(let element of Array.from(form.elements))element instanceof HTMLInputElement?parseInputElement(result,element):element instanceof HTMLTextAreaElement?result[element.name]=element.value:element instanceof HTMLSelectElement&&parseSelectElement(result,element);return result}function parseInputElement(result,el){el.disabled||(el.type==="checkbox"||el.type==="radio")&&!el.checked||(result[el.name]=el.value)}function parseSelectElement(result,el){result[el.name]=el.value}var import_jsx_runtime13=require("react/jsx-runtime");function Form(props){let[submitting,setSubmitting]=(0,import_react10.useState)(!1);return(0,import_jsx_runtime13.jsx)(FormContext.Provider,{value:{submitting},children:(0,import_jsx_runtime13.jsx)("form",{style:props.style,"data-testid":props.testid,onSubmit:e=>{e.preventDefault();let formData=parseForm(e.target);if(props.onSubmit){setSubmitting(!0);let result=props.onSubmit(formData);result?.then?result.catch(console.error).finally(()=>{setSubmitting(!1)}):setSubmitting(!1)}},children:props.children})})}var import_core24=require("@mantine/core"),import_react11=require("react");var import_jsx_runtime14=require("react/jsx-runtime");function SubmitButton(props){let{children,...buttonProps}=props,{submitting}=(0,import_react11.useContext)(FormContext);return(0,import_jsx_runtime14.jsx)(import_core24.Button,{type:"submit",loading:submitting,...buttonProps,children})}var import_jsx_runtime15=require("react/jsx-runtime");function BookmarkDialog(props){let medplum=(0,import_react_hooks7.useMedplum)(),config=medplum.getUserConfiguration();function submitHandler(formData){let{menuname,bookmarkname:name}=formData,target=`${props.pathname}?${props.searchParams.toString()}`,newConfig=(0,import_core26.deepClone)(config);newConfig.menu?.find(({title})=>title===menuname)?.link?.push({name,target}),medplum.updateResource(newConfig).then(res=>{config.menu=res.menu,medplum.dispatchEvent({type:"change"}),(0,import_notifications2.showNotification)({color:"green",message:"Success"}),props.onOk()}).catch(err=>{(0,import_notifications2.showNotification)({color:"red",message:(0,import_core26.normalizeErrorString)(err)})})}return(0,import_jsx_runtime15.jsx)(import_core25.Modal,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:props.visible,onClose:props.onCancel,children:(0,import_jsx_runtime15.jsx)(Form,{onSubmit:submitHandler,children:(0,import_jsx_runtime15.jsxs)(import_core25.Stack,{children:[(0,import_jsx_runtime15.jsx)(SelectMenu,{config}),(0,import_jsx_runtime15.jsx)(import_core25.TextInput,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),(0,import_jsx_runtime15.jsx)(import_core25.Group,{justify:"flex-end",children:(0,import_jsx_runtime15.jsx)(SubmitButton,{mt:"sm",children:"OK"})})]})})})}function SelectMenu(props){function userConfigToMenu(config){return config?.menu?.map(menu=>menu.title)}let menus=userConfigToMenu(props.config);return(0,import_jsx_runtime15.jsx)(import_core25.NativeSelect,{name:"menuname",defaultValue:menus[0],label:"Select Menu Option",data:menus,withAsterisk:!0})}var import_react14=require("react");var import_react13=require("react");var import_core27=require("@mantine/core"),import_react_hooks8=require("@medplum/react-hooks");var import_react12=require("react");var import_jsx_runtime16=require("react/jsx-runtime");function toKey(element){return typeof element.code=="string"?element.code:JSON.stringify(element)}function getDisplay(item){return typeof item.display=="string"?item.display:toKey(item)}function toOption2(element){return{value:toKey(element),label:getDisplay(element),resource:element}}function createValue(input){return{code:input,display:input}}function ValueSetAutocomplete(props){let medplum=(0,import_react_hooks8.useMedplum)(),{binding,creatable,clearable,expandParams,withHelpText,...rest}=props,loadValues=(0,import_react12.useCallback)(async(input,signal)=>{if(!binding)return[];let valueSetElements=(await medplum.valueSetExpand({...expandParams,url:binding,filter:input,count:10},{signal})).expansion?.contains??[],newData=[];for(let valueSetElement of valueSetElements)valueSetElement.code&&!newData.some(item=>item.code===valueSetElement.code)&&newData.push(valueSetElement);return newData},[medplum,expandParams,binding]);return(0,import_jsx_runtime16.jsx)(AsyncAutocomplete,{...rest,creatable:creatable??!0,clearable:clearable??!0,toOption:toOption2,loadOptions:loadValues,onCreate:createValue,itemComponent:withHelpText?ItemComponent2:void 0})}var ItemComponent2=(0,import_react12.forwardRef)(({label,resource,active,...others},ref)=>(0,import_jsx_runtime16.jsx)("div",{ref,...others,children:(0,import_jsx_runtime16.jsxs)(import_core27.Group,{wrap:"nowrap",gap:"xs",children:[active&&(0,import_jsx_runtime16.jsx)(IconCheck,{size:12}),(0,import_jsx_runtime16.jsxs)("div",{children:[(0,import_jsx_runtime16.jsx)(import_core27.Text,{children:label}),(0,import_jsx_runtime16.jsx)(import_core27.Text,{size:"xs",c:"dimmed",children:`${resource.system}#${resource.code}`})]})]})}));var import_jsx_runtime17=require("react/jsx-runtime");function CodeInput(props){let{defaultValue:defaultValue2,onChange,withHelpText,...rest}=props,[value,setValue]=(0,import_react13.useState)(defaultValue2);function handleChange(newValues){let newValue=newValues[0],newCode=valueSetElementToCode(newValue);setValue(newCode),onChange&&onChange(newCode)}return(0,import_jsx_runtime17.jsx)(ValueSetAutocomplete,{defaultValue:codeToValueSetElement(value),onChange:handleChange,withHelpText:withHelpText??!0,...rest})}function codeToValueSetElement(code){return code?{code}:void 0}function valueSetElementToCode(element){return element?.code}var import_jsx_runtime18=require("react/jsx-runtime");function ResourceTypeInput(props){let[resourceType,setResourceType]=(0,import_react14.useState)(props.defaultValue),onChange=props.onChange,setResourceTypeWrapper=(0,import_react14.useCallback)(newResourceType=>{setResourceType(newResourceType),onChange&&onChange(newResourceType)},[onChange]);return(0,import_jsx_runtime18.jsx)(CodeInput,{disabled:props.disabled,"data-autofocus":props.autoFocus,"data-testid":props.testId,defaultValue:resourceType,onChange:setResourceTypeWrapper,name:props.name,placeholder:props.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxValues:props.maxValues??1,clearable:!1,withHelpText:!1})}var Navbar_default={menuTitle:"Navbar_menuTitle",link:"Navbar_link",linkActive:"Navbar_linkActive"};var import_jsx_runtime19=require("react/jsx-runtime");function Navbar(props){let navigate=(0,import_react_hooks9.useMedplumNavigate)(),activeLink=getActiveLink(props.pathname,props.searchParams,props.menus),[bookmarkDialogVisible,setBookmarkDialogVisible]=(0,import_react15.useState)(!1);function onLinkClick(e,to){e.stopPropagation(),e.preventDefault(),navigate(to),window.innerWidth<768&&props.closeNavbar()}function navigateResourceType(resourceType){resourceType&&navigate(`/${resourceType}`)}return(0,import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment,{children:[(0,import_jsx_runtime19.jsx)(import_core28.AppShell.Navbar,{children:(0,import_jsx_runtime19.jsxs)(import_core28.ScrollArea,{p:"xs",children:[!props.resourceTypeSearchDisabled&&(0,import_jsx_runtime19.jsx)(import_core28.AppShell.Section,{mb:"sm",children:(0,import_jsx_runtime19.jsx)(ResourceTypeInput,{name:"resourceType",placeholder:"Resource Type",maxValues:0,onChange:newValue=>navigateResourceType(newValue)},window.location.pathname)}),(0,import_jsx_runtime19.jsxs)(import_core28.AppShell.Section,{grow:!0,children:[props.menus?.map(menu=>(0,import_jsx_runtime19.jsxs)(import_react15.Fragment,{children:[(0,import_jsx_runtime19.jsx)(import_core28.Text,{className:Navbar_default.menuTitle,children:menu.title}),menu.links?.map(link=>(0,import_jsx_runtime19.jsxs)(NavbarLink,{to:link.href,active:link.href===activeLink?.href,onClick:e=>onLinkClick(e,link.href),children:[(0,import_jsx_runtime19.jsx)(NavLinkIcon,{icon:link.icon}),(0,import_jsx_runtime19.jsx)("span",{children:link.label})]},link.href))]},`menu-${menu.title}`)),props.displayAddBookmark&&(0,import_jsx_runtime19.jsx)(import_core28.Button,{variant:"subtle",size:"xs",mt:"xl",leftSection:(0,import_jsx_runtime19.jsx)(IconPlus,{size:"0.75rem"}),onClick:()=>setBookmarkDialogVisible(!0),children:"Add Bookmark"})]})]})}),props.pathname&&props.searchParams&&(0,import_jsx_runtime19.jsx)(BookmarkDialog,{pathname:props.pathname,searchParams:props.searchParams,visible:bookmarkDialogVisible,onOk:()=>setBookmarkDialogVisible(!1),onCancel:()=>setBookmarkDialogVisible(!1)})]})}function NavbarLink(props){return(0,import_jsx_runtime19.jsx)(MedplumLink,{onClick:props.onClick,to:props.to,className:clsx_default(Navbar_default.link,{[Navbar_default.linkActive]:props.active}),children:props.children})}function NavLinkIcon(props){return props.icon?props.icon:(0,import_jsx_runtime19.jsx)(import_core28.Space,{w:30})}function getActiveLink(currentPathname,currentSearchParams,menus){if(!currentPathname||!currentSearchParams||!menus)return;let bestLink,bestScore=0;for(let menu of menus)if(menu.links)for(let link of menu.links){let score=getLinkScore(currentPathname,currentSearchParams,link.href);score>bestScore&&(bestScore=score,bestLink=link)}return bestLink}function getLinkScore(currentPathname,currentSearchParams,linkHref){let linkUrl=new URL(linkHref,"https://example.com");if(currentPathname!==linkUrl.pathname)return 0;let ignoredParams=["_count","_offset"];for(let[key,value]of linkUrl.searchParams.entries())if(!ignoredParams.includes(key)&&currentSearchParams.get(key)!==value)return 0;let count=1;for(let[key,value]of currentSearchParams.entries())ignoredParams.includes(key)||linkUrl.searchParams.get(key)===value&&count++;return count}var import_jsx_runtime20=require("react/jsx-runtime");function AppShell(props){let[navbarOpen,setNavbarOpen]=(0,import_react16.useState)(localStorage.navbarOpen==="true"),medplum=(0,import_react_hooks10.useMedplum)(),profile=(0,import_react_hooks10.useMedplumProfile)();(0,import_react16.useEffect)(()=>{function eventListener(){(0,import_notifications3.showNotification)({id:"offline",color:"red",message:"No connection to server",autoClose:!1})}return medplum.addEventListener("offline",eventListener),()=>medplum.removeEventListener("offline",eventListener)},[medplum]);function setNavbarOpenWrapper(open){localStorage.navbarOpen=open.toString(),setNavbarOpen(open)}function closeNavbar(){setNavbarOpenWrapper(!1)}function toggleNavbar(){setNavbarOpenWrapper(!navbarOpen)}return medplum.isLoading()?(0,import_jsx_runtime20.jsx)(Loading,{}):(0,import_jsx_runtime20.jsxs)(import_core29.AppShell,{header:{height:60},navbar:{width:250,breakpoint:"sm",collapsed:{desktop:!profile||!navbarOpen,mobile:!profile||!navbarOpen}},padding:0,children:[profile&&(0,import_jsx_runtime20.jsx)(Header,{pathname:props.pathname,searchParams:props.searchParams,headerSearchDisabled:props.headerSearchDisabled,logo:props.logo,version:props.version,navbarToggle:toggleNavbar,notifications:props.notifications}),profile&&navbarOpen?(0,import_jsx_runtime20.jsx)(Navbar,{pathname:props.pathname,searchParams:props.searchParams,menus:props.menus,closeNavbar,displayAddBookmark:props.displayAddBookmark,resourceTypeSearchDisabled:props.resourceTypeSearchDisabled}):void 0,(0,import_jsx_runtime20.jsx)(import_core29.AppShell.Main,{className:AppShell_default.main,children:(0,import_jsx_runtime20.jsx)(ErrorBoundary,{children:(0,import_jsx_runtime20.jsx)(import_react16.Suspense,{fallback:(0,import_jsx_runtime20.jsx)(Loading,{}),children:props.children})})})]})}var import_core33=require("@medplum/core");var import_core31=require("@mantine/core"),import_core32=require("@medplum/core"),import_react_hooks11=require("@medplum/react-hooks");var import_core30=require("@mantine/core"),import_react17=require("react");var import_jsx_runtime21=require("react/jsx-runtime"),CCDA_VIEWER_URL="https://ccda.medplum.com",BASE_VALIDATION_URL="https://ccda-validator.medplum.com/";function CcdaDisplay(props){let{url}=props,[shouldSend,setShouldSend]=(0,import_react17.useState)(!1),iframeRef=(0,import_react17.useRef)(null),[validationResult,setValidationResult]=(0,import_react17.useState)(),[validating,setValidating]=(0,import_react17.useState)(!1);(0,import_react17.useEffect)(()=>{url&&shouldSend&&iframeRef.current&&(sendCommand(iframeRef.current,{command:"loadCcdaXml",value:url}).catch(console.error),setShouldSend(!1))},[url,shouldSend]);let validateCcda=async()=>{if(url)try{setValidating(!0);let ccdaContent=await(await fetch(url)).text(),formData=new FormData;formData.append("ccdaFile",new Blob([ccdaContent],{type:"text/xml"}),"ccda.xml");let validationUrl=`${BASE_VALIDATION_URL}referenceccdaservice/?validationObjective=C-CDA_IG_Plus_Vocab&referenceFileName=No%20scenario%20File&curesUpdate=true&severityLevel=WARNING`,validationResponse=await fetch(validationUrl,{method:"POST",body:formData,credentials:"omit",redirect:"manual"});if(!validationResponse.ok)throw new Error(`Validation failed: ${validationResponse.status} ${validationResponse.statusText}`);let validationResult2=await validationResponse.json();setValidationResult(validationResult2)}catch(error){setValidationResult(void 0),console.error("CCDA validation error:",error)}finally{setValidating(!1)}},downloadResults=()=>{if(!validationResult)return;let resultsJson=JSON.stringify(validationResult,null,2);exportJsonFile(resultsJson,"ccda-validation-results")},getErrorCount=()=>validationResult?validationResult.resultsMetaData.resultMetaData.filter(item=>item?.type.includes("Error")).reduce((sum,item)=>sum+(item.count||0),0):0;return url?(0,import_jsx_runtime21.jsxs)("div",{"data-testid":"ccda-iframe",style:{maxWidth:props.maxWidth},children:[(0,import_jsx_runtime21.jsx)("div",{style:{minHeight:400},children:(0,import_jsx_runtime21.jsx)("iframe",{title:"C-CDA Viewer",width:"100%",height:"400",ref:iframeRef,src:CCDA_VIEWER_URL,allowFullScreen:!0,frameBorder:0,seamless:!0,onLoad:()=>setShouldSend(!0)})}),(0,import_jsx_runtime21.jsxs)("div",{style:{marginTop:"10px",marginBottom:"10px",display:"flex",alignItems:"center"},children:[(0,import_jsx_runtime21.jsx)(import_core30.Button,{type:"button",onClick:validateCcda,disabled:validating,children:validating?"Validating...":"Validate"}),validationResult&&(0,import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment,{children:[(0,import_jsx_runtime21.jsxs)("div",{style:{marginLeft:"15px"},children:[(0,import_jsx_runtime21.jsx)("strong",{children:"Validation Results:"})," ",getErrorCount()," errors found"]}),(0,import_jsx_runtime21.jsx)(import_core30.Button,{type:"button",onClick:downloadResults,color:"green",style:{marginLeft:"auto"},children:"Download Full Results"})]})]})]}):null}var import_jsx_runtime22=require("react/jsx-runtime");function AttachmentDisplay(props){let{contentType,url:uncachedUrl,title}=props.value??{},url=(0,import_react_hooks11.useCachedBinaryUrl)(uncachedUrl);return url?(0,import_jsx_runtime22.jsxs)("div",{"data-testid":"attachment-display",children:[contentType?.startsWith("image/")&&(0,import_jsx_runtime22.jsx)("img",{"data-testid":"attachment-image",style:{maxWidth:props.maxWidth},src:url,alt:title}),contentType?.startsWith("video/")&&(0,import_jsx_runtime22.jsx)("video",{"data-testid":"attachment-video",style:{maxWidth:props.maxWidth},controls:!0,children:(0,import_jsx_runtime22.jsx)("source",{type:contentType,src:url})}),(contentType?.startsWith("text/")||contentType==="application/json"||contentType==="application/pdf")&&(0,import_jsx_runtime22.jsx)("div",{"data-testid":"attachment-iframe",style:{maxWidth:props.maxWidth,minHeight:400},children:(0,import_jsx_runtime22.jsx)("iframe",{title:"Attachment",width:"100%",height:"400",src:url+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})}),contentType===import_core32.ContentType.CDA_XML&&(0,import_jsx_runtime22.jsx)(CcdaDisplay,{url}),(0,import_jsx_runtime22.jsx)("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"},children:(0,import_jsx_runtime22.jsx)(import_core31.Anchor,{href:uncachedUrl,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:getDownloadName(title),children:title||"Download"})})]}):null}function getDownloadName(title){return title?.includes(".")?title:void 0}var DescriptionList_default={root:"DescriptionList_root",compact:"DescriptionList_compact"};var import_jsx_runtime23=require("react/jsx-runtime");function DescriptionList(props){let{children,compact}=props;return(0,import_jsx_runtime23.jsx)("dl",{className:clsx_default(DescriptionList_default.root,{[DescriptionList_default.compact]:compact}),children})}function DescriptionListEntry(props){return(0,import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment,{children:[(0,import_jsx_runtime23.jsx)("dt",{children:props.term}),(0,import_jsx_runtime23.jsx)("dd",{children:props.children})]})}var import_jsx_runtime24=require("react/jsx-runtime");function AttachmentArrayDisplay(props){let attachmentElements=props.values?.map((v,index)=>(0,import_jsx_runtime24.jsx)("div",{children:(0,import_jsx_runtime24.jsx)(AttachmentDisplay,{value:v,maxWidth:props.maxWidth})},"attatchment-"+index)),content;if(props.includeDescriptionListEntry){if(props.property===void 0)throw new Error("props.property is required when includeDescriptionListEntry is true");if(!(0,import_core33.isPopulated)(props.path))throw new Error("props.path is required when includeDescriptionListEntry is true");let key=props.path.split(".").pop();content=(0,import_jsx_runtime24.jsx)(DescriptionListEntry,{term:(0,import_core33.getPathDisplayName)(key),children:attachmentElements})}else content=(0,import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment,{children:attachmentElements});return content}var import_core35=require("@mantine/core");var import_react19=require("react");var import_core34=require("@medplum/core"),import_react_hooks12=require("@medplum/react-hooks"),import_react18=require("react");var import_jsx_runtime25=require("react/jsx-runtime");function AttachmentButton(props){let medplum=(0,import_react_hooks12.useMedplum)(),fileInputRef=(0,import_react18.useRef)(null);function onClick(e){killEvent(e),fileInputRef.current?.click()}function onFileChange(e){killEvent(e);let files=e.target.files;files&&Array.from(files).forEach(processFile)}function processFile(file){!file||!file.name||(props.onUploadStart&&props.onUploadStart(),medplum.createAttachment({data:file,contentType:file.type||"application/octet-stream",filename:file.name,securityContext:props.securityContext,onProgress:props.onUploadProgress}).then(attachment=>props.onUpload(attachment)).catch(err=>{props.onUploadError&&props.onUploadError((0,import_core34.normalizeOperationOutcome)(err))}))}return(0,import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment,{children:[(0,import_jsx_runtime25.jsx)("input",{disabled:props.disabled,type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:fileInputRef,onChange:e=>onFileChange(e)}),props.children({onClick,disabled:props.disabled})]})}var import_jsx_runtime26=require("react/jsx-runtime");function AttachmentArrayInput(props){let[values,setValues]=(0,import_react19.useState)(props.defaultValue??[]),valuesRef=(0,import_react19.useRef)(values);valuesRef.current=values;function setValuesWrapper(newValues){setValues(newValues),props.onChange&&props.onChange(newValues)}return(0,import_jsx_runtime26.jsxs)("table",{style:{width:"100%"},children:[(0,import_jsx_runtime26.jsxs)("colgroup",{children:[(0,import_jsx_runtime26.jsx)("col",{width:"97%"}),(0,import_jsx_runtime26.jsx)("col",{width:"3%"})]}),(0,import_jsx_runtime26.jsxs)("tbody",{children:[values.map((v,index)=>(0,import_jsx_runtime26.jsxs)("tr",{children:[(0,import_jsx_runtime26.jsx)("td",{children:(0,import_jsx_runtime26.jsx)(AttachmentDisplay,{value:v,maxWidth:200})}),(0,import_jsx_runtime26.jsx)("td",{children:(0,import_jsx_runtime26.jsx)(import_core35.ActionIcon,{disabled:props.disabled,title:"Remove",variant:"subtle",size:"sm",color:"gray",onClick:e=>{killEvent(e);let copy=values.slice();copy.splice(index,1),setValuesWrapper(copy)},children:(0,import_jsx_runtime26.jsx)(IconCircleMinus,{})})})]},`${index}-${values.length}`)),(0,import_jsx_runtime26.jsxs)("tr",{children:[(0,import_jsx_runtime26.jsx)("td",{}),(0,import_jsx_runtime26.jsx)("td",{children:(0,import_jsx_runtime26.jsx)(AttachmentButton,{disabled:props.disabled,onUpload:attachment=>{setValuesWrapper([...valuesRef.current,attachment])},children:props2=>(0,import_jsx_runtime26.jsx)(import_core35.ActionIcon,{...props2,title:"Add",variant:"subtle",size:"sm",color:props2.disabled?"gray":"green",children:(0,import_jsx_runtime26.jsx)(IconCloudUpload,{})})})})]})]})]})}var import_core36=require("@mantine/core"),import_react20=require("react");var import_jsx_runtime27=require("react/jsx-runtime");function AttachmentInput(props){let[value,setValue]=(0,import_react20.useState)(props.defaultValue);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return value?(0,import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment,{children:[(0,import_jsx_runtime27.jsx)(AttachmentDisplay,{value,maxWidth:200}),(0,import_jsx_runtime27.jsx)(import_core36.Button,{disabled:props.disabled,onClick:e=>{killEvent(e),setValueWrapper(void 0)},children:"Remove"})]}):(0,import_jsx_runtime27.jsx)(AttachmentButton,{disabled:props.disabled,securityContext:props.securityContext,onUpload:setValueWrapper,children:props2=>(0,import_jsx_runtime27.jsx)(import_core36.Button,{...props2,children:"Upload..."})})}var import_core37=require("@mantine/core"),import_core38=require("@medplum/core");var import_react21=require("react");var import_jsx_runtime28=require("react/jsx-runtime");function Logo(props){let overrideUrl=process.env.MEDPLUM_LOGO_URL;return overrideUrl?(0,import_jsx_runtime28.jsx)("img",{src:overrideUrl,alt:"Logo",style:{maxHeight:props.size}}):(0,import_jsx_runtime28.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 180 180",style:{width:props.size,height:props.size},children:[(0,import_jsx_runtime28.jsx)("title",{children:"Medplum Logo"}),(0,import_jsx_runtime28.jsx)("path",{fill:props.fill??"#9c36b5",d:"M84 56c-3-15-15-24-23-28l5-10c8 2 14 8 20 14 0-12 1-16 5-21 8-9 13-9 41-9 0 7 1 18-3 24-7 9-16 7-41 8 5 8 7 14 8 22 36-24 74-7 74 39 0 42-40 83-80 83s-80-41-80-83c0-46 38-63 74-39Zm-3 43H65c-4 0-7 3-7 7v4c0 4 3 7 7 7h16v16c0 4 3 7 7 7h4c4 0 7-3 7-7v-16h16c4 0 7-3 7-7v-4c0-4-3-7-7-7H99V83c0-4-3-7-7-7h-4c-4 0-7 3-7 7z"})]})}var import_jsx_runtime29=require("react/jsx-runtime");function MfaForm(props){let[errorMessage,setErrorMessage]=(0,import_react21.useState)();return(0,import_jsx_runtime29.jsx)(Form,{onSubmit:formData=>{setErrorMessage(void 0),props.onSubmit(formData)?.catch(err=>setErrorMessage((0,import_core38.normalizeErrorString)(err)))},children:(0,import_jsx_runtime29.jsxs)(import_core37.Stack,{children:[(0,import_jsx_runtime29.jsxs)(import_core37.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime29.jsx)(Logo,{size:32}),(0,import_jsx_runtime29.jsx)(import_core37.Title,{children:props.title})]}),errorMessage&&(0,import_jsx_runtime29.jsx)(import_core37.Alert,{icon:(0,import_jsx_runtime29.jsx)(IconAlertCircle,{size:16}),title:"Error",color:"red",children:errorMessage}),props.qrCodeUrl&&(0,import_jsx_runtime29.jsxs)(import_core37.Stack,{align:"center",children:[(0,import_jsx_runtime29.jsx)(import_core37.Text,{children:"Scan this QR code with your authenticator app."}),(0,import_jsx_runtime29.jsx)("img",{src:props.qrCodeUrl,alt:"Multi Factor Auth QR Code"})]}),(0,import_jsx_runtime29.jsx)(import_core37.Stack,{children:(0,import_jsx_runtime29.jsx)(import_core37.TextInput,{name:"token",label:"MFA code",autoComplete:"one-time-code",required:!0,autoFocus:!0})}),(0,import_jsx_runtime29.jsx)(import_core37.Group,{justify:"flex-end",mt:"xl",children:(0,import_jsx_runtime29.jsx)(SubmitButton,{children:props.buttonText})})]})})}var import_core48=require("@medplum/core"),import_react_hooks16=require("@medplum/react-hooks"),import_react25=require("react");var import_core39=require("@mantine/core");var Container_default={root:"Container_root"};var import_jsx_runtime30=require("react/jsx-runtime");function Container(props){let{children,...others}=props;return(0,import_jsx_runtime30.jsx)(import_core39.Container,{className:Container_default.root,...others,children})}var import_core40=require("@mantine/core");var Panel_default={paper:"Panel_paper",fill:"Panel_fill"};var import_jsx_runtime31=require("react/jsx-runtime");function Panel(props){let{width,fill,className,children,...rest}=props,style=width?{maxWidth:width}:void 0;return(0,import_jsx_runtime31.jsx)(import_core40.Paper,{className:clsx_default(Panel_default.paper,fill&&Panel_default.fill,className),style,shadow:"sm",radius:"sm",withBorder:!0,...rest,children})}var import_jsx_runtime32=require("react/jsx-runtime");function Document(props){let{children,...others}=props;return(0,import_jsx_runtime32.jsx)(Container,{children:(0,import_jsx_runtime32.jsx)(Panel,{...others,children})})}var import_core41=require("@mantine/core"),import_core42=require("@medplum/core"),import_react_hooks13=require("@medplum/react-hooks"),import_react22=require("react");function getErrorsForInput(outcome,expression){return outcome?.issue?.filter(issue=>isExpressionMatch(issue.expression?.[0],expression))?.map(issue=>issue.details?.text)?.join(`
65
- `)}function getIssuesForExpression(outcome,expression){return outcome?.issue?.filter(issue=>isExpressionMatch(issue.expression?.[0],expression))}var ARRAY_INDEX_REGEX=/\[\d+\]/;function isExpressionMatch(expr1,expr2){let isExpr1Indexed=typeof expr1=="string"&&ARRAY_INDEX_REGEX.test(expr1),isExpr2Indexed=typeof expr2=="string"&&ARRAY_INDEX_REGEX.test(expr2);if(isExpr1Indexed!==isExpr2Indexed&&(expr1=expr1?.replace(ARRAY_INDEX_REGEX,""),expr2=expr2?.replace(ARRAY_INDEX_REGEX,"")),expr1===expr2)return!0;if(!expr1||!expr2)return!1;let dot1=expr1.indexOf(".");if(dot1>=0&&expr1.substring(dot1+1)===expr2)return!0;let dot2=expr2.indexOf(".");return dot2>=0&&expr2.substring(dot2+1)===expr1}var import_jsx_runtime33=require("react/jsx-runtime");function NewProjectForm(props){let medplum=(0,import_react_hooks13.useMedplum)(),[outcome,setOutcome]=(0,import_react22.useState)();return(0,import_jsx_runtime33.jsxs)(Form,{onSubmit:async formData=>{try{props.handleAuthResponse(await medplum.startNewProject({login:props.login,projectName:formData.projectName}))}catch(err){setOutcome((0,import_core42.normalizeOperationOutcome)(err))}},children:[(0,import_jsx_runtime33.jsxs)(import_core41.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime33.jsx)(Logo,{size:32}),(0,import_jsx_runtime33.jsx)(import_core41.Title,{children:"Create project"})]}),(0,import_jsx_runtime33.jsxs)(import_core41.Stack,{gap:"xl",children:[(0,import_jsx_runtime33.jsx)(import_core41.TextInput,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"projectName")}),(0,import_jsx_runtime33.jsxs)(import_core41.Text,{c:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,import_jsx_runtime33.jsx)(import_core41.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime33.jsx)(import_core41.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]})]}),(0,import_jsx_runtime33.jsx)(import_core41.Group,{justify:"flex-end",mt:"xl",wrap:"nowrap",children:(0,import_jsx_runtime33.jsx)(SubmitButton,{children:"Create project"})})]})}var import_core46=require("@mantine/core"),import_core47=require("@medplum/core"),import_react_hooks15=require("@medplum/react-hooks"),import_react24=require("react");var import_react_hooks14=require("@medplum/react-hooks"),import_react23=require("react");function createScriptTag(src,onload){let head=document.getElementsByTagName("head")[0],script=document.createElement("script");script.async=!0,script.src=src,script.onload=onload??null,head.appendChild(script)}var import_jsx_runtime34=require("react/jsx-runtime");function GoogleButton(props){let medplum=(0,import_react_hooks14.useMedplum)(),{googleClientId,handleGoogleCredential}=props,parentRef=(0,import_react23.useRef)(null),[scriptLoaded,setScriptLoaded]=(0,import_react23.useState)(typeof google<"u"),[initialized,setInitialized]=(0,import_react23.useState)(!1),[buttonRendered,setButtonRendered]=(0,import_react23.useState)(!1);return(0,import_react23.useEffect)(()=>{if(typeof google>"u"){createScriptTag("https://accounts.google.com/gsi/client",()=>setScriptLoaded(!0));return}initialized||(google.accounts.id.initialize({client_id:googleClientId,callback:handleGoogleCredential}),setInitialized(!0)),parentRef.current&&!buttonRendered&&(google.accounts.id.renderButton(parentRef.current,{}),setButtonRendered(!0))},[medplum,googleClientId,initialized,scriptLoaded,parentRef,buttonRendered,handleGoogleCredential]),googleClientId?(0,import_jsx_runtime34.jsx)("div",{ref:parentRef}):null}var import_core43=require("@medplum/core");function getGoogleClientId(clientId){if(clientId)return clientId;let origin=import_core43.locationUtils.getOrigin();if(origin&&("undefined"?.split(",")??[]).includes(origin))return"__GOOGLE_CLIENT_ID__"}var import_core44=require("@mantine/core"),import_core45=require("@medplum/core");var import_jsx_runtime35=require("react/jsx-runtime");function OperationOutcomeAlert(props){let issues=props.outcome?.issue||props.issues;return!issues||issues.length===0?null:(0,import_jsx_runtime35.jsx)(import_core44.Alert,{icon:(0,import_jsx_runtime35.jsx)(IconAlertCircle,{size:16}),color:"red",children:issues.map(issue=>(0,import_jsx_runtime35.jsx)("div",{"data-testid":"text-field-error",children:(0,import_core45.operationOutcomeIssueToString)(issue)},issue.details?.text))})}function initRecaptcha(siteKey){typeof grecaptcha>"u"&&createScriptTag("https://www.google.com/recaptcha/api.js?render="+siteKey)}function getRecaptcha(siteKey){return new Promise((resolve,reject)=>{grecaptcha.ready(async()=>{try{resolve(await grecaptcha.execute(siteKey,{action:"submit"}))}catch(err){reject(err)}})})}var import_jsx_runtime36=require("react/jsx-runtime");function NewUserForm(props){let googleClientId=getGoogleClientId(props.googleClientId),recaptchaSiteKey=props.recaptchaSiteKey,medplum=(0,import_react_hooks15.useMedplum)(),[outcome,setOutcome]=(0,import_react24.useState)(),issues=getIssuesForExpression(outcome,void 0);return(0,import_react24.useEffect)(()=>{recaptchaSiteKey&&initRecaptcha(recaptchaSiteKey)},[recaptchaSiteKey]),(0,import_jsx_runtime36.jsxs)(Form,{onSubmit:async formData=>{setOutcome(void 0);try{let recaptchaToken="";recaptchaSiteKey&&(recaptchaToken=await getRecaptcha(recaptchaSiteKey)),props.handleAuthResponse(await medplum.startNewUser({projectId:props.projectId,clientId:props.clientId,firstName:formData.firstName,lastName:formData.lastName,email:formData.email,password:formData.password,remember:formData.remember==="true",recaptchaSiteKey,recaptchaToken}))}catch(err){setOutcome((0,import_core47.normalizeOperationOutcome)(err))}},children:[(0,import_jsx_runtime36.jsx)(import_core46.Center,{style:{flexDirection:"column"},children:props.children}),(0,import_jsx_runtime36.jsx)(OperationOutcomeAlert,{issues}),googleClientId&&(0,import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment,{children:[(0,import_jsx_runtime36.jsx)(import_core46.Group,{justify:"center",p:"xl",style:{height:70},children:(0,import_jsx_runtime36.jsx)(GoogleButton,{googleClientId,handleGoogleCredential:async response=>{try{props.handleAuthResponse(await medplum.startGoogleLogin({googleClientId:response.clientId,googleCredential:response.credential,projectId:props.projectId,createUser:!0}))}catch(err){setOutcome((0,import_core47.normalizeOperationOutcome)(err))}}})}),(0,import_jsx_runtime36.jsx)(import_core46.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),(0,import_jsx_runtime36.jsxs)(import_core46.Stack,{gap:"xl",children:[(0,import_jsx_runtime36.jsx)(import_core46.TextInput,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"firstName")}),(0,import_jsx_runtime36.jsx)(import_core46.TextInput,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:getErrorsForInput(outcome,"lastName")}),(0,import_jsx_runtime36.jsx)(import_core46.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:getErrorsForInput(outcome,"email")}),(0,import_jsx_runtime36.jsx)(import_core46.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,error:getErrorsForInput(outcome,"password")}),(0,import_jsx_runtime36.jsxs)(import_core46.Text,{c:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]}),(0,import_jsx_runtime36.jsxs)(import_core46.Text,{c:"dimmed",size:"xs",children:["This site is protected by reCAPTCHA and the Google"," ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://policies.google.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://policies.google.com/terms",children:"Terms\xA0of\xA0Service"})," apply."]})]}),(0,import_jsx_runtime36.jsxs)(import_core46.Group,{justify:"space-between",mt:"xl",wrap:"nowrap",children:[(0,import_jsx_runtime36.jsx)(import_core46.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),(0,import_jsx_runtime36.jsx)(SubmitButton,{children:"Create account"})]})]})}var import_jsx_runtime37=require("react/jsx-runtime");function RegisterForm(props){let{type,projectId,clientId,googleClientId,recaptchaSiteKey,onSuccess}=props,medplum=(0,import_react_hooks16.useMedplum)(),[login,setLogin]=(0,import_react25.useState)(),[outcome,setOutcome]=(0,import_react25.useState)();(0,import_react25.useEffect)(()=>{type==="patient"&&login&&medplum.startNewPatient({login,projectId}).then(response=>medplum.processCode(response.code)).then(()=>onSuccess()).catch(err=>setOutcome((0,import_core48.normalizeOperationOutcome)(err)))},[medplum,type,projectId,login,onSuccess]);function handleAuthResponse(response){response.code?medplum.processCode(response.code).then(()=>onSuccess()).catch(console.log):response.login&&setLogin(response.login)}return(0,import_jsx_runtime37.jsxs)(Document,{width:450,children:[outcome&&(0,import_jsx_runtime37.jsx)("pre",{children:JSON.stringify(outcome,null,2)}),!login&&(0,import_jsx_runtime37.jsx)(NewUserForm,{projectId,clientId,googleClientId,recaptchaSiteKey,handleAuthResponse,children:props.children}),login&&type==="project"&&(0,import_jsx_runtime37.jsx)(NewProjectForm,{login,handleAuthResponse})]})}var import_notifications4=require("@mantine/notifications"),import_core54=require("@medplum/core"),import_react_hooks20=require("@medplum/react-hooks"),import_react28=require("react");var import_core49=require("@mantine/core"),import_core50=require("@medplum/core"),import_react_hooks17=require("@medplum/react-hooks"),import_react26=require("react");var import_jsx_runtime38=require("react/jsx-runtime");function AuthenticationForm(props){let[email,setEmail]=(0,import_react26.useState)();return email?(0,import_jsx_runtime38.jsx)(PasswordForm,{email,...props}):(0,import_jsx_runtime38.jsx)(EmailForm,{setEmail,...props})}function EmailForm(props){let{setEmail,onRegister,handleAuthResponse,children,disableEmailAuth,...baseLoginRequest}=props,medplum=(0,import_react_hooks17.useMedplum)(),googleClientId=!props.disableGoogleAuth&&getGoogleClientId(props.googleClientId),[outcome,setOutcome]=(0,import_react26.useState)(),issues=getIssuesForExpression(outcome,void 0),isExternalAuth=(0,import_react26.useCallback)(async authMethod=>{if(!authMethod.authorizeUrl)return!1;let state=JSON.stringify({...await medplum.ensureCodeChallenge(baseLoginRequest),domain:authMethod.domain}),url=new URL(authMethod.authorizeUrl);return url.searchParams.set("state",state),import_core50.locationUtils.assign(url.toString()),!0},[medplum,baseLoginRequest]),handleSubmit=(0,import_react26.useCallback)(async formData=>{let authMethod=await medplum.post("auth/method",{email:formData.email});await isExternalAuth(authMethod)||setEmail(formData.email)},[medplum,isExternalAuth,setEmail]),handleGoogleCredential=(0,import_react26.useCallback)(async response=>{try{let authResponse=await medplum.startGoogleLogin({...baseLoginRequest,googleCredential:response.credential});await isExternalAuth(authResponse)||handleAuthResponse(authResponse)}catch(err){setOutcome((0,import_core50.normalizeOperationOutcome)(err))}},[medplum,baseLoginRequest,isExternalAuth,handleAuthResponse]);return(0,import_jsx_runtime38.jsxs)(Form,{onSubmit:handleSubmit,children:[(0,import_jsx_runtime38.jsx)(import_core49.Center,{style:{flexDirection:"column"},children}),(0,import_jsx_runtime38.jsx)(OperationOutcomeAlert,{issues}),googleClientId&&(0,import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment,{children:[(0,import_jsx_runtime38.jsx)(import_core49.Group,{justify:"center",p:"xl",style:{height:70},children:(0,import_jsx_runtime38.jsx)(GoogleButton,{googleClientId,handleGoogleCredential})}),!disableEmailAuth&&(0,import_jsx_runtime38.jsx)(import_core49.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),!disableEmailAuth&&(0,import_jsx_runtime38.jsx)(import_core49.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"email")}),(0,import_jsx_runtime38.jsxs)(import_core49.Group,{justify:"space-between",mt:"xl",gap:0,wrap:"nowrap",children:[(0,import_jsx_runtime38.jsx)("div",{children:onRegister&&(0,import_jsx_runtime38.jsx)(import_core49.Anchor,{component:"button",type:"button",c:"dimmed",onClick:onRegister,size:"xs","data-dashlane-ignore":"true","data-lp-ignore":"true","data-no-autofill":"true","data-form-type":"navigation",children:"Register"})}),!disableEmailAuth&&(0,import_jsx_runtime38.jsx)(SubmitButton,{children:"Next"})]})]})}function PasswordForm(props){let{onForgotPassword,handleAuthResponse,children,...baseLoginRequest}=props,medplum=(0,import_react_hooks17.useMedplum)(),[outcome,setOutcome]=(0,import_react26.useState)(),issues=getIssuesForExpression(outcome,void 0),handleSubmit=(0,import_react26.useCallback)(formData=>{medplum.startLogin({...baseLoginRequest,password:formData.password,remember:formData.remember==="on"}).then(handleAuthResponse).catch(err=>setOutcome((0,import_core50.normalizeOperationOutcome)(err)))},[medplum,baseLoginRequest,handleAuthResponse]);return(0,import_jsx_runtime38.jsxs)(Form,{onSubmit:handleSubmit,children:[(0,import_jsx_runtime38.jsx)(import_core49.Center,{style:{flexDirection:"column"},children}),(0,import_jsx_runtime38.jsx)(OperationOutcomeAlert,{issues}),(0,import_jsx_runtime38.jsx)(import_core49.Stack,{gap:"xl",children:(0,import_jsx_runtime38.jsx)(import_core49.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"password")})}),(0,import_jsx_runtime38.jsxs)(import_core49.Group,{justify:"space-between",mt:"xl",gap:0,wrap:"nowrap",children:[onForgotPassword&&(0,import_jsx_runtime38.jsx)(import_core49.Anchor,{component:"button",type:"button",c:"dimmed",onClick:onForgotPassword,size:"xs",children:"Forgot password"}),(0,import_jsx_runtime38.jsx)(import_core49.Checkbox,{id:"remember",name:"remember",label:"Remember me",size:"xs",style:{lineHeight:1}}),(0,import_jsx_runtime38.jsx)(SubmitButton,{children:"Sign in"})]})]})}var import_core51=require("@mantine/core"),import_core52=require("@medplum/core"),import_react_hooks18=require("@medplum/react-hooks"),import_react27=require("react");var import_jsx_runtime39=require("react/jsx-runtime");function ChooseProfileForm(props){let medplum=(0,import_react_hooks18.useMedplum)(),combobox=(0,import_core51.useCombobox)(),[search,setSearch]=(0,import_react27.useState)(""),[outcome,setOutcome]=(0,import_react27.useState)();function filterDisplay(display){return!!display?.toLowerCase()?.includes(search.toLowerCase())}function filterMembership(membership){return filterDisplay(membership.profile?.display)||filterDisplay(membership.project?.display)}function handleValueSelect(membershipId){medplum.post("auth/profile",{login:props.login,profile:membershipId}).then(props.handleAuthResponse).catch(err=>setOutcome((0,import_core52.normalizeOperationOutcome)(err)))}let options=props.memberships.filter(filterMembership).slice(0,10).map(item=>(0,import_jsx_runtime39.jsx)(import_core51.Combobox.Option,{value:item.id,children:(0,import_jsx_runtime39.jsx)(SelectOption,{...item})},item.id));return(0,import_jsx_runtime39.jsxs)(import_core51.Stack,{children:[(0,import_jsx_runtime39.jsxs)(import_core51.Flex,{gap:"md",mb:"md",justify:"center",align:"center",direction:"column",wrap:"nowrap",children:[(0,import_jsx_runtime39.jsx)(Logo,{size:32}),(0,import_jsx_runtime39.jsx)(import_core51.Title,{order:3,children:"Choose profile"})]}),(0,import_jsx_runtime39.jsx)(OperationOutcomeAlert,{outcome}),(0,import_jsx_runtime39.jsxs)(import_core51.Combobox,{store:combobox,onOptionSubmit:handleValueSelect,children:[(0,import_jsx_runtime39.jsx)(import_core51.Combobox.EventsTarget,{children:(0,import_jsx_runtime39.jsx)(import_core51.TextInput,{placeholder:"Search",value:search,onChange:event=>{setSearch(event.currentTarget.value),combobox.updateSelectedOptionIndex()}})}),(0,import_jsx_runtime39.jsx)("div",{children:(0,import_jsx_runtime39.jsx)(import_core51.Combobox.Options,{children:options.length>0?options:(0,import_jsx_runtime39.jsx)(import_core51.Combobox.Empty,{children:"Nothing found..."})})})]})]})}function getMembershipLabel(membership){return membership.identifier?.find(i=>i.system==="https://medplum.com/identifier/label")?.value}function SelectOption(membership){let label=getMembershipLabel(membership);return(0,import_jsx_runtime39.jsxs)(import_core51.Group,{children:[(0,import_jsx_runtime39.jsx)(import_core51.Avatar,{radius:"xl"}),(0,import_jsx_runtime39.jsxs)("div",{children:[(0,import_jsx_runtime39.jsx)(import_core51.Text,{fz:"sm",fw:500,children:membership.profile?.display}),(0,import_jsx_runtime39.jsxs)(import_core51.Text,{fz:"xs",opacity:.6,children:[membership.project?.display," ",label?` - ${label}`:""]})]})]})}var import_core53=require("@mantine/core"),import_react_hooks19=require("@medplum/react-hooks"),import_jsx_runtime40=require("react/jsx-runtime");var import_jsx_runtime41=require("react/jsx-runtime"),openConditionScope=/^patient\/Condition\.(?:\*|c?r?u?d?s?)$/,encounterDiagnosis="?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis",problemListItem="?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item",healthConcern="?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern",openObservationScope=/^patient\/Observation\.(?:\*|c?r?u?d?s?)$/,clinicalTest="?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-observation-category|clinical-test",laboratory="?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory",socialHistory="?category=http://terminology.hl7.org/CodeSystem/observation-category|social-history",sdoh="?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdoh",survey="?category=http://terminology.hl7.org/CodeSystem/observation-category|survey",vitalSigns="?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs";function ChooseScopeForm(props){let medplum=(0,import_react_hooks19.useMedplum)();return(0,import_jsx_runtime41.jsx)(Form,{onSubmit:formData=>{medplum.post("auth/scope",{login:props.login,scope:Object.keys(formData).join(" ")}).then(props.handleAuthResponse).catch(console.log)},children:(0,import_jsx_runtime41.jsxs)(import_core53.Stack,{children:[(0,import_jsx_runtime41.jsxs)(import_core53.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime41.jsx)(Logo,{size:32}),(0,import_jsx_runtime41.jsx)(import_core53.Title,{children:"Choose scope"})]}),(0,import_jsx_runtime41.jsx)(import_core53.Stack,{children:(props.scope??"openid").split(" ").map(scopeName=>{let additionalScopes;return openConditionScope.test(scopeName)?additionalScopes=[scopeName+encounterDiagnosis,scopeName+problemListItem,scopeName+healthConcern]:openObservationScope.test(scopeName)&&(additionalScopes=[scopeName+clinicalTest,scopeName+laboratory,scopeName+socialHistory,scopeName+sdoh,scopeName+survey,scopeName+vitalSigns]),(0,import_jsx_runtime41.jsxs)(import_jsx_runtime40.Fragment,{children:[(0,import_jsx_runtime41.jsx)(import_core53.Checkbox,{id:scopeName,name:scopeName,label:scopeName,defaultChecked:!0},scopeName),additionalScopes?.map(scope=>(0,import_jsx_runtime41.jsx)(import_core53.Checkbox,{id:scope,name:scope,label:scope},scope))]},scopeName+"_group")})}),(0,import_jsx_runtime41.jsx)(import_core53.Group,{justify:"flex-end",mt:"xl",children:(0,import_jsx_runtime41.jsx)(SubmitButton,{children:"Set scope"})})]})})}var import_jsx_runtime42=require("react/jsx-runtime");function SignInForm(props){let{login:loginCode,chooseScopes,onSuccess,onForgotPassword,onRegister,onCode,...baseLoginRequest}=props,medplum=(0,import_react_hooks20.useMedplum)(),[login,setLogin]=(0,import_react28.useState)(),loginRequested=(0,import_react28.useRef)(!1),[mfaEnrollRequired,setMfaEnrollRequired]=(0,import_react28.useState)(!1),[enrollQrCode,setEnrollQrCode]=(0,import_react28.useState)(),[mfaRequired,setMfaRequired]=(0,import_react28.useState)(!1),[memberships,setMemberships]=(0,import_react28.useState)(),handleCode=(0,import_react28.useCallback)(code=>{onCode?onCode(code):medplum.processCode(code).then(()=>{onSuccess&&onSuccess()}).catch(err=>(0,import_notifications4.showNotification)({color:"red",message:(0,import_core54.normalizeErrorString)(err)}))},[medplum,onCode,onSuccess]),handleAuthResponse=(0,import_react28.useCallback)(response=>{setMfaEnrollRequired(!!response.mfaEnrollRequired),setEnrollQrCode(response.enrollQrCode),setMfaRequired(!!response.mfaRequired),response.login&&setLogin(response.login),response.memberships&&setMemberships(response.memberships),response.code&&(chooseScopes?setMemberships(void 0):handleCode(response.code))},[chooseScopes,handleCode]),handleScopeResponse=(0,import_react28.useCallback)(response=>{handleCode(response.code)},[handleCode]);return(0,import_react28.useEffect)(()=>{loginCode&&!loginRequested.current&&!login&&(loginRequested.current=!0,medplum.get("auth/login/"+loginCode).then(handleAuthResponse).catch(err=>(0,import_notifications4.showNotification)({color:"red",message:(0,import_core54.normalizeErrorString)(err)})))},[medplum,loginCode,loginRequested,login,handleAuthResponse]),(0,import_jsx_runtime42.jsx)(Document,{width:450,px:"sm",py:"md",children:login?mfaEnrollRequired&&enrollQrCode?(0,import_jsx_runtime42.jsx)(MfaForm,{title:"Enroll in MFA",buttonText:"Enroll",qrCodeUrl:enrollQrCode,onSubmit:async fields=>{let res=await medplum.post("auth/mfa/login-enroll",{login,token:fields.token});handleAuthResponse(res)}}):mfaRequired?(0,import_jsx_runtime42.jsx)(MfaForm,{title:"Enter MFA code",buttonText:"Submit code",onSubmit:async fields=>{let res=await medplum.post("auth/mfa/verify",{login,token:fields.token});handleAuthResponse(res)}}):memberships?(0,import_jsx_runtime42.jsx)(ChooseProfileForm,{login,memberships,handleAuthResponse}):props.projectId==="new"?(0,import_jsx_runtime42.jsx)(NewProjectForm,{login,handleAuthResponse}):props.chooseScopes?(0,import_jsx_runtime42.jsx)(ChooseScopeForm,{login,scope:props.scope,handleAuthResponse:handleScopeResponse}):(0,import_jsx_runtime42.jsx)("div",{children:"Success"}):(0,import_jsx_runtime42.jsx)(AuthenticationForm,{onForgotPassword,onRegister,handleAuthResponse,disableGoogleAuth:props.disableGoogleAuth,disableEmailAuth:props.disableEmailAuth,...baseLoginRequest,children:props.children})})}var import_core69=require("@medplum/core"),import_react33=require("react");var import_core67=require("@mantine/core"),import_core68=require("@medplum/core");var import_react32=require("react");var import_core55=require("@medplum/core"),import_jsx_runtime43=require("react/jsx-runtime");function CodeableConceptDisplay(props){return(0,import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment,{children:(0,import_core55.formatCodeableConcept)(props.value)})}var import_core56=require("@medplum/core"),import_jsx_runtime44=require("react/jsx-runtime");function CodingDisplay(props){return(0,import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment,{children:(0,import_core56.formatCoding)(props.value)})}var import_jsx_runtime45=require("react/jsx-runtime");function ContactPointDisplay(props){let contactPoint=props.value;if(!contactPoint)return null;let builder=[];return contactPoint.value&&builder.push(contactPoint.value),(contactPoint.use||contactPoint.system)&&(builder.push(" ["),contactPoint.use&&builder.push(contactPoint.use),contactPoint.use&&contactPoint.system&&builder.push(" "),contactPoint.system&&builder.push(contactPoint.system),builder.push("]")),(0,import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment,{children:builder.join("").trim()})}var import_jsx_runtime46=require("react/jsx-runtime");function ContactDetailDisplay(props){let contactDetail=props.value;return contactDetail?(0,import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment,{children:[contactDetail.name,contactDetail.name&&": ",contactDetail.telecom?.map(telecom=>(0,import_jsx_runtime46.jsx)(ContactPointDisplay,{value:telecom},`telecom-${contactDetail.name}-${telecom.value}`))]}):null}var import_core58=require("@medplum/core"),import_react_hooks21=require("@medplum/react-hooks"),import_react29=require("react");var import_core57=require("@medplum/core");function getValueAndType(context,path,profileUrl){let typedResult=(0,import_core57.getTypedPropertyValue)(context,path,{profileUrl});return typedResult?Array.isArray(typedResult)?[typedResult.map(e=>e.value),typedResult[0].type]:[typedResult.value,typedResult.type]:[void 0,"undefined"]}function getValueAndTypeFromElement(typedValue,path,element){let typedResult=(0,import_core57.getTypedPropertyValueWithSchema)(typedValue,path,element);return typedResult?Array.isArray(typedResult)?[typedResult.map(e=>e.value),typedResult[0].type]:[typedResult.value,typedResult.type]:[void 0,"undefined"]}var import_jsx_runtime47=require("react/jsx-runtime");function ExtensionDisplay(props){let{elementDefinitionType}=props,medplum=(0,import_react_hooks21.useMedplum)(),ctx=(0,import_react29.useContext)(ElementsContext),[typeSchema,setTypeSchema]=(0,import_react29.useState)((0,import_core58.getDataType)("Extension")),profileUrl=(0,import_react29.useMemo)(()=>{if((0,import_core58.isPopulated)(elementDefinitionType?.profile))return elementDefinitionType.profile[0]},[elementDefinitionType]),[loadingProfile,setLoadingProfile]=(0,import_react29.useState)(profileUrl!==void 0);if((0,import_react29.useEffect)(()=>{profileUrl&&(setLoadingProfile(!0),medplum.requestProfileSchema(profileUrl).then(()=>{let profile=(0,import_core58.tryGetProfile)(profileUrl);setLoadingProfile(!1),profile&&setTypeSchema(profile)}).catch(reason=>{setLoadingProfile(!1),console.warn(reason)}))},[medplum,profileUrl]),profileUrl&&(loadingProfile||!(0,import_core58.isProfileLoaded)(profileUrl)))return(0,import_jsx_runtime47.jsx)("div",{children:"Loading..."});if(typeSchema.elements["value[x]"]?.max!==0){let[propertyValue,propertyType]=getValueAndType({type:"Extension",value:props.value},"value[x]",profileUrl??ctx.profileUrl);return(0,import_jsx_runtime47.jsx)(ResourcePropertyDisplay,{propertyType,value:propertyValue})}return(0,import_jsx_runtime47.jsx)(BackboneElementDisplay,{path:props.path,value:{type:typeSchema.type,value:props.value},compact:props.compact,ignoreMissingValues:props.ignoreMissingValues,link:props.link,profileUrl})}var import_jsx_runtime48=require("react/jsx-runtime");function IdentifierDisplay(props){return(0,import_jsx_runtime48.jsxs)("div",{children:[props.value?.system,": ",props.value?.value]})}var import_core59=require("@medplum/core"),import_jsx_runtime49=require("react/jsx-runtime");function MoneyDisplay(props){return(0,import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment,{children:(0,import_core59.formatMoney)(props.value)})}var import_core60=require("@medplum/core"),import_jsx_runtime50=require("react/jsx-runtime");function QuantityDisplay(props){return(0,import_jsx_runtime50.jsx)(import_jsx_runtime50.Fragment,{children:(0,import_core60.formatQuantity)(props.value)})}var import_core61=require("@medplum/core"),import_jsx_runtime51=require("react/jsx-runtime");function RangeDisplay(props){return(0,import_jsx_runtime51.jsx)(import_jsx_runtime51.Fragment,{children:(0,import_core61.formatRange)(props.value)})}var import_jsx_runtime52=require("react/jsx-runtime");function RatioDisplay(props){let value=props.value;return value?(0,import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment,{children:[(0,import_jsx_runtime52.jsx)(QuantityDisplay,{value:value.numerator}),"\xA0/\xA0",(0,import_jsx_runtime52.jsx)(QuantityDisplay,{value:value.denominator})]}):null}var import_core62=require("@medplum/core");var import_jsx_runtime53=require("react/jsx-runtime");function ReferenceDisplay(props){if(!props.value)return null;let displayString=props.value.display||props.value.reference||(0,import_core62.stringify)(props.value);return props.link!==!1&&props.value.reference?(0,import_jsx_runtime53.jsx)(MedplumLink,{to:props.value,children:displayString}):(0,import_jsx_runtime53.jsx)(import_jsx_runtime53.Fragment,{children:displayString})}var import_core65=require("@mantine/core"),import_core66=require("@medplum/core"),import_react_hooks22=require("@medplum/react-hooks"),import_react31=require("react");var import_core63=require("@medplum/core");function assignValuesIntoSlices(values,slices,slicing,profileUrl){if(!(0,import_core63.isPopulated)(slicing?.slices))return[values];let slicedValues=new Array(slices.length+1);for(let i=0;i<slicedValues.length;i++)slicedValues[i]=[];for(let value of values){let sliceName=(0,import_core63.getValueSliceName)(value,slices,slicing.discriminator,profileUrl),sliceIndex=sliceName?slices.findIndex(slice=>slice.name===sliceName):-1;sliceIndex===-1&&(sliceIndex=slices.length),slicedValues[sliceIndex].push(value)}return slicedValues}async function prepareSlices({medplum,property}){return new Promise((resolve,reject)=>{if(!property.slicing){resolve([]);return}let supportedSlices=[],profileUrls=[],promises=[];for(let slice of property.slicing.slices){if(!(0,import_core63.isSliceDefinitionWithTypes)(slice)){console.debug("Unsupported slice definition",slice);continue}let profileUrl;(0,import_core63.isPopulated)(slice.elements)||(profileUrl=slice.type[0]?.profile?.[0]),supportedSlices.push(slice),profileUrls.push(profileUrl),profileUrl&&promises.push(medplum.requestProfileSchema(profileUrl))}Promise.all(promises).then(()=>{for(let i=0;i<supportedSlices.length;i++){let slice=supportedSlices[i],profileUrl=profileUrls[i];if(profileUrl){let typeSchema=(0,import_core63.tryGetProfile)(profileUrl);slice.typeSchema=typeSchema}}resolve(supportedSlices)}).catch(reject)})}var import_core64=require("@medplum/core"),import_react30=require("react");var import_jsx_runtime54=require("react/jsx-runtime");function maybeWrapWithContext(ContextProvider,contextValue,contents){return contextValue!==void 0?(0,import_jsx_runtime54.jsx)(ContextProvider,{value:contextValue,children:contents}):contents}var import_jsx_runtime55=require("react/jsx-runtime");function SliceDisplay(props){let{slice,property}=props,sliceElements=slice.typeSchema?.elements??slice.elements,parentContext=(0,import_react30.useContext)(ElementsContext),contextValue=(0,import_react30.useMemo)(()=>{if((0,import_core64.isPopulated)(sliceElements))return(0,import_core64.buildElementsContext)({parentContext,elements:sliceElements,path:props.path,profileUrl:slice.typeSchema?.url})},[parentContext,props.path,slice.typeSchema?.url,sliceElements]);return maybeWrapWithContext(ElementsContext.Provider,contextValue,(0,import_jsx_runtime55.jsx)(import_jsx_runtime55.Fragment,{children:props.value.map((value,valueIndex)=>(0,import_jsx_runtime55.jsx)("div",{children:(0,import_jsx_runtime55.jsx)(ResourcePropertyDisplay,{property,path:props.path,arrayElement:!0,elementDefinitionType:slice.type[0],propertyType:slice.type[0].code,value,ignoreMissingValues:props.ignoreMissingValues,link:props.link})},`${valueIndex}-${props.value.length}`))}))}var import_jsx_runtime56=require("react/jsx-runtime"),MAX_ARRAY_SIZE=50;function ResourceArrayDisplay(props){let{property,propertyType}=props,medplum=(0,import_react_hooks22.useMedplum)(),values=(0,import_react31.useMemo)(()=>Array.isArray(props.values)?props.values:[],[props.values]),[loading,setLoading]=(0,import_react31.useState)(!0),[slices,setSlices]=(0,import_react31.useState)([]),[slicedValues,setSlicedValues]=(0,import_react31.useState)(()=>[values]),[valuesLength,setValuesLength]=(0,import_react31.useState)(0),ctx=(0,import_react31.useContext)(ElementsContext);if((0,import_react31.useEffect)(()=>{prepareSlices({medplum,property}).then(slices2=>{setValuesLength(values.length),setSlices(slices2);let limitedValues=values.slice(0,MAX_ARRAY_SIZE),slicedValues2=assignValuesIntoSlices(limitedValues,slices2,property.slicing,ctx.profileUrl);setSlicedValues(slicedValues2),setLoading(!1)}).catch(reason=>{console.error(reason),setLoading(!1)})},[medplum,property,ctx.profileUrl,setSlicedValues,values]),loading)return(0,import_jsx_runtime56.jsx)("div",{children:"Loading..."});let nonSliceContent;if(property.type[0]?.code!=="Extension"){let nonSliceValues=slicedValues[slices.length],nonSliceElements=nonSliceValues.map((value,valueIndex)=>(0,import_jsx_runtime56.jsx)("div",{children:(0,import_jsx_runtime56.jsx)(ResourcePropertyDisplay,{path:props.path,arrayElement:!0,property,propertyType,value,ignoreMissingValues:props.ignoreMissingValues,link:props.link})},`${valueIndex}-${nonSliceValues.length}`));if(props.includeDescriptionListEntry){if(!(0,import_core66.isPopulated)(props.path))throw new Error("props.path is required when includeDescriptionListEntry is true");let key=props.path.split(".").pop();nonSliceContent=(0,import_jsx_runtime56.jsx)(DescriptionListEntry,{term:(0,import_core66.getPathDisplayName)(key),children:nonSliceElements})}else nonSliceContent=(0,import_jsx_runtime56.jsx)(import_jsx_runtime56.Fragment,{children:nonSliceElements})}return(0,import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment,{children:[slices.map((slice,sliceIndex)=>{if(!props.path)throw Error(`Displaying a resource property with slices of type ${props.propertyType} requires path`);let sliceDisplay=(0,import_jsx_runtime56.jsx)(SliceDisplay,{path:props.path,slice,property,value:slicedValues[sliceIndex],ignoreMissingValues:props.ignoreMissingValues,link:props.link},slice.name);return props.includeDescriptionListEntry&&(sliceDisplay=(0,import_jsx_runtime56.jsx)(DescriptionListEntry,{term:(0,import_core66.getPathDisplayName)(slice.name),children:sliceDisplay},slice.name)),sliceDisplay}),nonSliceContent,valuesLength>MAX_ARRAY_SIZE&&(0,import_jsx_runtime56.jsx)(import_core65.Group,{justify:"right",children:(0,import_jsx_runtime56.jsxs)(import_core65.Text,{children:["... ",valuesLength," total values"]})})]})}var import_jsx_runtime57=require("react/jsx-runtime");function ResourcePropertyDisplay(props){let{property,propertyType,value}=props;if(property?.path?.endsWith(".id"))return(0,import_jsx_runtime57.jsxs)(import_core67.Flex,{gap:3,align:"center",children:[value,!(0,import_core68.isEmpty)(value)&&(0,import_jsx_runtime57.jsx)(import_core67.CopyButton,{value,timeout:2e3,children:({copied,copy})=>(0,import_jsx_runtime57.jsx)(import_core67.Tooltip,{label:copied?"Copied":"Copy",withArrow:!0,position:"right",children:(0,import_jsx_runtime57.jsx)(import_core67.ActionIcon,{variant:"subtle",color:copied?"teal":"gray",onClick:copy,children:copied?(0,import_jsx_runtime57.jsx)(IconCheck,{size:"1rem"}):(0,import_jsx_runtime57.jsx)(IconCopy,{size:"1rem"})})})})]});if(property&&(property.isArray||property.max>1)&&!props.arrayElement)return propertyType===import_core68.PropertyType.Attachment?(0,import_jsx_runtime57.jsx)(AttachmentArrayDisplay,{values:value,maxWidth:props.maxWidth,includeDescriptionListEntry:props.includeArrayDescriptionListEntry,property,path:props.path}):(0,import_jsx_runtime57.jsx)(ResourceArrayDisplay,{path:props.path,property,propertyType,values:value,includeDescriptionListEntry:props.includeArrayDescriptionListEntry,ignoreMissingValues:props.ignoreMissingValues,link:props.link});switch(propertyType){case import_core68.PropertyType.boolean:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:value===void 0?"":(!!value).toString()});case import_core68.PropertyType.SystemString:case import_core68.PropertyType.string:return props.property?.path?.toLowerCase().includes("secret")?(0,import_jsx_runtime57.jsx)(SecretFieldDisplay,{value}):(0,import_jsx_runtime57.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:value});case import_core68.PropertyType.code:case import_core68.PropertyType.date:case import_core68.PropertyType.decimal:case import_core68.PropertyType.id:case import_core68.PropertyType.integer:case import_core68.PropertyType.positiveInt:case import_core68.PropertyType.unsignedInt:case import_core68.PropertyType.uri:case import_core68.PropertyType.url:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:value});case import_core68.PropertyType.canonical:return(0,import_jsx_runtime57.jsx)(ReferenceDisplay,{value:{reference:value},link:props.link});case import_core68.PropertyType.dateTime:case import_core68.PropertyType.instant:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:(0,import_core68.formatDateTime)(value)});case import_core68.PropertyType.markdown:return(0,import_jsx_runtime57.jsx)("pre",{children:value});case import_core68.PropertyType.Address:return(0,import_jsx_runtime57.jsx)(AddressDisplay,{value});case import_core68.PropertyType.Annotation:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:value?.text});case import_core68.PropertyType.Attachment:return(0,import_jsx_runtime57.jsx)(AttachmentDisplay,{value,maxWidth:props.maxWidth});case import_core68.PropertyType.CodeableConcept:return(0,import_jsx_runtime57.jsx)(CodeableConceptDisplay,{value});case import_core68.PropertyType.Coding:return(0,import_jsx_runtime57.jsx)(CodingDisplay,{value});case import_core68.PropertyType.ContactDetail:return(0,import_jsx_runtime57.jsx)(ContactDetailDisplay,{value});case import_core68.PropertyType.ContactPoint:return(0,import_jsx_runtime57.jsx)(ContactPointDisplay,{value});case import_core68.PropertyType.HumanName:return(0,import_jsx_runtime57.jsx)(HumanNameDisplay,{value});case import_core68.PropertyType.Identifier:return(0,import_jsx_runtime57.jsx)(IdentifierDisplay,{value});case import_core68.PropertyType.Money:return(0,import_jsx_runtime57.jsx)(MoneyDisplay,{value});case import_core68.PropertyType.Period:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:(0,import_core68.formatPeriod)(value)});case import_core68.PropertyType.Quantity:case import_core68.PropertyType.Duration:return(0,import_jsx_runtime57.jsx)(QuantityDisplay,{value});case import_core68.PropertyType.Range:return(0,import_jsx_runtime57.jsx)(RangeDisplay,{value});case import_core68.PropertyType.Ratio:return(0,import_jsx_runtime57.jsx)(RatioDisplay,{value});case import_core68.PropertyType.Reference:return(0,import_jsx_runtime57.jsx)(ReferenceDisplay,{value,link:props.link});case import_core68.PropertyType.Timing:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:(0,import_core68.formatTiming)(value)});case import_core68.PropertyType.Dosage:case import_core68.PropertyType.UsageContext:if(!props.path)throw Error(`Displaying property of type ${props.propertyType} requires path`);return(0,import_jsx_runtime57.jsx)(BackboneElementDisplay,{path:props.path,value:{type:propertyType,value},compact:!0,ignoreMissingValues:props.ignoreMissingValues});case import_core68.PropertyType.Extension:if(!props.path)throw Error(`Displaying property of type ${props.propertyType} requires path`);return(0,import_jsx_runtime57.jsx)(ExtensionDisplay,{path:props.path,value,compact:!0,ignoreMissingValues:props.ignoreMissingValues,elementDefinitionType:props.elementDefinitionType});default:if(!property)throw Error(`Displaying property of type ${props.propertyType} requires element schema`);if(!props.path)throw Error(`Displaying property of type ${props.propertyType} requires path`);return(0,import_jsx_runtime57.jsx)(BackboneElementDisplay,{path:props.path,value:{type:property.type[0].code,value},compact:!0,ignoreMissingValues:props.ignoreMissingValues})}}function SecretFieldDisplay(props){let[isVisible,setIsVisible]=(0,import_react32.useState)(!1),secretValue=props.value??"",hasValue=!(0,import_core68.isEmpty)(secretValue),MASK="\u2022".repeat(8);return(0,import_jsx_runtime57.jsxs)(import_core67.Flex,{gap:3,align:"center",children:[isVisible?(0,import_jsx_runtime57.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:secretValue}):(0,import_jsx_runtime57.jsx)("div",{style:{whiteSpace:"pre-wrap"},"aria-hidden":"true",children:hasValue?MASK:""}),hasValue&&(0,import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment,{children:[(0,import_jsx_runtime57.jsx)(import_core67.CopyButton,{value:props.value,timeout:2e3,children:({copied,copy})=>(0,import_jsx_runtime57.jsx)(import_core67.Tooltip,{label:copied?"Copied":"Copy secret",withArrow:!0,position:"right",children:(0,import_jsx_runtime57.jsx)(import_core67.ActionIcon,{variant:"subtle",color:copied?"teal":"gray",onClick:copy,"aria-label":copied?"Copied":"Copy secret",children:copied?(0,import_jsx_runtime57.jsx)(IconCheck,{size:"1rem"}):(0,import_jsx_runtime57.jsx)(IconCopy,{size:"1rem"})})})}),(0,import_jsx_runtime57.jsx)(import_core67.Tooltip,{label:isVisible?"Hide secret":"Show secret",withArrow:!0,position:"right",children:(0,import_jsx_runtime57.jsx)(import_core67.ActionIcon,{variant:"subtle",color:"gray",onClick:()=>setIsVisible(!isVisible),"aria-label":isVisible?"Hide secret":"Show secret",children:isVisible?(0,import_jsx_runtime57.jsx)(IconEyeOff,{size:"1rem"}):(0,import_jsx_runtime57.jsx)(IconEye,{size:"1rem"})})})]})]})}var import_jsx_runtime58=require("react/jsx-runtime"),EXTENSION_KEYS2=["extension","modifierExtension"],IGNORED_PROPERTIES2=DEFAULT_IGNORED_PROPERTIES.filter(prop=>!EXTENSION_KEYS2.includes(prop));function BackboneElementDisplay(props){let typedValue=props.value,{value,type:typeName}=typedValue,parentElementsContext=(0,import_react33.useContext)(ElementsContext),profileUrl=props.profileUrl??parentElementsContext?.profileUrl,typeSchema=(0,import_react33.useMemo)(()=>(0,import_core69.tryGetDataType)(typeName,profileUrl),[profileUrl,typeName]),newElementsContext=(0,import_react33.useMemo)(()=>{if(typeSchema)return(0,import_core69.buildElementsContext)({parentContext:parentElementsContext,elements:typeSchema.elements,path:props.path,profileUrl:typeSchema.url,accessPolicyResource:props.accessPolicyResource})},[typeSchema,parentElementsContext,props.path,props.accessPolicyResource]);if((0,import_core69.isEmpty)(value))return null;if(!typeSchema)return(0,import_jsx_runtime58.jsxs)("div",{children:[typeName,"\xA0not implemented"]});if(typeof value=="object"&&"name"in value&&Object.keys(value).length===1&&typeof value.name=="string")return(0,import_jsx_runtime58.jsx)("div",{children:value.name});let elementsContext=newElementsContext??parentElementsContext;return maybeWrapWithContext(ElementsContext.Provider,newElementsContext,(0,import_jsx_runtime58.jsx)(DescriptionList,{compact:props.compact,children:Object.entries(elementsContext.elements).map(([key,property])=>{if(EXTENSION_KEYS2.includes(key)&&(0,import_core69.isEmpty)(property.slicing?.slices))return null;if(IGNORED_PROPERTIES2.includes(key))return null;if(DEFAULT_IGNORED_NON_NESTED_PROPERTIES.includes(key)&&property.path.split(".").length===2||key.includes("."))return null;let[propertyValue,propertyType]=getValueAndType(typedValue,key,elementsContext.profileUrl);if((props.ignoreMissingValues||property.max===0)&&(0,import_core69.isEmpty)(propertyValue)||props.path.endsWith(".extension")&&(key==="url"||key==="id"))return null;let isArrayProperty=property.max>1||property.isArray,resourcePropertyDisplay=(0,import_jsx_runtime58.jsx)(ResourcePropertyDisplay,{property,propertyType,path:props.path+"."+key,value:propertyValue,ignoreMissingValues:props.ignoreMissingValues,includeArrayDescriptionListEntry:isArrayProperty,link:props.link},key);return isArrayProperty?resourcePropertyDisplay:(0,import_jsx_runtime58.jsx)(DescriptionListEntry,{term:(0,import_core69.getPathDisplayName)(key),children:resourcePropertyDisplay},key)})}))}var import_core103=require("@medplum/core"),import_react56=require("react");var import_core101=require("@mantine/core"),import_core102=require("@medplum/core"),import_react55=require("react");var import_core71=require("@mantine/core"),import_react34=require("react");var FormSection_default={dimmed:"FormSection_dimmed",preserveBreaks:"FormSection_preserveBreaks"};var import_core70=require("@mantine/core"),import_jsx_runtime59=require("react/jsx-runtime"),READ_ONLY_TOOLTIP_TEXT="Read Only";function maybeWrapWithTooltip(tooltipText,children){return tooltipText?(0,import_jsx_runtime59.jsx)(import_core70.Tooltip.Floating,{label:tooltipText,children}):children}var import_jsx_runtime60=require("react/jsx-runtime");function CheckboxFormSection(props){let{debugMode}=(0,import_react34.useContext)(ElementsContext),label;return debugMode&&props.fhirPath?label=`${props.title} - ${props.fhirPath}`:label=props.title,maybeWrapWithTooltip(props?.readonly?READ_ONLY_TOOLTIP_TEXT:void 0,(0,import_jsx_runtime60.jsxs)(import_core71.Group,{wrap:"nowrap","data-testid":props.testId,children:[(0,import_jsx_runtime60.jsx)("div",{children:props.children}),(0,import_jsx_runtime60.jsx)("div",{children:(0,import_jsx_runtime60.jsx)(import_core71.Input.Wrapper,{id:props.htmlFor,label,classNames:{label:props?.readonly?FormSection_default.dimmed:void 0},description:props.description,withAsterisk:props.withAsterisk,children:null})})]}))}var import_core72=require("@mantine/core");var import_react35=require("react");var import_jsx_runtime61=require("react/jsx-runtime");function FormSection(props){let{debugMode}=(0,import_react35.useContext)(ElementsContext),label;return debugMode&&props.fhirPath?label=`${props.title} - ${props.fhirPath}`:label=props.title,maybeWrapWithTooltip(props?.readonly?READ_ONLY_TOOLTIP_TEXT:void 0,(0,import_jsx_runtime61.jsx)(import_core72.Input.Wrapper,{id:props.htmlFor,label,classNames:{label:clsx_default({[FormSection_default.dimmed]:props?.readonly},FormSection_default.preserveBreaks)},description:props.description,withAsterisk:props.withAsterisk,error:getErrorsForInput(props.outcome,props.errorExpression??props.htmlFor),"data-testid":props.testId,children:props.children}))}var import_core73=require("@medplum/core");function setPropertyValue(obj,key,propName,elementDefinition,value){let types=elementDefinition.type;if(types.length>1)for(let type of types){let compoundKey=key.replace("[x]",(0,import_core73.capitalize)(type.code));compoundKey in obj&&delete obj[compoundKey]}return(0,import_core73.isEmpty)(value)?obj[propName]=void 0:obj[propName]=value,obj}function isSupportedProfileStructureDefinition(profile){return!!profile&&!(0,import_core73.isEmpty)(profile.url)&&!(0,import_core73.isEmpty)(profile.name)}var import_core99=require("@mantine/core"),import_core100=require("@medplum/core"),import_react54=require("react");var import_react36=require("react");var import_jsx_runtime62=require("react/jsx-runtime");function CodeableConceptInput(props){let{defaultValue:defaultValue2,onChange,withHelpText,outcome:_outcome,path:_path,valuePath:_valuePath,...rest}=props,[value,setValue]=(0,import_react36.useState)(defaultValue2);function handleChange(newValues){let newConcept=valueSetElementToCodeableConcept(newValues);setValue(newConcept),onChange&&onChange(newConcept)}return(0,import_jsx_runtime62.jsx)(ValueSetAutocomplete,{defaultValue:value&&codeableConceptToValueSetElement(value),onChange:handleChange,withHelpText:withHelpText??!0,...rest})}function codeableConceptToValueSetElement(concept){return concept.coding?.map(c=>({system:c.system,code:c.code,display:c.display}))}function valueSetElementToCodeableConcept(elements){if(elements.length!==0)return{coding:elements.map(e=>({system:e.system,code:e.code,display:e.display}))}}var import_react37=require("react");var import_jsx_runtime63=require("react/jsx-runtime");function CodingInput(props){let{defaultValue:defaultValue2,onChange,withHelpText,response,...rest}=props,[value,setValue]=(0,import_react37.useState)(response?.answer?.[0]?.valueCoding??defaultValue2);function handleChange(newValues){let newValue=newValues[0],newConcept=newValue&&valueSetElementToCoding(newValue);setValue(newConcept),onChange&&onChange(newConcept)}return(0,import_jsx_runtime63.jsx)(ValueSetAutocomplete,{defaultValue:value?codingToValueSetElement(value):void 0,maxValues:1,onChange:handleChange,withHelpText:withHelpText??!0,...rest})}function codingToValueSetElement(coding){return{system:coding.system,code:coding.code,display:coding.display}}function valueSetElementToCoding(element){return{system:element.system,code:element.code,display:element.display}}var import_core75=require("@mantine/core"),import_react39=require("react");var import_core74=require("@mantine/core"),import_react38=require("react");var import_jsx_runtime64=require("react/jsx-runtime");function ContactPointInput(props){let{path,outcome}=props,{elementsByPath,getExtendedProps}=(0,import_react38.useContext)(ElementsContext),[contactPoint,setContactPoint]=(0,import_react38.useState)(props.defaultValue),ref=(0,import_react38.useRef)(contactPoint);ref.current=contactPoint;let[systemElement,useElement,valueElement]=(0,import_react38.useMemo)(()=>["system","use","value"].map(field=>elementsByPath[path+"."+field]),[elementsByPath,path]),[systemProps,useProps,valueProps]=(0,import_react38.useMemo)(()=>["system","use","value"].map(field=>getExtendedProps(path+"."+field)),[getExtendedProps,path]);function setContactPointWrapper(newValue){newValue&&Object.keys(newValue).length===0&&(newValue=void 0),setContactPoint(newValue),props.onChange&&props.onChange(newValue)}function setSystem(system){let newValue={...ref.current,system};system||delete newValue.system,setContactPointWrapper(newValue)}function setUse(use){let newValue={...ref.current,use};use||delete newValue.use,setContactPointWrapper(newValue)}function setValue(value){let newValue={...ref.current,value};value||delete newValue.value,setContactPointWrapper(newValue)}let errorPath=props.valuePath??path;return(0,import_jsx_runtime64.jsxs)(import_core74.Group,{gap:"xs",grow:!0,wrap:"nowrap",align:"flex-start",children:[(0,import_jsx_runtime64.jsx)(import_core74.NativeSelect,{disabled:props.disabled||systemProps?.readonly,"data-testid":"system",defaultValue:contactPoint?.system,required:(systemElement?.min??0)>0,onChange:e=>setSystem(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"],error:getErrorsForInput(outcome,errorPath+".system")}),(0,import_jsx_runtime64.jsx)(import_core74.NativeSelect,{disabled:props.disabled||useProps?.readonly,"data-testid":"use",defaultValue:contactPoint?.use,required:(useElement?.min??0)>0,onChange:e=>setUse(e.currentTarget.value),data:["","home","work","temp","old","mobile"],error:getErrorsForInput(outcome,errorPath+".use")}),(0,import_jsx_runtime64.jsx)(import_core74.TextInput,{disabled:props.disabled||valueProps?.readonly,placeholder:"Value",defaultValue:contactPoint?.value,required:(valueElement?.min??0)>0,onChange:e=>setValue(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".value")})]})}var import_jsx_runtime65=require("react/jsx-runtime");function ContactDetailInput(props){let[contactDetail,setContactDetail]=(0,import_react39.useState)(props.defaultValue),ref=(0,import_react39.useRef)(contactDetail);ref.current=contactDetail;let{getExtendedProps}=(0,import_react39.useContext)(ElementsContext),[nameProps,telecomProps]=(0,import_react39.useMemo)(()=>["name","telecom"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setContactDetailWrapper(newValue){setContactDetail(newValue),props.onChange&&props.onChange(newValue)}function setName(name){let newValue={...ref.current,name};name||delete newValue.name,setContactDetailWrapper(newValue)}function setTelecom(telecom){let newValue={...ref.current,telecom:telecom&&[telecom]};telecom||delete newValue.telecom,setContactDetailWrapper(newValue)}return(0,import_jsx_runtime65.jsxs)(import_core75.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime65.jsx)(import_core75.TextInput,{disabled:props.disabled||nameProps?.readonly,"data-testid":props.name+"-name",name:props.name+"-name",placeholder:"Name",style:{width:180},defaultValue:contactDetail?.name,onChange:e=>setName(e.currentTarget.value)}),(0,import_jsx_runtime65.jsx)(ContactPointInput,{disabled:props.disabled||telecomProps?.readonly,name:props.name+"-telecom",path:props.path+".telecom",defaultValue:contactDetail?.telecom?.[0],onChange:setTelecom,outcome:props.outcome})]})}var import_core77=require("@mantine/core");var import_core76=require("@medplum/core");function convertIsoToLocal(isoString){if(!isoString)return"";let date=new Date(isoString);return(0,import_core76.isValidDate)(date)?date.toLocaleDateString("sv")+"T"+date.toLocaleTimeString("sv"):""}function convertLocalToIso(localString){if(!localString)return"";let date=new Date(localString);return(0,import_core76.isValidDate)(date)?date.toISOString():""}var import_jsx_runtime66=require("react/jsx-runtime");function DateTimeInput(props){return(0,import_jsx_runtime66.jsx)(import_core77.TextInput,{id:props.name,name:props.name,label:props.label,"data-autofocus":props.autoFocus,"data-testid":props["data-testid"]??props.name,placeholder:props.placeholder,required:props.required,disabled:props.disabled,type:getInputType(),step:1,defaultValue:convertIsoToLocal(props.defaultValue),autoFocus:props.autoFocus,error:getErrorsForInput(props.outcome,props.name),onChange:e=>{if(props.onChange){let newValue=e.currentTarget.value;props.onChange(convertLocalToIso(newValue))}}})}function getInputType(){return"datetime-local"}var import_core78=require("@medplum/core"),import_react_hooks23=require("@medplum/react-hooks"),import_react40=require("react");var import_jsx_runtime67=require("react/jsx-runtime");function ExtensionInput(props){let{propertyType}=props,medplum=(0,import_react_hooks23.useMedplum)(),profileUrl=(0,import_react40.useMemo)(()=>{if((0,import_core78.isPopulated)(propertyType.profile))return propertyType.profile[0]},[propertyType]),[loadingProfile,setLoadingProfile]=(0,import_react40.useState)(profileUrl!==void 0);return(0,import_react40.useEffect)(()=>{profileUrl&&(setLoadingProfile(!0),medplum.requestProfileSchema(profileUrl).then(()=>setLoadingProfile(!1)).catch(reason=>{setLoadingProfile(!1),console.warn(reason)}))},[medplum,profileUrl]),profileUrl&&(loadingProfile||!(0,import_core78.isProfileLoaded)(profileUrl))?(0,import_jsx_runtime67.jsx)("div",{children:"Loading..."}):(0,import_jsx_runtime67.jsx)(BackboneElementInput,{profileUrl,path:props.path,typeName:"Extension",defaultValue:props.defaultValue,onChange:props.onChange})}var import_core79=require("@mantine/core"),import_react41=require("react");var import_jsx_runtime68=require("react/jsx-runtime");function HumanNameInput(props){let{outcome,path}=props,[value,setValue]=(0,import_react41.useState)(props.defaultValue),{getExtendedProps}=(0,import_react41.useContext)(ElementsContext),[useProps,prefixProps,givenProps,familyProps,suffixProps]=(0,import_react41.useMemo)(()=>["use","prefix","given","family","suffix"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}function setUse(use){setValueWrapper({...value,use:use||void 0})}function setPrefix(prefix){setValueWrapper({...value,prefix:prefix?prefix.split(" "):void 0})}function setGiven(given){setValueWrapper({...value,given:given?given.split(" "):void 0})}function setFamily(family){setValueWrapper({...value,family:family||void 0})}function setSuffix(suffix){setValueWrapper({...value,suffix:suffix?suffix.split(" "):void 0})}let errorPath=props.valuePath??path;return(0,import_jsx_runtime68.jsxs)(import_core79.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime68.jsx)(import_core79.NativeSelect,{disabled:props.disabled||useProps?.readonly,defaultValue:value?.use,name:props.name+"-use","data-testid":"use",onChange:e=>setUse(e.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"],error:getErrorsForInput(outcome,errorPath+".use")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||prefixProps?.readonly,placeholder:"Prefix",name:props.name+"-prefix",defaultValue:value?.prefix?.join(" "),onChange:e=>setPrefix(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".prefix")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||givenProps?.readonly,placeholder:"Given",name:props.name+"-given",defaultValue:value?.given?.join(" "),onChange:e=>setGiven(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".given")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||familyProps?.readonly,name:props.name+"-family",placeholder:"Family",defaultValue:value?.family,onChange:e=>setFamily(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".family")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||suffixProps?.readonly,placeholder:"Suffix",name:props.name+"-suffix",defaultValue:value?.suffix?.join(" "),onChange:e=>setSuffix(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".suffix")})]})}var import_core80=require("@mantine/core"),import_react42=require("react");var import_jsx_runtime69=require("react/jsx-runtime");function IdentifierInput(props){let[value,setValue]=(0,import_react42.useState)(props.defaultValue),{elementsByPath,getExtendedProps}=(0,import_react42.useContext)(ElementsContext),[systemElement,valueElement]=(0,import_react42.useMemo)(()=>["system","value"].map(field=>elementsByPath[props.path+"."+field]),[elementsByPath,props.path]),[systemProps,valueProps]=(0,import_react42.useMemo)(()=>["system","value"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}let errorPath=props.valuePath??props.path;return(0,import_jsx_runtime69.jsxs)(import_core80.Group,{gap:"xs",grow:!0,wrap:"nowrap",align:"flex-start",children:[(0,import_jsx_runtime69.jsx)(import_core80.TextInput,{disabled:props.disabled||systemProps?.readonly,placeholder:"System",required:(systemElement?.min??0)>0,defaultValue:value?.system,onChange:e=>setValueWrapper({...value,system:e.currentTarget.value}),error:getErrorsForInput(props.outcome,errorPath+".system")}),(0,import_jsx_runtime69.jsx)(import_core80.TextInput,{disabled:props.disabled||valueProps?.readonly,placeholder:"Value",required:(valueElement?.min??0)>0,defaultValue:value?.value,onChange:e=>setValueWrapper({...value,value:e.currentTarget.value}),error:getErrorsForInput(props.outcome,errorPath+".value")})]})}var import_core81=require("@mantine/core");var import_react43=require("react");var import_jsx_runtime70=require("react/jsx-runtime"),data=["USD","EUR","CAD","GBP","AUD"];function MoneyInput(props){let{onChange}=props,[value,setValue]=(0,import_react43.useState)(props.defaultValue),{getExtendedProps}=(0,import_react43.useContext)(ElementsContext),[currencyProps,valueProps]=(0,import_react43.useMemo)(()=>["currency","value"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]),setValueWrapper=(0,import_react43.useCallback)(newValue=>{setValue(newValue),onChange&&onChange(newValue)},[onChange]),handleCurrencyChange=(0,import_react43.useCallback)(e=>{setValueWrapper({...value,currency:e.currentTarget.value})},[value,setValueWrapper]),handleValueChange=(0,import_react43.useCallback)(e=>{setValueWrapper({...value,value:e.currentTarget.valueAsNumber})},[value,setValueWrapper]),select=(0,import_jsx_runtime70.jsx)(import_core81.NativeSelect,{disabled:props.disabled||currencyProps?.readonly,defaultValue:value?.currency,data,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:handleCurrencyChange});return(0,import_jsx_runtime70.jsx)(import_core81.TextInput,{disabled:props.disabled||valueProps?.readonly,type:"number",name:props.name,label:props.label,placeholder:props.placeholder??"Value",defaultValue:value?.value?.toString()??"USD",leftSection:(0,import_jsx_runtime70.jsx)(IconCurrencyDollar,{size:14}),rightSection:select,rightSectionWidth:92,onChange:handleValueChange})}var import_core82=require("@mantine/core"),import_react44=require("react");var import_jsx_runtime71=require("react/jsx-runtime");function PeriodInput(props){let[value,setValue]=(0,import_react44.useState)(props.defaultValue),{getExtendedProps}=(0,import_react44.useContext)(ElementsContext),[startProps,endProps]=(0,import_react44.useMemo)(()=>["start","end"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime71.jsxs)(import_core82.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime71.jsx)(DateTimeInput,{disabled:props.disabled||startProps?.readonly,name:props.name+".start",placeholder:"Start",defaultValue:value?.start,onChange:newValue=>setValueWrapper({...value,start:newValue})}),(0,import_jsx_runtime71.jsx)(DateTimeInput,{disabled:props.disabled||endProps?.readonly,name:props.name+".end",placeholder:"End",defaultValue:value?.end,onChange:newValue=>setValueWrapper({...value,end:newValue})})]})}var import_core83=require("@mantine/core"),import_react45=require("react");var import_jsx_runtime72=require("react/jsx-runtime");function QuantityInput(props){let[value,setValue]=(0,import_react45.useState)(props.defaultValue),{getExtendedProps}=(0,import_react45.useContext)(ElementsContext),[comparatorProps,valueProps,unitProps]=(0,import_react45.useMemo)(()=>["comparator","value","unit"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime72.jsxs)(import_core83.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime72.jsx)(import_core83.NativeSelect,{disabled:props.disabled||comparatorProps?.readonly,style:{width:80},"data-testid":props.name+"-comparator",defaultValue:value?.comparator,data:["","<","<=",">=",">"],onChange:e=>setValueWrapper({...value,comparator:e.currentTarget.value})}),(0,import_jsx_runtime72.jsx)(import_core83.TextInput,{disabled:props.disabled||valueProps?.readonly,id:props.name,name:props.name,required:props.required,"data-autofocus":props.autoFocus,"data-testid":props.name+"-value",type:"number",placeholder:"Value",defaultValue:value?.value,autoFocus:props.autoFocus,step:"any",onWheel:e=>{props.disableWheel&&e.currentTarget.blur()},onChange:e=>{setValueWrapper({...value,value:tryParseNumber(e.currentTarget.value)})}}),(0,import_jsx_runtime72.jsx)(import_core83.TextInput,{disabled:props.disabled||unitProps?.readonly,placeholder:"Unit","data-testid":props.name+"-unit",defaultValue:value?.unit,onChange:e=>setValueWrapper({...value,unit:e.currentTarget.value})})]})}function tryParseNumber(str){if(str)return Number.parseFloat(str)}var import_core84=require("@mantine/core"),import_react46=require("react");var import_jsx_runtime73=require("react/jsx-runtime");function RangeInput(props){let[value,setValue]=(0,import_react46.useState)(props.defaultValue),{getExtendedProps}=(0,import_react46.useContext)(ElementsContext),[lowProps,highProps]=(0,import_react46.useMemo)(()=>["low","high"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime73.jsxs)(import_core84.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime73.jsx)(QuantityInput,{path:props.path+".low",disabled:props.disabled||lowProps?.readonly,name:props.name+"-low",defaultValue:value?.low,onChange:v=>setValueWrapper({...value,low:v})}),(0,import_jsx_runtime73.jsx)(QuantityInput,{path:props.path+".high",disabled:props.disabled||highProps?.readonly,name:props.name+"-high",defaultValue:value?.high,onChange:v=>setValueWrapper({...value,high:v})})]})}var import_core85=require("@mantine/core"),import_react47=require("react");var import_jsx_runtime74=require("react/jsx-runtime");function RatioInput(props){let[value,setValue]=(0,import_react47.useState)(props.defaultValue),{getExtendedProps}=(0,import_react47.useContext)(ElementsContext),[numeratorProps,denominatorProps]=(0,import_react47.useMemo)(()=>["numerator","denominator"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime74.jsxs)(import_core85.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime74.jsx)(QuantityInput,{path:props.path+".numerator",disabled:props.disabled||numeratorProps?.readonly,name:props.name+"-numerator",defaultValue:value?.numerator,onChange:v=>setValueWrapper({...value,numerator:v})}),(0,import_jsx_runtime74.jsx)(QuantityInput,{path:props.path+".denominator",disabled:props.disabled||denominatorProps?.readonly,name:props.name+"-denominator",defaultValue:value?.denominator,onChange:v=>setValueWrapper({...value,denominator:v})})]})}var import_core88=require("@mantine/core"),import_core89=require("@medplum/core"),import_react_hooks25=require("@medplum/react-hooks"),import_react49=require("react");var import_core86=require("@mantine/core"),import_core87=require("@medplum/core"),import_react_hooks24=require("@medplum/react-hooks"),import_react48=require("react");var import_jsx_runtime75=require("react/jsx-runtime"),SEARCH_CODES={Device:"device-name",Observation:"code",Subscription:"criteria",User:"email:contains"},NAME_RESOURCE_TYPES=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","CareTeam","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","Group","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","ResearchStudy","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function toOption3(resource){return{value:(0,import_core87.getReferenceString)(resource)??"",label:(0,import_core87.getDisplayString)(resource),resource}}function ResourceInput(props){let medplum=(0,import_react_hooks24.useMedplum)(),{resourceType,searchCriteria}=props,[outcome,setOutcome]=(0,import_react48.useState)(),defaultValue2=(0,import_react_hooks24.useResource)(props.defaultValue,setOutcome),ItemComponent3=props.itemComponent??DefaultItemComponent2,onChange=props.onChange,loadValues=(0,import_react48.useCallback)(async(input,signal)=>{let searchCode=getSearchParamForResourceType(resourceType),searchParams=new URLSearchParams({[searchCode]:input??"",_count:"10",...searchCriteria});return await medplum.searchResources(resourceType,searchParams,{signal})},[medplum,resourceType,searchCriteria]),handleChange=(0,import_react48.useCallback)(newResources=>{onChange&&onChange(newResources[0])},[onChange]);return(0,import_core87.isPopulated)(props.defaultValue)&&!outcome&&!defaultValue2?null:(0,import_jsx_runtime75.jsx)(AsyncAutocomplete,{disabled:props.disabled,name:props.name,label:props.label,error:props.error,required:props.required,itemComponent:ItemComponent3,defaultValue:defaultValue2,placeholder:props.placeholder,maxValues:1,toOption:toOption3,loadOptions:loadValues,onChange:handleChange,clearable:!0})}var DefaultItemComponent2=(0,import_react48.forwardRef)(({label,resource,active:_active,...others},ref)=>(0,import_jsx_runtime75.jsx)("div",{ref,...others,children:(0,import_jsx_runtime75.jsxs)(import_core86.Group,{wrap:"nowrap",children:[(0,import_jsx_runtime75.jsx)(ResourceAvatar,{value:resource}),(0,import_jsx_runtime75.jsxs)("div",{children:[(0,import_jsx_runtime75.jsx)(import_core86.Text,{children:label}),(0,import_jsx_runtime75.jsx)(import_core86.Text,{size:"xs",c:"dimmed",children:resource.birthDate||resource.id})]})]})}));function getSearchParamForResourceType(resourceType){return SEARCH_CODES[resourceType]??(NAME_RESOURCE_TYPES.includes(resourceType)?"name":"_id")}var import_jsx_runtime76=require("react/jsx-runtime");function ReferenceInput(props){let{onChange}=props,medplum=(0,import_react_hooks25.useMedplum)(),[value,setValue]=(0,import_react49.useState)(props.defaultValue),[targetTypes,setTargetTypes]=(0,import_react49.useState)(()=>createTargetTypes(props.targetTypes)),[targetType,setTargetType]=(0,import_react49.useState)(()=>getInitialTargetType(props.defaultValue,targetTypes)),promiseCache=(0,import_react49.useRef)(new import_core89.LRUCache),searchCriteria=(0,import_react49.useMemo)(()=>targetType?.type==="profile"?{...props.searchCriteria,_profile:targetType.value}:props.searchCriteria,[props.searchCriteria,targetType]);(0,import_react49.useEffect)(()=>{let anyToFetch=!1,newTargetTypePromises=targetTypes?.map(tt=>{if(!shouldFetchResourceType(tt))return Promise.resolve(tt);anyToFetch=!0;let cacheKey=tt.value,cached=promiseCache.current.get(cacheKey);if(cached)return cached;let promise=fetchResourceTypeOfProfile(medplum,tt.value).then(profile=>{let newTargetType={...tt};return profile?(0,import_core89.isPopulated)(profile.type)?(newTargetType.resourceType=profile.type,newTargetType.name=profile.name,newTargetType.title=profile.title):(console.error(`StructureDefinition.type missing for ${tt.value}`),newTargetType.error="StructureDefinition.type missing"):(console.error(`StructureDefinition not found for ${tt.value}`),newTargetType.error="StructureDefinition not found"),newTargetType}).catch(reason=>(console.error(reason),{...tt,error:reason})),readablePromise=new import_core89.ReadablePromise(promise);return promiseCache.current.set(cacheKey,readablePromise),readablePromise});!newTargetTypePromises||!anyToFetch||Promise.all(newTargetTypePromises).then(newTargetTypes=>{if(setTargetTypes(newTargetTypes),!targetType)return;let index=newTargetTypes.findIndex(tt=>tt.value===targetType.value||tt.resourceType===targetType.resourceType);if(index===-1){console.debug(`defaultValue had unexpected resourceType: ${targetType.resourceType}`);return}setTargetType(newTargetTypes[index])}).catch(console.error)},[medplum,targetType,targetTypes]);let setValueHelper=(0,import_react49.useCallback)(item=>{let newValue=item?(0,import_core89.createReference)(item):void 0;setValue(newValue),onChange&&onChange(newValue)},[onChange]),typeSelectOptions=(0,import_react49.useMemo)(()=>targetTypes?targetTypes.map(tt=>({value:tt.value,label:tt.type==="profile"?tt.title??tt.name??tt.resourceType??tt.value:tt.value})):[],[targetTypes]);return(0,import_jsx_runtime76.jsxs)(import_jsx_runtime76.Fragment,{children:[props.name&&(0,import_jsx_runtime76.jsx)("input",{type:"hidden",name:props.name,value:value?.reference??""}),(0,import_jsx_runtime76.jsxs)(import_core88.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[targetTypes&&targetTypes.length>1&&(0,import_jsx_runtime76.jsx)(import_core88.NativeSelect,{name:props.name+"-resourceType",disabled:props.disabled,"data-autofocus":props.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:targetType?.resourceType,autoFocus:props.autoFocus,onChange:e=>{let newValue=e.currentTarget.value,newTargetType=targetTypes.find(tt=>tt.value===newValue);setTargetType(newTargetType)},data:typeSelectOptions}),!targetTypes&&(0,import_jsx_runtime76.jsx)(ResourceTypeInput,{disabled:props.disabled,autoFocus:props.autoFocus,testId:"reference-input-resource-type-input",defaultValue:targetType?.resourceType,onChange:newResourceType=>{setTargetType(newResourceType?{type:"resourceType",value:newResourceType,resourceType:newResourceType}:void 0)},name:props.name+"-resourceType",placeholder:"Resource Type"}),(0,import_jsx_runtime76.jsx)(ResourceInput,{resourceType:targetType?.resourceType,name:props.name+"-id",required:props.required,placeholder:props.placeholder,defaultValue:value,searchCriteria,onChange:setValueHelper,disabled:props.disabled})]})]})}function createTargetTypes(resourceTypesAndProfileUrls){if(!resourceTypesAndProfileUrls||resourceTypesAndProfileUrls.length===0||resourceTypesAndProfileUrls.length===1&&resourceTypesAndProfileUrls[0]==="Resource")return;let results=[];for(let value of resourceTypesAndProfileUrls)value.includes("/")?results.push({type:"profile",value}):results.push({type:"resourceType",value,resourceType:value});return results}function getInitialTargetType(defaultValue2,targetTypes){let defaultValueResourceType=defaultValue2?.reference?.split("/")[0];if(defaultValueResourceType){let targetType=targetTypes?.find(tt=>tt.resourceType===defaultValueResourceType);return targetType||{type:"resourceType",value:defaultValueResourceType,resourceType:defaultValueResourceType}}if(targetTypes&&targetTypes.length>0)return targetTypes[0]}async function fetchResourceTypeOfProfile(medplum,profileUrl){let profile=(0,import_core89.tryGetProfile)(profileUrl);if(profile)return{type:profile.type,name:profile.name,title:profile.title};let query=`{
65
+ `)}function getIssuesForExpression(outcome,expression){return outcome?.issue?.filter(issue=>isExpressionMatch(issue.expression?.[0],expression))}var ARRAY_INDEX_REGEX=/\[\d+\]/;function isExpressionMatch(expr1,expr2){let isExpr1Indexed=typeof expr1=="string"&&ARRAY_INDEX_REGEX.test(expr1),isExpr2Indexed=typeof expr2=="string"&&ARRAY_INDEX_REGEX.test(expr2);if(isExpr1Indexed!==isExpr2Indexed&&(expr1=expr1?.replace(ARRAY_INDEX_REGEX,""),expr2=expr2?.replace(ARRAY_INDEX_REGEX,"")),expr1===expr2)return!0;if(!expr1||!expr2)return!1;let dot1=expr1.indexOf(".");if(dot1>=0&&expr1.substring(dot1+1)===expr2)return!0;let dot2=expr2.indexOf(".");return dot2>=0&&expr2.substring(dot2+1)===expr1}var import_jsx_runtime33=require("react/jsx-runtime");function NewProjectForm(props){let medplum=(0,import_react_hooks13.useMedplum)(),[outcome,setOutcome]=(0,import_react22.useState)();return(0,import_jsx_runtime33.jsxs)(Form,{onSubmit:async formData=>{try{props.handleAuthResponse(await medplum.startNewProject({login:props.login,projectName:formData.projectName}))}catch(err){setOutcome((0,import_core42.normalizeOperationOutcome)(err))}},children:[(0,import_jsx_runtime33.jsxs)(import_core41.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime33.jsx)(Logo,{size:32}),(0,import_jsx_runtime33.jsx)(import_core41.Title,{children:"Create project"})]}),(0,import_jsx_runtime33.jsxs)(import_core41.Stack,{gap:"xl",children:[(0,import_jsx_runtime33.jsx)(import_core41.TextInput,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"projectName")}),(0,import_jsx_runtime33.jsxs)(import_core41.Text,{c:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,import_jsx_runtime33.jsx)(import_core41.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime33.jsx)(import_core41.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]})]}),(0,import_jsx_runtime33.jsx)(import_core41.Group,{justify:"flex-end",mt:"xl",wrap:"nowrap",children:(0,import_jsx_runtime33.jsx)(SubmitButton,{children:"Create project"})})]})}var import_core46=require("@mantine/core"),import_core47=require("@medplum/core"),import_react_hooks15=require("@medplum/react-hooks"),import_react24=require("react");var import_react_hooks14=require("@medplum/react-hooks"),import_react23=require("react");function createScriptTag(src,onload){let head=document.getElementsByTagName("head")[0],script=document.createElement("script");script.async=!0,script.src=src,script.onload=onload??null,head.appendChild(script)}var import_jsx_runtime34=require("react/jsx-runtime");function GoogleButton(props){let medplum=(0,import_react_hooks14.useMedplum)(),{googleClientId,handleGoogleCredential}=props,parentRef=(0,import_react23.useRef)(null),[scriptLoaded,setScriptLoaded]=(0,import_react23.useState)(typeof google<"u"),[initialized,setInitialized]=(0,import_react23.useState)(!1),[buttonRendered,setButtonRendered]=(0,import_react23.useState)(!1);return(0,import_react23.useEffect)(()=>{if(typeof google>"u"){createScriptTag("https://accounts.google.com/gsi/client",()=>setScriptLoaded(!0));return}initialized||(google.accounts.id.initialize({client_id:googleClientId,callback:handleGoogleCredential}),setInitialized(!0)),parentRef.current&&!buttonRendered&&(google.accounts.id.renderButton(parentRef.current,{}),setButtonRendered(!0))},[medplum,googleClientId,initialized,scriptLoaded,parentRef,buttonRendered,handleGoogleCredential]),googleClientId?(0,import_jsx_runtime34.jsx)("div",{ref:parentRef}):null}var import_core43=require("@medplum/core");function getGoogleClientId(clientId){if(clientId)return clientId;let origin=import_core43.locationUtils.getOrigin();if(origin&&("undefined"?.split(",")??[]).includes(origin))return"__GOOGLE_CLIENT_ID__"}var import_core44=require("@mantine/core"),import_core45=require("@medplum/core");var import_jsx_runtime35=require("react/jsx-runtime");function OperationOutcomeAlert(props){let issues=props.outcome?.issue||props.issues;return!issues||issues.length===0?null:(0,import_jsx_runtime35.jsx)(import_core44.Alert,{icon:(0,import_jsx_runtime35.jsx)(IconAlertCircle,{size:16}),color:"red",children:issues.map(issue=>(0,import_jsx_runtime35.jsx)("div",{"data-testid":"text-field-error",children:(0,import_core45.operationOutcomeIssueToString)(issue)},issue.details?.text))})}function initRecaptcha(siteKey){typeof grecaptcha>"u"&&createScriptTag("https://www.google.com/recaptcha/api.js?render="+siteKey)}function getRecaptcha(siteKey){return new Promise((resolve,reject)=>{grecaptcha.ready(async()=>{try{resolve(await grecaptcha.execute(siteKey,{action:"submit"}))}catch(err){reject(err)}})})}var import_jsx_runtime36=require("react/jsx-runtime");function NewUserForm(props){let googleClientId=getGoogleClientId(props.googleClientId),recaptchaSiteKey=props.recaptchaSiteKey,medplum=(0,import_react_hooks15.useMedplum)(),[outcome,setOutcome]=(0,import_react24.useState)(),issues=getIssuesForExpression(outcome,void 0);return(0,import_react24.useEffect)(()=>{recaptchaSiteKey&&initRecaptcha(recaptchaSiteKey)},[recaptchaSiteKey]),(0,import_jsx_runtime36.jsxs)(Form,{onSubmit:async formData=>{setOutcome(void 0);try{let recaptchaToken="";recaptchaSiteKey&&(recaptchaToken=await getRecaptcha(recaptchaSiteKey)),props.handleAuthResponse(await medplum.startNewUser({projectId:props.projectId,clientId:props.clientId,firstName:formData.firstName,lastName:formData.lastName,email:formData.email,password:formData.password,remember:formData.remember==="true",recaptchaSiteKey,recaptchaToken}))}catch(err){setOutcome((0,import_core47.normalizeOperationOutcome)(err))}},children:[(0,import_jsx_runtime36.jsx)(import_core46.Center,{style:{flexDirection:"column"},children:props.children}),(0,import_jsx_runtime36.jsx)(OperationOutcomeAlert,{issues}),googleClientId&&(0,import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment,{children:[(0,import_jsx_runtime36.jsx)(import_core46.Group,{justify:"center",p:"xl",style:{height:70},children:(0,import_jsx_runtime36.jsx)(GoogleButton,{googleClientId,handleGoogleCredential:async response=>{try{props.handleAuthResponse(await medplum.startGoogleLogin({googleClientId:response.clientId,googleCredential:response.credential,projectId:props.projectId,createUser:!0}))}catch(err){setOutcome((0,import_core47.normalizeOperationOutcome)(err))}}})}),(0,import_jsx_runtime36.jsx)(import_core46.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),(0,import_jsx_runtime36.jsxs)(import_core46.Stack,{gap:"xl",children:[(0,import_jsx_runtime36.jsx)(import_core46.TextInput,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"firstName")}),(0,import_jsx_runtime36.jsx)(import_core46.TextInput,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:getErrorsForInput(outcome,"lastName")}),(0,import_jsx_runtime36.jsx)(import_core46.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:getErrorsForInput(outcome,"email")}),(0,import_jsx_runtime36.jsx)(import_core46.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,error:getErrorsForInput(outcome,"password")}),(0,import_jsx_runtime36.jsxs)(import_core46.Text,{c:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]}),(0,import_jsx_runtime36.jsxs)(import_core46.Text,{c:"dimmed",size:"xs",children:["This site is protected by reCAPTCHA and the Google"," ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://policies.google.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime36.jsx)(import_core46.Anchor,{href:"https://policies.google.com/terms",children:"Terms\xA0of\xA0Service"})," apply."]})]}),(0,import_jsx_runtime36.jsxs)(import_core46.Group,{justify:"space-between",mt:"xl",wrap:"nowrap",children:[(0,import_jsx_runtime36.jsx)(import_core46.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),(0,import_jsx_runtime36.jsx)(SubmitButton,{children:"Create account"})]})]})}var import_jsx_runtime37=require("react/jsx-runtime");function RegisterForm(props){let{type,projectId,clientId,googleClientId,recaptchaSiteKey,onSuccess}=props,medplum=(0,import_react_hooks16.useMedplum)(),[login,setLogin]=(0,import_react25.useState)(),[outcome,setOutcome]=(0,import_react25.useState)();(0,import_react25.useEffect)(()=>{type==="patient"&&login&&medplum.startNewPatient({login,projectId}).then(response=>medplum.processCode(response.code)).then(()=>onSuccess()).catch(err=>setOutcome((0,import_core48.normalizeOperationOutcome)(err)))},[medplum,type,projectId,login,onSuccess]);function handleAuthResponse(response){response.code?medplum.processCode(response.code).then(()=>onSuccess()).catch(console.log):response.login&&setLogin(response.login)}return(0,import_jsx_runtime37.jsxs)(Document,{width:450,children:[outcome&&(0,import_jsx_runtime37.jsx)("pre",{children:JSON.stringify(outcome,null,2)}),!login&&(0,import_jsx_runtime37.jsx)(NewUserForm,{projectId,clientId,googleClientId,recaptchaSiteKey,handleAuthResponse,children:props.children}),login&&type==="project"&&(0,import_jsx_runtime37.jsx)(NewProjectForm,{login,handleAuthResponse})]})}var import_notifications4=require("@mantine/notifications"),import_core54=require("@medplum/core"),import_react_hooks20=require("@medplum/react-hooks"),import_react28=require("react");var import_core49=require("@mantine/core"),import_core50=require("@medplum/core"),import_react_hooks17=require("@medplum/react-hooks"),import_react26=require("react");var AuthenticationForm_default={userNotice:"AuthenticationForm_userNotice"};var import_jsx_runtime38=require("react/jsx-runtime");function AuthenticationForm(props){let[email,setEmail]=(0,import_react26.useState)();return email?(0,import_jsx_runtime38.jsx)(PasswordForm,{email,resetEmail:()=>setEmail(void 0),...props}):(0,import_jsx_runtime38.jsx)(EmailForm,{setEmail,...props})}function EmailForm(props){let{setEmail,onRegister,handleAuthResponse,children,disableEmailAuth,...baseLoginRequest}=props,medplum=(0,import_react_hooks17.useMedplum)(),googleClientId=!props.disableGoogleAuth&&getGoogleClientId(props.googleClientId),[outcome,setOutcome]=(0,import_react26.useState)(),issues=getIssuesForExpression(outcome,void 0),isExternalAuth=(0,import_react26.useCallback)(async authMethod=>{if(!authMethod.authorizeUrl)return!1;let state=JSON.stringify({...await medplum.ensureCodeChallenge(baseLoginRequest),domain:authMethod.domain}),url=new URL(authMethod.authorizeUrl);return url.searchParams.set("state",state),import_core50.locationUtils.assign(url.toString()),!0},[medplum,baseLoginRequest]),handleSubmit=(0,import_react26.useCallback)(async formData=>{let authMethod=await medplum.post("auth/method",{email:formData.email});await isExternalAuth(authMethod)||setEmail(formData.email)},[medplum,isExternalAuth,setEmail]),handleGoogleCredential=(0,import_react26.useCallback)(async response=>{try{let authResponse=await medplum.startGoogleLogin({...baseLoginRequest,googleCredential:response.credential});await isExternalAuth(authResponse)||handleAuthResponse(authResponse)}catch(err){setOutcome((0,import_core50.normalizeOperationOutcome)(err))}},[medplum,baseLoginRequest,isExternalAuth,handleAuthResponse]);return(0,import_jsx_runtime38.jsxs)(Form,{onSubmit:handleSubmit,children:[(0,import_jsx_runtime38.jsx)(import_core49.Center,{style:{flexDirection:"column"},children}),(0,import_jsx_runtime38.jsx)(OperationOutcomeAlert,{issues}),googleClientId&&(0,import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment,{children:[(0,import_jsx_runtime38.jsx)(import_core49.Group,{justify:"center",p:"xl",style:{height:70},children:(0,import_jsx_runtime38.jsx)(GoogleButton,{googleClientId,handleGoogleCredential})}),!disableEmailAuth&&(0,import_jsx_runtime38.jsx)(import_core49.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),!disableEmailAuth&&(0,import_jsx_runtime38.jsx)(import_core49.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"email"),"data-testid":"auth.email"}),(0,import_jsx_runtime38.jsxs)(import_core49.Group,{justify:"space-between",mt:"xl",gap:0,wrap:"nowrap",children:[(0,import_jsx_runtime38.jsx)("div",{children:onRegister&&(0,import_jsx_runtime38.jsx)(import_core49.Anchor,{component:"button",type:"button",c:"dimmed",onClick:onRegister,size:"xs","data-dashlane-ignore":"true","data-lp-ignore":"true","data-no-autofill":"true","data-form-type":"navigation",children:"Register"})}),!disableEmailAuth&&(0,import_jsx_runtime38.jsx)(SubmitButton,{children:"Next"})]})]})}function PasswordForm(props){let{onForgotPassword,handleAuthResponse,children,...baseLoginRequest}=props,medplum=(0,import_react_hooks17.useMedplum)(),[outcome,setOutcome]=(0,import_react26.useState)(),issues=getIssuesForExpression(outcome,void 0),handleSubmit=(0,import_react26.useCallback)(formData=>{medplum.startLogin({...baseLoginRequest,password:formData.password,remember:formData.remember==="on"}).then(handleAuthResponse).catch(err=>setOutcome((0,import_core50.normalizeOperationOutcome)(err)))},[medplum,baseLoginRequest,handleAuthResponse]);return(0,import_jsx_runtime38.jsxs)(Form,{onSubmit:handleSubmit,children:[(0,import_jsx_runtime38.jsx)(import_core49.Center,{style:{flexDirection:"column"},children}),(0,import_jsx_runtime38.jsx)(OperationOutcomeAlert,{issues}),(0,import_jsx_runtime38.jsxs)(import_core49.Stack,{gap:"sm",children:[(0,import_jsx_runtime38.jsx)(import_core49.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"password"),"data-testid":"auth.password"}),(0,import_jsx_runtime38.jsxs)(import_core49.Flex,{className:AuthenticationForm_default.userNotice,justify:"space-between",align:"center",px:"xs",bdrs:"sm",children:[(0,import_jsx_runtime38.jsxs)(import_core49.Text,{size:"xs",children:["Logging in as ",(0,import_jsx_runtime38.jsx)("em",{children:props.email})]}),(0,import_jsx_runtime38.jsx)(import_core49.Button,{variant:"transparent",onClick:props.resetEmail,size:"compact-xs",children:"Change"})]})]}),(0,import_jsx_runtime38.jsxs)(import_core49.Group,{justify:"space-between",mt:"xl",gap:0,wrap:"nowrap",children:[onForgotPassword&&(0,import_jsx_runtime38.jsx)(import_core49.Anchor,{component:"button",type:"button",c:"dimmed",onClick:onForgotPassword,size:"xs",children:"Forgot password"}),(0,import_jsx_runtime38.jsx)(import_core49.Checkbox,{id:"remember",name:"remember",label:"Remember me",size:"xs",style:{lineHeight:1}}),(0,import_jsx_runtime38.jsx)(SubmitButton,{children:"Sign in"})]})]})}var import_core51=require("@mantine/core"),import_core52=require("@medplum/core"),import_react_hooks18=require("@medplum/react-hooks"),import_react27=require("react");var import_jsx_runtime39=require("react/jsx-runtime");function ChooseProfileForm(props){let medplum=(0,import_react_hooks18.useMedplum)(),combobox=(0,import_core51.useCombobox)(),[search,setSearch]=(0,import_react27.useState)(""),[outcome,setOutcome]=(0,import_react27.useState)();function filterDisplay(display){return!!display?.toLowerCase()?.includes(search.toLowerCase())}function filterMembership(membership){return filterDisplay(membership.profile?.display)||filterDisplay(membership.project?.display)}function handleValueSelect(membershipId){medplum.post("auth/profile",{login:props.login,profile:membershipId}).then(props.handleAuthResponse).catch(err=>setOutcome((0,import_core52.normalizeOperationOutcome)(err)))}let options=props.memberships.filter(filterMembership).slice(0,10).map(item=>(0,import_jsx_runtime39.jsx)(import_core51.Combobox.Option,{value:item.id,children:(0,import_jsx_runtime39.jsx)(SelectOption,{...item})},item.id));return(0,import_jsx_runtime39.jsxs)(import_core51.Stack,{children:[(0,import_jsx_runtime39.jsxs)(import_core51.Flex,{gap:"md",mb:"md",justify:"center",align:"center",direction:"column",wrap:"nowrap",children:[(0,import_jsx_runtime39.jsx)(Logo,{size:32}),(0,import_jsx_runtime39.jsx)(import_core51.Title,{order:3,children:"Choose profile"})]}),(0,import_jsx_runtime39.jsx)(OperationOutcomeAlert,{outcome}),(0,import_jsx_runtime39.jsxs)(import_core51.Combobox,{store:combobox,onOptionSubmit:handleValueSelect,children:[(0,import_jsx_runtime39.jsx)(import_core51.Combobox.EventsTarget,{children:(0,import_jsx_runtime39.jsx)(import_core51.TextInput,{placeholder:"Search",value:search,onChange:event=>{setSearch(event.currentTarget.value),combobox.updateSelectedOptionIndex()}})}),(0,import_jsx_runtime39.jsx)("div",{children:(0,import_jsx_runtime39.jsx)(import_core51.Combobox.Options,{children:options.length>0?options:(0,import_jsx_runtime39.jsx)(import_core51.Combobox.Empty,{children:"Nothing found..."})})})]})]})}function getMembershipLabel(membership){return membership.identifier?.find(i=>i.system==="https://medplum.com/identifier/label")?.value}function SelectOption(membership){let label=getMembershipLabel(membership);return(0,import_jsx_runtime39.jsxs)(import_core51.Group,{children:[(0,import_jsx_runtime39.jsx)(import_core51.Avatar,{radius:"xl"}),(0,import_jsx_runtime39.jsxs)("div",{children:[(0,import_jsx_runtime39.jsx)(import_core51.Text,{fz:"sm",fw:500,children:membership.profile?.display}),(0,import_jsx_runtime39.jsxs)(import_core51.Text,{fz:"xs",opacity:.6,children:[membership.project?.display," ",label?` - ${label}`:""]})]})]})}var import_core53=require("@mantine/core"),import_react_hooks19=require("@medplum/react-hooks"),import_jsx_runtime40=require("react/jsx-runtime");var import_jsx_runtime41=require("react/jsx-runtime"),openConditionScope=/^patient\/Condition\.(?:\*|c?r?u?d?s?)$/,encounterDiagnosis="?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis",problemListItem="?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item",healthConcern="?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern",openObservationScope=/^patient\/Observation\.(?:\*|c?r?u?d?s?)$/,clinicalTest="?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-observation-category|clinical-test",laboratory="?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory",socialHistory="?category=http://terminology.hl7.org/CodeSystem/observation-category|social-history",sdoh="?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdoh",survey="?category=http://terminology.hl7.org/CodeSystem/observation-category|survey",vitalSigns="?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs";function ChooseScopeForm(props){let medplum=(0,import_react_hooks19.useMedplum)();return(0,import_jsx_runtime41.jsx)(Form,{onSubmit:formData=>{medplum.post("auth/scope",{login:props.login,scope:Object.keys(formData).join(" ")}).then(props.handleAuthResponse).catch(console.log)},children:(0,import_jsx_runtime41.jsxs)(import_core53.Stack,{children:[(0,import_jsx_runtime41.jsxs)(import_core53.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime41.jsx)(Logo,{size:32}),(0,import_jsx_runtime41.jsx)(import_core53.Title,{children:"Choose scope"})]}),(0,import_jsx_runtime41.jsx)(import_core53.Stack,{children:(props.scope??"openid").split(" ").map(scopeName=>{let additionalScopes;return openConditionScope.test(scopeName)?additionalScopes=[scopeName+encounterDiagnosis,scopeName+problemListItem,scopeName+healthConcern]:openObservationScope.test(scopeName)&&(additionalScopes=[scopeName+clinicalTest,scopeName+laboratory,scopeName+socialHistory,scopeName+sdoh,scopeName+survey,scopeName+vitalSigns]),(0,import_jsx_runtime41.jsxs)(import_jsx_runtime40.Fragment,{children:[(0,import_jsx_runtime41.jsx)(import_core53.Checkbox,{id:scopeName,name:scopeName,label:scopeName,defaultChecked:!0},scopeName),additionalScopes?.map(scope=>(0,import_jsx_runtime41.jsx)(import_core53.Checkbox,{id:scope,name:scope,label:scope},scope))]},scopeName+"_group")})}),(0,import_jsx_runtime41.jsx)(import_core53.Group,{justify:"flex-end",mt:"xl",children:(0,import_jsx_runtime41.jsx)(SubmitButton,{children:"Set scope"})})]})})}var import_jsx_runtime42=require("react/jsx-runtime");function SignInForm(props){let{login:loginCode,chooseScopes,onSuccess,onForgotPassword,onRegister,onCode,...baseLoginRequest}=props,medplum=(0,import_react_hooks20.useMedplum)(),[login,setLogin]=(0,import_react28.useState)(),loginRequested=(0,import_react28.useRef)(!1),[mfaEnrollRequired,setMfaEnrollRequired]=(0,import_react28.useState)(!1),[enrollQrCode,setEnrollQrCode]=(0,import_react28.useState)(),[mfaRequired,setMfaRequired]=(0,import_react28.useState)(!1),[memberships,setMemberships]=(0,import_react28.useState)(),handleCode=(0,import_react28.useCallback)(code=>{onCode?onCode(code):medplum.processCode(code).then(()=>{onSuccess&&onSuccess()}).catch(err=>(0,import_notifications4.showNotification)({color:"red",message:(0,import_core54.normalizeErrorString)(err)}))},[medplum,onCode,onSuccess]),handleAuthResponse=(0,import_react28.useCallback)(response=>{setMfaEnrollRequired(!!response.mfaEnrollRequired),setEnrollQrCode(response.enrollQrCode),setMfaRequired(!!response.mfaRequired),response.login&&setLogin(response.login),response.memberships&&setMemberships(response.memberships),response.code&&(chooseScopes?setMemberships(void 0):handleCode(response.code))},[chooseScopes,handleCode]),handleScopeResponse=(0,import_react28.useCallback)(response=>{handleCode(response.code)},[handleCode]);return(0,import_react28.useEffect)(()=>{loginCode&&!loginRequested.current&&!login&&(loginRequested.current=!0,medplum.get("auth/login/"+loginCode).then(handleAuthResponse).catch(err=>(0,import_notifications4.showNotification)({color:"red",message:(0,import_core54.normalizeErrorString)(err)})))},[medplum,loginCode,loginRequested,login,handleAuthResponse]),(0,import_jsx_runtime42.jsx)(Document,{width:450,px:"sm",py:"md",children:login?mfaEnrollRequired&&enrollQrCode?(0,import_jsx_runtime42.jsx)(MfaForm,{title:"Enroll in MFA",buttonText:"Enroll",qrCodeUrl:enrollQrCode,onSubmit:async fields=>{let res=await medplum.post("auth/mfa/login-enroll",{login,token:fields.token});handleAuthResponse(res)}}):mfaRequired?(0,import_jsx_runtime42.jsx)(MfaForm,{title:"Enter MFA code",buttonText:"Submit code",onSubmit:async fields=>{let res=await medplum.post("auth/mfa/verify",{login,token:fields.token});handleAuthResponse(res)}}):memberships?(0,import_jsx_runtime42.jsx)(ChooseProfileForm,{login,memberships,handleAuthResponse}):props.projectId==="new"?(0,import_jsx_runtime42.jsx)(NewProjectForm,{login,handleAuthResponse}):props.chooseScopes?(0,import_jsx_runtime42.jsx)(ChooseScopeForm,{login,scope:props.scope,handleAuthResponse:handleScopeResponse}):(0,import_jsx_runtime42.jsx)("div",{children:"Success"}):(0,import_jsx_runtime42.jsx)(AuthenticationForm,{onForgotPassword,onRegister,handleAuthResponse,disableGoogleAuth:props.disableGoogleAuth,disableEmailAuth:props.disableEmailAuth,...baseLoginRequest,children:props.children})})}var import_core69=require("@medplum/core"),import_react33=require("react");var import_core67=require("@mantine/core"),import_core68=require("@medplum/core");var import_react32=require("react");var import_core55=require("@medplum/core"),import_jsx_runtime43=require("react/jsx-runtime");function CodeableConceptDisplay(props){return(0,import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment,{children:(0,import_core55.formatCodeableConcept)(props.value)})}var import_core56=require("@medplum/core"),import_jsx_runtime44=require("react/jsx-runtime");function CodingDisplay(props){return(0,import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment,{children:(0,import_core56.formatCoding)(props.value)})}var import_jsx_runtime45=require("react/jsx-runtime");function ContactPointDisplay(props){let contactPoint=props.value;if(!contactPoint)return null;let builder=[];return contactPoint.value&&builder.push(contactPoint.value),(contactPoint.use||contactPoint.system)&&(builder.push(" ["),contactPoint.use&&builder.push(contactPoint.use),contactPoint.use&&contactPoint.system&&builder.push(" "),contactPoint.system&&builder.push(contactPoint.system),builder.push("]")),(0,import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment,{children:builder.join("").trim()})}var import_jsx_runtime46=require("react/jsx-runtime");function ContactDetailDisplay(props){let contactDetail=props.value;return contactDetail?(0,import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment,{children:[contactDetail.name,contactDetail.name&&": ",contactDetail.telecom?.map(telecom=>(0,import_jsx_runtime46.jsx)(ContactPointDisplay,{value:telecom},`telecom-${contactDetail.name}-${telecom.value}`))]}):null}var import_core58=require("@medplum/core"),import_react_hooks21=require("@medplum/react-hooks"),import_react29=require("react");var import_core57=require("@medplum/core");function getValueAndType(context,path,profileUrl){let typedResult=(0,import_core57.getTypedPropertyValue)(context,path,{profileUrl});return typedResult?Array.isArray(typedResult)?[typedResult.map(e=>e.value),typedResult[0].type]:[typedResult.value,typedResult.type]:[void 0,"undefined"]}function getValueAndTypeFromElement(typedValue,path,element){let typedResult=(0,import_core57.getTypedPropertyValueWithSchema)(typedValue,path,element);return typedResult?Array.isArray(typedResult)?[typedResult.map(e=>e.value),typedResult[0].type]:[typedResult.value,typedResult.type]:[void 0,"undefined"]}var import_jsx_runtime47=require("react/jsx-runtime");function ExtensionDisplay(props){let{elementDefinitionType}=props,medplum=(0,import_react_hooks21.useMedplum)(),ctx=(0,import_react29.useContext)(ElementsContext),[typeSchema,setTypeSchema]=(0,import_react29.useState)((0,import_core58.getDataType)("Extension")),profileUrl=(0,import_react29.useMemo)(()=>{if((0,import_core58.isPopulated)(elementDefinitionType?.profile))return elementDefinitionType.profile[0]},[elementDefinitionType]),[loadingProfile,setLoadingProfile]=(0,import_react29.useState)(profileUrl!==void 0);if((0,import_react29.useEffect)(()=>{profileUrl&&(setLoadingProfile(!0),medplum.requestProfileSchema(profileUrl).then(()=>{let profile=(0,import_core58.tryGetProfile)(profileUrl);setLoadingProfile(!1),profile&&setTypeSchema(profile)}).catch(reason=>{setLoadingProfile(!1),console.warn(reason)}))},[medplum,profileUrl]),profileUrl&&(loadingProfile||!(0,import_core58.isProfileLoaded)(profileUrl)))return(0,import_jsx_runtime47.jsx)("div",{children:"Loading..."});if(typeSchema.elements["value[x]"]?.max!==0){let[propertyValue,propertyType]=getValueAndType({type:"Extension",value:props.value},"value[x]",profileUrl??ctx.profileUrl);return(0,import_jsx_runtime47.jsx)(ResourcePropertyDisplay,{propertyType,value:propertyValue})}return(0,import_jsx_runtime47.jsx)(BackboneElementDisplay,{path:props.path,value:{type:typeSchema.type,value:props.value},compact:props.compact,ignoreMissingValues:props.ignoreMissingValues,link:props.link,profileUrl})}var import_jsx_runtime48=require("react/jsx-runtime");function IdentifierDisplay(props){return(0,import_jsx_runtime48.jsxs)("div",{children:[props.value?.system,": ",props.value?.value]})}var import_core59=require("@medplum/core"),import_jsx_runtime49=require("react/jsx-runtime");function MoneyDisplay(props){return(0,import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment,{children:(0,import_core59.formatMoney)(props.value)})}var import_core60=require("@medplum/core"),import_jsx_runtime50=require("react/jsx-runtime");function QuantityDisplay(props){return(0,import_jsx_runtime50.jsx)(import_jsx_runtime50.Fragment,{children:(0,import_core60.formatQuantity)(props.value)})}var import_core61=require("@medplum/core"),import_jsx_runtime51=require("react/jsx-runtime");function RangeDisplay(props){return(0,import_jsx_runtime51.jsx)(import_jsx_runtime51.Fragment,{children:(0,import_core61.formatRange)(props.value)})}var import_jsx_runtime52=require("react/jsx-runtime");function RatioDisplay(props){let value=props.value;return value?(0,import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment,{children:[(0,import_jsx_runtime52.jsx)(QuantityDisplay,{value:value.numerator}),"\xA0/\xA0",(0,import_jsx_runtime52.jsx)(QuantityDisplay,{value:value.denominator})]}):null}var import_core62=require("@medplum/core");var import_jsx_runtime53=require("react/jsx-runtime");function ReferenceDisplay(props){if(!props.value)return null;let displayString=props.value.display||props.value.reference||(0,import_core62.stringify)(props.value);return props.link!==!1&&props.value.reference?(0,import_jsx_runtime53.jsx)(MedplumLink,{to:props.value,children:displayString}):(0,import_jsx_runtime53.jsx)(import_jsx_runtime53.Fragment,{children:displayString})}var import_core65=require("@mantine/core"),import_core66=require("@medplum/core"),import_react_hooks22=require("@medplum/react-hooks"),import_react31=require("react");var import_core63=require("@medplum/core");function assignValuesIntoSlices(values,slices,slicing,profileUrl){if(!(0,import_core63.isPopulated)(slicing?.slices))return[values];let slicedValues=new Array(slices.length+1);for(let i=0;i<slicedValues.length;i++)slicedValues[i]=[];for(let value of values){let sliceName=(0,import_core63.getValueSliceName)(value,slices,slicing.discriminator,profileUrl),sliceIndex=sliceName?slices.findIndex(slice=>slice.name===sliceName):-1;sliceIndex===-1&&(sliceIndex=slices.length),slicedValues[sliceIndex].push(value)}return slicedValues}async function prepareSlices({medplum,property}){return new Promise((resolve,reject)=>{if(!property.slicing){resolve([]);return}let supportedSlices=[],profileUrls=[],promises=[];for(let slice of property.slicing.slices){if(!(0,import_core63.isSliceDefinitionWithTypes)(slice)){console.debug("Unsupported slice definition",slice);continue}let profileUrl;(0,import_core63.isPopulated)(slice.elements)||(profileUrl=slice.type[0]?.profile?.[0]),supportedSlices.push(slice),profileUrls.push(profileUrl),profileUrl&&promises.push(medplum.requestProfileSchema(profileUrl))}Promise.all(promises).then(()=>{for(let i=0;i<supportedSlices.length;i++){let slice=supportedSlices[i],profileUrl=profileUrls[i];if(profileUrl){let typeSchema=(0,import_core63.tryGetProfile)(profileUrl);slice.typeSchema=typeSchema}}resolve(supportedSlices)}).catch(reject)})}var import_core64=require("@medplum/core"),import_react30=require("react");var import_jsx_runtime54=require("react/jsx-runtime");function maybeWrapWithContext(ContextProvider,contextValue,contents){return contextValue!==void 0?(0,import_jsx_runtime54.jsx)(ContextProvider,{value:contextValue,children:contents}):contents}var import_jsx_runtime55=require("react/jsx-runtime");function SliceDisplay(props){let{slice,property}=props,sliceElements=slice.typeSchema?.elements??slice.elements,parentContext=(0,import_react30.useContext)(ElementsContext),contextValue=(0,import_react30.useMemo)(()=>{if((0,import_core64.isPopulated)(sliceElements))return(0,import_core64.buildElementsContext)({parentContext,elements:sliceElements,path:props.path,profileUrl:slice.typeSchema?.url})},[parentContext,props.path,slice.typeSchema?.url,sliceElements]);return maybeWrapWithContext(ElementsContext.Provider,contextValue,(0,import_jsx_runtime55.jsx)(import_jsx_runtime55.Fragment,{children:props.value.map((value,valueIndex)=>(0,import_jsx_runtime55.jsx)("div",{children:(0,import_jsx_runtime55.jsx)(ResourcePropertyDisplay,{property,path:props.path,arrayElement:!0,elementDefinitionType:slice.type[0],propertyType:slice.type[0].code,value,ignoreMissingValues:props.ignoreMissingValues,link:props.link})},`${valueIndex}-${props.value.length}`))}))}var import_jsx_runtime56=require("react/jsx-runtime"),MAX_ARRAY_SIZE=50;function ResourceArrayDisplay(props){let{property,propertyType}=props,medplum=(0,import_react_hooks22.useMedplum)(),values=(0,import_react31.useMemo)(()=>Array.isArray(props.values)?props.values:[],[props.values]),[loading,setLoading]=(0,import_react31.useState)(!0),[slices,setSlices]=(0,import_react31.useState)([]),[slicedValues,setSlicedValues]=(0,import_react31.useState)(()=>[values]),[valuesLength,setValuesLength]=(0,import_react31.useState)(0),ctx=(0,import_react31.useContext)(ElementsContext);if((0,import_react31.useEffect)(()=>{prepareSlices({medplum,property}).then(slices2=>{setValuesLength(values.length),setSlices(slices2);let limitedValues=values.slice(0,MAX_ARRAY_SIZE),slicedValues2=assignValuesIntoSlices(limitedValues,slices2,property.slicing,ctx.profileUrl);setSlicedValues(slicedValues2),setLoading(!1)}).catch(reason=>{console.error(reason),setLoading(!1)})},[medplum,property,ctx.profileUrl,setSlicedValues,values]),loading)return(0,import_jsx_runtime56.jsx)("div",{children:"Loading..."});let nonSliceContent;if(property.type[0]?.code!=="Extension"){let nonSliceValues=slicedValues[slices.length],nonSliceElements=nonSliceValues.map((value,valueIndex)=>(0,import_jsx_runtime56.jsx)("div",{children:(0,import_jsx_runtime56.jsx)(ResourcePropertyDisplay,{path:props.path,arrayElement:!0,property,propertyType,value,ignoreMissingValues:props.ignoreMissingValues,link:props.link})},`${valueIndex}-${nonSliceValues.length}`));if(props.includeDescriptionListEntry){if(!(0,import_core66.isPopulated)(props.path))throw new Error("props.path is required when includeDescriptionListEntry is true");let key=props.path.split(".").pop();nonSliceContent=(0,import_jsx_runtime56.jsx)(DescriptionListEntry,{term:(0,import_core66.getPathDisplayName)(key),children:nonSliceElements})}else nonSliceContent=(0,import_jsx_runtime56.jsx)(import_jsx_runtime56.Fragment,{children:nonSliceElements})}return(0,import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment,{children:[slices.map((slice,sliceIndex)=>{if(!props.path)throw Error(`Displaying a resource property with slices of type ${props.propertyType} requires path`);let sliceDisplay=(0,import_jsx_runtime56.jsx)(SliceDisplay,{path:props.path,slice,property,value:slicedValues[sliceIndex],ignoreMissingValues:props.ignoreMissingValues,link:props.link},slice.name);return props.includeDescriptionListEntry&&(sliceDisplay=(0,import_jsx_runtime56.jsx)(DescriptionListEntry,{term:(0,import_core66.getPathDisplayName)(slice.name),children:sliceDisplay},slice.name)),sliceDisplay}),nonSliceContent,valuesLength>MAX_ARRAY_SIZE&&(0,import_jsx_runtime56.jsx)(import_core65.Group,{justify:"right",children:(0,import_jsx_runtime56.jsxs)(import_core65.Text,{children:["... ",valuesLength," total values"]})})]})}var import_jsx_runtime57=require("react/jsx-runtime");function ResourcePropertyDisplay(props){let{property,propertyType,value}=props;if(property?.path?.endsWith(".id"))return(0,import_jsx_runtime57.jsxs)(import_core67.Flex,{gap:3,align:"center",children:[value,!(0,import_core68.isEmpty)(value)&&(0,import_jsx_runtime57.jsx)(import_core67.CopyButton,{value,timeout:2e3,children:({copied,copy})=>(0,import_jsx_runtime57.jsx)(import_core67.Tooltip,{label:copied?"Copied":"Copy",withArrow:!0,position:"right",children:(0,import_jsx_runtime57.jsx)(import_core67.ActionIcon,{variant:"subtle",color:copied?"teal":"gray",onClick:copy,children:copied?(0,import_jsx_runtime57.jsx)(IconCheck,{size:"1rem"}):(0,import_jsx_runtime57.jsx)(IconCopy,{size:"1rem"})})})})]});if(property&&(property.isArray||property.max>1)&&!props.arrayElement)return propertyType===import_core68.PropertyType.Attachment?(0,import_jsx_runtime57.jsx)(AttachmentArrayDisplay,{values:value,maxWidth:props.maxWidth,includeDescriptionListEntry:props.includeArrayDescriptionListEntry,property,path:props.path}):(0,import_jsx_runtime57.jsx)(ResourceArrayDisplay,{path:props.path,property,propertyType,values:value,includeDescriptionListEntry:props.includeArrayDescriptionListEntry,ignoreMissingValues:props.ignoreMissingValues,link:props.link});switch(propertyType){case import_core68.PropertyType.boolean:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:value===void 0?"":(!!value).toString()});case import_core68.PropertyType.SystemString:case import_core68.PropertyType.string:return props.property?.path?.toLowerCase().includes("secret")?(0,import_jsx_runtime57.jsx)(SecretFieldDisplay,{value}):(0,import_jsx_runtime57.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:value});case import_core68.PropertyType.code:case import_core68.PropertyType.date:case import_core68.PropertyType.decimal:case import_core68.PropertyType.id:case import_core68.PropertyType.integer:case import_core68.PropertyType.positiveInt:case import_core68.PropertyType.unsignedInt:case import_core68.PropertyType.uri:case import_core68.PropertyType.url:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:value});case import_core68.PropertyType.canonical:return(0,import_jsx_runtime57.jsx)(ReferenceDisplay,{value:{reference:value},link:props.link});case import_core68.PropertyType.dateTime:case import_core68.PropertyType.instant:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:(0,import_core68.formatDateTime)(value)});case import_core68.PropertyType.markdown:return(0,import_jsx_runtime57.jsx)("pre",{children:value});case import_core68.PropertyType.Address:return(0,import_jsx_runtime57.jsx)(AddressDisplay,{value});case import_core68.PropertyType.Annotation:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:value?.text});case import_core68.PropertyType.Attachment:return(0,import_jsx_runtime57.jsx)(AttachmentDisplay,{value,maxWidth:props.maxWidth});case import_core68.PropertyType.CodeableConcept:return(0,import_jsx_runtime57.jsx)(CodeableConceptDisplay,{value});case import_core68.PropertyType.Coding:return(0,import_jsx_runtime57.jsx)(CodingDisplay,{value});case import_core68.PropertyType.ContactDetail:return(0,import_jsx_runtime57.jsx)(ContactDetailDisplay,{value});case import_core68.PropertyType.ContactPoint:return(0,import_jsx_runtime57.jsx)(ContactPointDisplay,{value});case import_core68.PropertyType.HumanName:return(0,import_jsx_runtime57.jsx)(HumanNameDisplay,{value});case import_core68.PropertyType.Identifier:return(0,import_jsx_runtime57.jsx)(IdentifierDisplay,{value});case import_core68.PropertyType.Money:return(0,import_jsx_runtime57.jsx)(MoneyDisplay,{value});case import_core68.PropertyType.Period:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:(0,import_core68.formatPeriod)(value)});case import_core68.PropertyType.Quantity:case import_core68.PropertyType.Duration:return(0,import_jsx_runtime57.jsx)(QuantityDisplay,{value});case import_core68.PropertyType.Range:return(0,import_jsx_runtime57.jsx)(RangeDisplay,{value});case import_core68.PropertyType.Ratio:return(0,import_jsx_runtime57.jsx)(RatioDisplay,{value});case import_core68.PropertyType.Reference:return(0,import_jsx_runtime57.jsx)(ReferenceDisplay,{value,link:props.link});case import_core68.PropertyType.Timing:return(0,import_jsx_runtime57.jsx)(import_jsx_runtime57.Fragment,{children:(0,import_core68.formatTiming)(value)});case import_core68.PropertyType.Dosage:case import_core68.PropertyType.UsageContext:if(!props.path)throw Error(`Displaying property of type ${props.propertyType} requires path`);return(0,import_jsx_runtime57.jsx)(BackboneElementDisplay,{path:props.path,value:{type:propertyType,value},compact:!0,ignoreMissingValues:props.ignoreMissingValues});case import_core68.PropertyType.Extension:if(!props.path)throw Error(`Displaying property of type ${props.propertyType} requires path`);return(0,import_jsx_runtime57.jsx)(ExtensionDisplay,{path:props.path,value,compact:!0,ignoreMissingValues:props.ignoreMissingValues,elementDefinitionType:props.elementDefinitionType});default:if(!property)throw Error(`Displaying property of type ${props.propertyType} requires element schema`);if(!props.path)throw Error(`Displaying property of type ${props.propertyType} requires path`);return(0,import_jsx_runtime57.jsx)(BackboneElementDisplay,{path:props.path,value:{type:property.type[0].code,value},compact:!0,ignoreMissingValues:props.ignoreMissingValues})}}function SecretFieldDisplay(props){let[isVisible,setIsVisible]=(0,import_react32.useState)(!1),secretValue=props.value??"",hasValue=!(0,import_core68.isEmpty)(secretValue),MASK="\u2022".repeat(8);return(0,import_jsx_runtime57.jsxs)(import_core67.Flex,{gap:3,align:"center",children:[isVisible?(0,import_jsx_runtime57.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:secretValue}):(0,import_jsx_runtime57.jsx)("div",{style:{whiteSpace:"pre-wrap"},"aria-hidden":"true",children:hasValue?MASK:""}),hasValue&&(0,import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment,{children:[(0,import_jsx_runtime57.jsx)(import_core67.CopyButton,{value:props.value,timeout:2e3,children:({copied,copy})=>(0,import_jsx_runtime57.jsx)(import_core67.Tooltip,{label:copied?"Copied":"Copy secret",withArrow:!0,position:"right",children:(0,import_jsx_runtime57.jsx)(import_core67.ActionIcon,{variant:"subtle",color:copied?"teal":"gray",onClick:copy,"aria-label":copied?"Copied":"Copy secret",children:copied?(0,import_jsx_runtime57.jsx)(IconCheck,{size:"1rem"}):(0,import_jsx_runtime57.jsx)(IconCopy,{size:"1rem"})})})}),(0,import_jsx_runtime57.jsx)(import_core67.Tooltip,{label:isVisible?"Hide secret":"Show secret",withArrow:!0,position:"right",children:(0,import_jsx_runtime57.jsx)(import_core67.ActionIcon,{variant:"subtle",color:"gray",onClick:()=>setIsVisible(!isVisible),"aria-label":isVisible?"Hide secret":"Show secret",children:isVisible?(0,import_jsx_runtime57.jsx)(IconEyeOff,{size:"1rem"}):(0,import_jsx_runtime57.jsx)(IconEye,{size:"1rem"})})})]})]})}var import_jsx_runtime58=require("react/jsx-runtime"),EXTENSION_KEYS2=["extension","modifierExtension"],IGNORED_PROPERTIES2=DEFAULT_IGNORED_PROPERTIES.filter(prop=>!EXTENSION_KEYS2.includes(prop));function BackboneElementDisplay(props){let typedValue=props.value,{value,type:typeName}=typedValue,parentElementsContext=(0,import_react33.useContext)(ElementsContext),profileUrl=props.profileUrl??parentElementsContext?.profileUrl,typeSchema=(0,import_react33.useMemo)(()=>(0,import_core69.tryGetDataType)(typeName,profileUrl),[profileUrl,typeName]),newElementsContext=(0,import_react33.useMemo)(()=>{if(typeSchema)return(0,import_core69.buildElementsContext)({parentContext:parentElementsContext,elements:typeSchema.elements,path:props.path,profileUrl:typeSchema.url,accessPolicyResource:props.accessPolicyResource})},[typeSchema,parentElementsContext,props.path,props.accessPolicyResource]);if((0,import_core69.isEmpty)(value))return null;if(!typeSchema)return(0,import_jsx_runtime58.jsxs)("div",{children:[typeName,"\xA0not implemented"]});if(typeof value=="object"&&"name"in value&&Object.keys(value).length===1&&typeof value.name=="string")return(0,import_jsx_runtime58.jsx)("div",{children:value.name});let elementsContext=newElementsContext??parentElementsContext;return maybeWrapWithContext(ElementsContext.Provider,newElementsContext,(0,import_jsx_runtime58.jsx)(DescriptionList,{compact:props.compact,children:Object.entries(elementsContext.elements).map(([key,property])=>{if(EXTENSION_KEYS2.includes(key)&&(0,import_core69.isEmpty)(property.slicing?.slices))return null;if(IGNORED_PROPERTIES2.includes(key))return null;if(DEFAULT_IGNORED_NON_NESTED_PROPERTIES.includes(key)&&property.path.split(".").length===2||key.includes("."))return null;let[propertyValue,propertyType]=getValueAndType(typedValue,key,elementsContext.profileUrl);if((props.ignoreMissingValues||property.max===0)&&(0,import_core69.isEmpty)(propertyValue)||props.path.endsWith(".extension")&&(key==="url"||key==="id"))return null;let isArrayProperty=property.max>1||property.isArray,resourcePropertyDisplay=(0,import_jsx_runtime58.jsx)(ResourcePropertyDisplay,{property,propertyType,path:props.path+"."+key,value:propertyValue,ignoreMissingValues:props.ignoreMissingValues,includeArrayDescriptionListEntry:isArrayProperty,link:props.link},key);return isArrayProperty?resourcePropertyDisplay:(0,import_jsx_runtime58.jsx)(DescriptionListEntry,{term:(0,import_core69.getPathDisplayName)(key),children:resourcePropertyDisplay},key)})}))}var import_core103=require("@medplum/core"),import_react56=require("react");var import_core101=require("@mantine/core"),import_core102=require("@medplum/core"),import_react55=require("react");var import_core71=require("@mantine/core"),import_react34=require("react");var FormSection_default={dimmed:"FormSection_dimmed",preserveBreaks:"FormSection_preserveBreaks"};var import_core70=require("@mantine/core"),import_jsx_runtime59=require("react/jsx-runtime"),READ_ONLY_TOOLTIP_TEXT="Read Only";function maybeWrapWithTooltip(tooltipText,children){return tooltipText?(0,import_jsx_runtime59.jsx)(import_core70.Tooltip.Floating,{label:tooltipText,children}):children}var import_jsx_runtime60=require("react/jsx-runtime");function CheckboxFormSection(props){let{debugMode}=(0,import_react34.useContext)(ElementsContext),label;return debugMode&&props.fhirPath?label=`${props.title} - ${props.fhirPath}`:label=props.title,maybeWrapWithTooltip(props?.readonly?READ_ONLY_TOOLTIP_TEXT:void 0,(0,import_jsx_runtime60.jsxs)(import_core71.Group,{wrap:"nowrap","data-testid":props.testId,children:[(0,import_jsx_runtime60.jsx)("div",{children:props.children}),(0,import_jsx_runtime60.jsx)("div",{children:(0,import_jsx_runtime60.jsx)(import_core71.Input.Wrapper,{id:props.htmlFor,label,classNames:{label:props?.readonly?FormSection_default.dimmed:void 0},description:props.description,withAsterisk:props.withAsterisk,children:null})})]}))}var import_core72=require("@mantine/core");var import_react35=require("react");var import_jsx_runtime61=require("react/jsx-runtime");function FormSection(props){let{debugMode}=(0,import_react35.useContext)(ElementsContext),label;return debugMode&&props.fhirPath?label=`${props.title} - ${props.fhirPath}`:label=props.title,maybeWrapWithTooltip(props?.readonly?READ_ONLY_TOOLTIP_TEXT:void 0,(0,import_jsx_runtime61.jsx)(import_core72.Input.Wrapper,{id:props.htmlFor,label,classNames:{label:clsx_default({[FormSection_default.dimmed]:props?.readonly},FormSection_default.preserveBreaks)},description:props.description,withAsterisk:props.withAsterisk,error:getErrorsForInput(props.outcome,props.errorExpression??props.htmlFor),"data-testid":props.testId,children:props.children}))}var import_core73=require("@medplum/core");function setPropertyValue(obj,key,propName,elementDefinition,value){let types=elementDefinition.type;if(types.length>1)for(let type of types){let compoundKey=key.replace("[x]",(0,import_core73.capitalize)(type.code));compoundKey in obj&&delete obj[compoundKey]}return(0,import_core73.isEmpty)(value)?obj[propName]=void 0:obj[propName]=value,obj}function isSupportedProfileStructureDefinition(profile){return!!profile&&!(0,import_core73.isEmpty)(profile.url)&&!(0,import_core73.isEmpty)(profile.name)}var import_core99=require("@mantine/core"),import_core100=require("@medplum/core"),import_react54=require("react");var import_react36=require("react");var import_jsx_runtime62=require("react/jsx-runtime");function CodeableConceptInput(props){let{defaultValue:defaultValue2,onChange,withHelpText,outcome:_outcome,path:_path,valuePath:_valuePath,...rest}=props,[value,setValue]=(0,import_react36.useState)(defaultValue2);function handleChange(newValues){let newConcept=valueSetElementToCodeableConcept(newValues);setValue(newConcept),onChange&&onChange(newConcept)}return(0,import_jsx_runtime62.jsx)(ValueSetAutocomplete,{defaultValue:value&&codeableConceptToValueSetElement(value),onChange:handleChange,withHelpText:withHelpText??!0,...rest})}function codeableConceptToValueSetElement(concept){return concept.coding?.map(c=>({system:c.system,code:c.code,display:c.display}))}function valueSetElementToCodeableConcept(elements){if(elements.length!==0)return{coding:elements.map(e=>({system:e.system,code:e.code,display:e.display}))}}var import_react37=require("react");var import_jsx_runtime63=require("react/jsx-runtime");function CodingInput(props){let{defaultValue:defaultValue2,onChange,withHelpText,response,...rest}=props,[value,setValue]=(0,import_react37.useState)(response?.answer?.[0]?.valueCoding??defaultValue2);function handleChange(newValues){let newValue=newValues[0],newConcept=newValue&&valueSetElementToCoding(newValue);setValue(newConcept),onChange&&onChange(newConcept)}return(0,import_jsx_runtime63.jsx)(ValueSetAutocomplete,{defaultValue:value?codingToValueSetElement(value):void 0,maxValues:1,onChange:handleChange,withHelpText:withHelpText??!0,...rest})}function codingToValueSetElement(coding){return{system:coding.system,code:coding.code,display:coding.display}}function valueSetElementToCoding(element){return{system:element.system,code:element.code,display:element.display}}var import_core75=require("@mantine/core"),import_react39=require("react");var import_core74=require("@mantine/core"),import_react38=require("react");var import_jsx_runtime64=require("react/jsx-runtime");function ContactPointInput(props){let{path,outcome}=props,{elementsByPath,getExtendedProps}=(0,import_react38.useContext)(ElementsContext),[contactPoint,setContactPoint]=(0,import_react38.useState)(props.defaultValue),ref=(0,import_react38.useRef)(contactPoint);ref.current=contactPoint;let[systemElement,useElement,valueElement]=(0,import_react38.useMemo)(()=>["system","use","value"].map(field=>elementsByPath[path+"."+field]),[elementsByPath,path]),[systemProps,useProps,valueProps]=(0,import_react38.useMemo)(()=>["system","use","value"].map(field=>getExtendedProps(path+"."+field)),[getExtendedProps,path]);function setContactPointWrapper(newValue){newValue&&Object.keys(newValue).length===0&&(newValue=void 0),setContactPoint(newValue),props.onChange&&props.onChange(newValue)}function setSystem(system){let newValue={...ref.current,system};system||delete newValue.system,setContactPointWrapper(newValue)}function setUse(use){let newValue={...ref.current,use};use||delete newValue.use,setContactPointWrapper(newValue)}function setValue(value){let newValue={...ref.current,value};value||delete newValue.value,setContactPointWrapper(newValue)}let errorPath=props.valuePath??path;return(0,import_jsx_runtime64.jsxs)(import_core74.Group,{gap:"xs",grow:!0,wrap:"nowrap",align:"flex-start",children:[(0,import_jsx_runtime64.jsx)(import_core74.NativeSelect,{disabled:props.disabled||systemProps?.readonly,"data-testid":"system",defaultValue:contactPoint?.system,required:(systemElement?.min??0)>0,onChange:e=>setSystem(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"],error:getErrorsForInput(outcome,errorPath+".system")}),(0,import_jsx_runtime64.jsx)(import_core74.NativeSelect,{disabled:props.disabled||useProps?.readonly,"data-testid":"use",defaultValue:contactPoint?.use,required:(useElement?.min??0)>0,onChange:e=>setUse(e.currentTarget.value),data:["","home","work","temp","old","mobile"],error:getErrorsForInput(outcome,errorPath+".use")}),(0,import_jsx_runtime64.jsx)(import_core74.TextInput,{disabled:props.disabled||valueProps?.readonly,placeholder:"Value",defaultValue:contactPoint?.value,required:(valueElement?.min??0)>0,onChange:e=>setValue(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".value")})]})}var import_jsx_runtime65=require("react/jsx-runtime");function ContactDetailInput(props){let[contactDetail,setContactDetail]=(0,import_react39.useState)(props.defaultValue),ref=(0,import_react39.useRef)(contactDetail);ref.current=contactDetail;let{getExtendedProps}=(0,import_react39.useContext)(ElementsContext),[nameProps,telecomProps]=(0,import_react39.useMemo)(()=>["name","telecom"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setContactDetailWrapper(newValue){setContactDetail(newValue),props.onChange&&props.onChange(newValue)}function setName(name){let newValue={...ref.current,name};name||delete newValue.name,setContactDetailWrapper(newValue)}function setTelecom(telecom){let newValue={...ref.current,telecom:telecom&&[telecom]};telecom||delete newValue.telecom,setContactDetailWrapper(newValue)}return(0,import_jsx_runtime65.jsxs)(import_core75.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime65.jsx)(import_core75.TextInput,{disabled:props.disabled||nameProps?.readonly,"data-testid":props.name+"-name",name:props.name+"-name",placeholder:"Name",style:{width:180},defaultValue:contactDetail?.name,onChange:e=>setName(e.currentTarget.value)}),(0,import_jsx_runtime65.jsx)(ContactPointInput,{disabled:props.disabled||telecomProps?.readonly,name:props.name+"-telecom",path:props.path+".telecom",defaultValue:contactDetail?.telecom?.[0],onChange:setTelecom,outcome:props.outcome})]})}var import_core77=require("@mantine/core");var import_core76=require("@medplum/core");function convertIsoToLocal(isoString){if(!isoString)return"";let date=new Date(isoString);return(0,import_core76.isValidDate)(date)?date.toLocaleDateString("sv")+"T"+date.toLocaleTimeString("sv"):""}function convertLocalToIso(localString){if(!localString)return"";let date=new Date(localString);return(0,import_core76.isValidDate)(date)?date.toISOString():""}var import_jsx_runtime66=require("react/jsx-runtime");function DateTimeInput(props){return(0,import_jsx_runtime66.jsx)(import_core77.TextInput,{id:props.name,name:props.name,label:props.label,"data-autofocus":props.autoFocus,"data-testid":props["data-testid"]??props.name,placeholder:props.placeholder,required:props.required,disabled:props.disabled,type:getInputType(),step:1,defaultValue:convertIsoToLocal(props.defaultValue),autoFocus:props.autoFocus,error:getErrorsForInput(props.outcome,props.name),onChange:e=>{if(props.onChange){let newValue=e.currentTarget.value;props.onChange(convertLocalToIso(newValue))}}})}function getInputType(){return"datetime-local"}var import_core78=require("@medplum/core"),import_react_hooks23=require("@medplum/react-hooks"),import_react40=require("react");var import_jsx_runtime67=require("react/jsx-runtime");function ExtensionInput(props){let{propertyType}=props,medplum=(0,import_react_hooks23.useMedplum)(),profileUrl=(0,import_react40.useMemo)(()=>{if((0,import_core78.isPopulated)(propertyType.profile))return propertyType.profile[0]},[propertyType]),[loadingProfile,setLoadingProfile]=(0,import_react40.useState)(profileUrl!==void 0);return(0,import_react40.useEffect)(()=>{profileUrl&&(setLoadingProfile(!0),medplum.requestProfileSchema(profileUrl).then(()=>setLoadingProfile(!1)).catch(reason=>{setLoadingProfile(!1),console.warn(reason)}))},[medplum,profileUrl]),profileUrl&&(loadingProfile||!(0,import_core78.isProfileLoaded)(profileUrl))?(0,import_jsx_runtime67.jsx)("div",{children:"Loading..."}):(0,import_jsx_runtime67.jsx)(BackboneElementInput,{profileUrl,path:props.path,typeName:"Extension",defaultValue:props.defaultValue,onChange:props.onChange})}var import_core79=require("@mantine/core"),import_react41=require("react");var import_jsx_runtime68=require("react/jsx-runtime");function HumanNameInput(props){let{outcome,path}=props,[value,setValue]=(0,import_react41.useState)(props.defaultValue),{getExtendedProps}=(0,import_react41.useContext)(ElementsContext),[useProps,prefixProps,givenProps,familyProps,suffixProps]=(0,import_react41.useMemo)(()=>["use","prefix","given","family","suffix"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}function setUse(use){setValueWrapper({...value,use:use||void 0})}function setPrefix(prefix){setValueWrapper({...value,prefix:prefix?prefix.split(" "):void 0})}function setGiven(given){setValueWrapper({...value,given:given?given.split(" "):void 0})}function setFamily(family){setValueWrapper({...value,family:family||void 0})}function setSuffix(suffix){setValueWrapper({...value,suffix:suffix?suffix.split(" "):void 0})}let errorPath=props.valuePath??path;return(0,import_jsx_runtime68.jsxs)(import_core79.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime68.jsx)(import_core79.NativeSelect,{disabled:props.disabled||useProps?.readonly,defaultValue:value?.use,name:props.name+"-use","data-testid":"use",onChange:e=>setUse(e.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"],error:getErrorsForInput(outcome,errorPath+".use")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||prefixProps?.readonly,placeholder:"Prefix",name:props.name+"-prefix",defaultValue:value?.prefix?.join(" "),onChange:e=>setPrefix(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".prefix")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||givenProps?.readonly,placeholder:"Given",name:props.name+"-given",defaultValue:value?.given?.join(" "),onChange:e=>setGiven(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".given")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||familyProps?.readonly,name:props.name+"-family",placeholder:"Family",defaultValue:value?.family,onChange:e=>setFamily(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".family")}),(0,import_jsx_runtime68.jsx)(import_core79.TextInput,{disabled:props.disabled||suffixProps?.readonly,placeholder:"Suffix",name:props.name+"-suffix",defaultValue:value?.suffix?.join(" "),onChange:e=>setSuffix(e.currentTarget.value),error:getErrorsForInput(outcome,errorPath+".suffix")})]})}var import_core80=require("@mantine/core"),import_react42=require("react");var import_jsx_runtime69=require("react/jsx-runtime");function IdentifierInput(props){let[value,setValue]=(0,import_react42.useState)(props.defaultValue),{elementsByPath,getExtendedProps}=(0,import_react42.useContext)(ElementsContext),[systemElement,valueElement]=(0,import_react42.useMemo)(()=>["system","value"].map(field=>elementsByPath[props.path+"."+field]),[elementsByPath,props.path]),[systemProps,valueProps]=(0,import_react42.useMemo)(()=>["system","value"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}let errorPath=props.valuePath??props.path;return(0,import_jsx_runtime69.jsxs)(import_core80.Group,{gap:"xs",grow:!0,wrap:"nowrap",align:"flex-start",children:[(0,import_jsx_runtime69.jsx)(import_core80.TextInput,{disabled:props.disabled||systemProps?.readonly,placeholder:"System",required:(systemElement?.min??0)>0,defaultValue:value?.system,onChange:e=>setValueWrapper({...value,system:e.currentTarget.value}),error:getErrorsForInput(props.outcome,errorPath+".system")}),(0,import_jsx_runtime69.jsx)(import_core80.TextInput,{disabled:props.disabled||valueProps?.readonly,placeholder:"Value",required:(valueElement?.min??0)>0,defaultValue:value?.value,onChange:e=>setValueWrapper({...value,value:e.currentTarget.value}),error:getErrorsForInput(props.outcome,errorPath+".value")})]})}var import_core81=require("@mantine/core");var import_react43=require("react");var import_jsx_runtime70=require("react/jsx-runtime"),data=["USD","EUR","CAD","GBP","AUD"];function MoneyInput(props){let{onChange}=props,[value,setValue]=(0,import_react43.useState)(props.defaultValue),{getExtendedProps}=(0,import_react43.useContext)(ElementsContext),[currencyProps,valueProps]=(0,import_react43.useMemo)(()=>["currency","value"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]),setValueWrapper=(0,import_react43.useCallback)(newValue=>{setValue(newValue),onChange&&onChange(newValue)},[onChange]),handleCurrencyChange=(0,import_react43.useCallback)(e=>{setValueWrapper({...value,currency:e.currentTarget.value})},[value,setValueWrapper]),handleValueChange=(0,import_react43.useCallback)(e=>{setValueWrapper({...value,value:e.currentTarget.valueAsNumber})},[value,setValueWrapper]),select=(0,import_jsx_runtime70.jsx)(import_core81.NativeSelect,{disabled:props.disabled||currencyProps?.readonly,defaultValue:value?.currency,data,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:handleCurrencyChange});return(0,import_jsx_runtime70.jsx)(import_core81.TextInput,{disabled:props.disabled||valueProps?.readonly,type:"number",name:props.name,label:props.label,placeholder:props.placeholder??"Value",defaultValue:value?.value?.toString()??"USD",leftSection:(0,import_jsx_runtime70.jsx)(IconCurrencyDollar,{size:14}),rightSection:select,rightSectionWidth:92,onChange:handleValueChange})}var import_core82=require("@mantine/core"),import_react44=require("react");var import_jsx_runtime71=require("react/jsx-runtime");function PeriodInput(props){let[value,setValue]=(0,import_react44.useState)(props.defaultValue),{getExtendedProps}=(0,import_react44.useContext)(ElementsContext),[startProps,endProps]=(0,import_react44.useMemo)(()=>["start","end"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime71.jsxs)(import_core82.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime71.jsx)(DateTimeInput,{disabled:props.disabled||startProps?.readonly,name:props.name+".start",placeholder:"Start",defaultValue:value?.start,onChange:newValue=>setValueWrapper({...value,start:newValue})}),(0,import_jsx_runtime71.jsx)(DateTimeInput,{disabled:props.disabled||endProps?.readonly,name:props.name+".end",placeholder:"End",defaultValue:value?.end,onChange:newValue=>setValueWrapper({...value,end:newValue})})]})}var import_core83=require("@mantine/core"),import_react45=require("react");var import_jsx_runtime72=require("react/jsx-runtime");function QuantityInput(props){let[value,setValue]=(0,import_react45.useState)(props.defaultValue),{getExtendedProps}=(0,import_react45.useContext)(ElementsContext),[comparatorProps,valueProps,unitProps]=(0,import_react45.useMemo)(()=>["comparator","value","unit"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime72.jsxs)(import_core83.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime72.jsx)(import_core83.NativeSelect,{disabled:props.disabled||comparatorProps?.readonly,style:{width:80},"data-testid":props.name+"-comparator",defaultValue:value?.comparator,data:["","<","<=",">=",">"],onChange:e=>setValueWrapper({...value,comparator:e.currentTarget.value})}),(0,import_jsx_runtime72.jsx)(import_core83.TextInput,{disabled:props.disabled||valueProps?.readonly,id:props.name,name:props.name,required:props.required,"data-autofocus":props.autoFocus,"data-testid":props.name+"-value",type:"number",placeholder:"Value",defaultValue:value?.value,autoFocus:props.autoFocus,step:"any",onWheel:e=>{props.disableWheel&&e.currentTarget.blur()},onChange:e=>{setValueWrapper({...value,value:tryParseNumber(e.currentTarget.value)})}}),(0,import_jsx_runtime72.jsx)(import_core83.TextInput,{disabled:props.disabled||unitProps?.readonly,placeholder:"Unit","data-testid":props.name+"-unit",defaultValue:value?.unit,onChange:e=>setValueWrapper({...value,unit:e.currentTarget.value})})]})}function tryParseNumber(str){if(str)return Number.parseFloat(str)}var import_core84=require("@mantine/core"),import_react46=require("react");var import_jsx_runtime73=require("react/jsx-runtime");function RangeInput(props){let[value,setValue]=(0,import_react46.useState)(props.defaultValue),{getExtendedProps}=(0,import_react46.useContext)(ElementsContext),[lowProps,highProps]=(0,import_react46.useMemo)(()=>["low","high"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime73.jsxs)(import_core84.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime73.jsx)(QuantityInput,{path:props.path+".low",disabled:props.disabled||lowProps?.readonly,name:props.name+"-low",defaultValue:value?.low,onChange:v=>setValueWrapper({...value,low:v})}),(0,import_jsx_runtime73.jsx)(QuantityInput,{path:props.path+".high",disabled:props.disabled||highProps?.readonly,name:props.name+"-high",defaultValue:value?.high,onChange:v=>setValueWrapper({...value,high:v})})]})}var import_core85=require("@mantine/core"),import_react47=require("react");var import_jsx_runtime74=require("react/jsx-runtime");function RatioInput(props){let[value,setValue]=(0,import_react47.useState)(props.defaultValue),{getExtendedProps}=(0,import_react47.useContext)(ElementsContext),[numeratorProps,denominatorProps]=(0,import_react47.useMemo)(()=>["numerator","denominator"].map(field=>getExtendedProps(props.path+"."+field)),[getExtendedProps,props.path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime74.jsxs)(import_core85.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime74.jsx)(QuantityInput,{path:props.path+".numerator",disabled:props.disabled||numeratorProps?.readonly,name:props.name+"-numerator",defaultValue:value?.numerator,onChange:v=>setValueWrapper({...value,numerator:v})}),(0,import_jsx_runtime74.jsx)(QuantityInput,{path:props.path+".denominator",disabled:props.disabled||denominatorProps?.readonly,name:props.name+"-denominator",defaultValue:value?.denominator,onChange:v=>setValueWrapper({...value,denominator:v})})]})}var import_core88=require("@mantine/core"),import_core89=require("@medplum/core"),import_react_hooks25=require("@medplum/react-hooks"),import_react49=require("react");var import_core86=require("@mantine/core"),import_core87=require("@medplum/core"),import_react_hooks24=require("@medplum/react-hooks"),import_react48=require("react");var import_jsx_runtime75=require("react/jsx-runtime"),SEARCH_CODES={Device:"device-name",Observation:"code",Subscription:"criteria",User:"email:contains"},NAME_RESOURCE_TYPES=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","CareTeam","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","Group","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","ResearchStudy","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function toOption3(resource){return{value:(0,import_core87.getReferenceString)(resource)??"",label:(0,import_core87.getDisplayString)(resource),resource}}function ResourceInput(props){let medplum=(0,import_react_hooks24.useMedplum)(),{resourceType,searchCriteria}=props,[outcome,setOutcome]=(0,import_react48.useState)(),defaultValue2=(0,import_react_hooks24.useResource)(props.defaultValue,setOutcome),ItemComponent3=props.itemComponent??DefaultItemComponent2,onChange=props.onChange,loadValues=(0,import_react48.useCallback)(async(input,signal)=>{let searchCode=getSearchParamForResourceType(resourceType),searchParams=new URLSearchParams({[searchCode]:input??"",_count:"10",...searchCriteria});return await medplum.searchResources(resourceType,searchParams,{signal})},[medplum,resourceType,searchCriteria]),handleChange=(0,import_react48.useCallback)(newResources=>{onChange&&onChange(newResources[0])},[onChange]);return(0,import_core87.isPopulated)(props.defaultValue)&&!outcome&&!defaultValue2?null:(0,import_jsx_runtime75.jsx)(AsyncAutocomplete,{disabled:props.disabled,name:props.name,label:props.label,error:props.error,required:props.required,itemComponent:ItemComponent3,defaultValue:defaultValue2,placeholder:props.placeholder,maxValues:1,toOption:toOption3,loadOptions:loadValues,onChange:handleChange,clearable:!0})}var DefaultItemComponent2=(0,import_react48.forwardRef)(({label,resource,active:_active,...others},ref)=>(0,import_jsx_runtime75.jsx)("div",{ref,...others,children:(0,import_jsx_runtime75.jsxs)(import_core86.Group,{wrap:"nowrap",children:[(0,import_jsx_runtime75.jsx)(ResourceAvatar,{value:resource}),(0,import_jsx_runtime75.jsxs)("div",{children:[(0,import_jsx_runtime75.jsx)(import_core86.Text,{children:label}),(0,import_jsx_runtime75.jsx)(import_core86.Text,{size:"xs",c:"dimmed",children:resource.birthDate||resource.id})]})]})}));function getSearchParamForResourceType(resourceType){return SEARCH_CODES[resourceType]??(NAME_RESOURCE_TYPES.includes(resourceType)?"name":"_id")}var import_jsx_runtime76=require("react/jsx-runtime");function ReferenceInput(props){let{onChange}=props,medplum=(0,import_react_hooks25.useMedplum)(),[value,setValue]=(0,import_react49.useState)(props.defaultValue),[targetTypes,setTargetTypes]=(0,import_react49.useState)(()=>createTargetTypes(props.targetTypes)),[targetType,setTargetType]=(0,import_react49.useState)(()=>getInitialTargetType(props.defaultValue,targetTypes)),promiseCache=(0,import_react49.useRef)(new import_core89.LRUCache),searchCriteria=(0,import_react49.useMemo)(()=>targetType?.type==="profile"?{...props.searchCriteria,_profile:targetType.value}:props.searchCriteria,[props.searchCriteria,targetType]);(0,import_react49.useEffect)(()=>{let anyToFetch=!1,newTargetTypePromises=targetTypes?.map(tt=>{if(!shouldFetchResourceType(tt))return Promise.resolve(tt);anyToFetch=!0;let cacheKey=tt.value,cached=promiseCache.current.get(cacheKey);if(cached)return cached;let promise=fetchResourceTypeOfProfile(medplum,tt.value).then(profile=>{let newTargetType={...tt};return profile?(0,import_core89.isPopulated)(profile.type)?(newTargetType.resourceType=profile.type,newTargetType.name=profile.name,newTargetType.title=profile.title):(console.error(`StructureDefinition.type missing for ${tt.value}`),newTargetType.error="StructureDefinition.type missing"):(console.error(`StructureDefinition not found for ${tt.value}`),newTargetType.error="StructureDefinition not found"),newTargetType}).catch(reason=>(console.error(reason),{...tt,error:reason})),readablePromise=new import_core89.ReadablePromise(promise);return promiseCache.current.set(cacheKey,readablePromise),readablePromise});!newTargetTypePromises||!anyToFetch||Promise.all(newTargetTypePromises).then(newTargetTypes=>{if(setTargetTypes(newTargetTypes),!targetType)return;let index=newTargetTypes.findIndex(tt=>tt.value===targetType.value||tt.resourceType===targetType.resourceType);if(index===-1){console.debug(`defaultValue had unexpected resourceType: ${targetType.resourceType}`);return}setTargetType(newTargetTypes[index])}).catch(console.error)},[medplum,targetType,targetTypes]);let setValueHelper=(0,import_react49.useCallback)(item=>{let newValue=item?(0,import_core89.createReference)(item):void 0;setValue(newValue),onChange&&onChange(newValue)},[onChange]),typeSelectOptions=(0,import_react49.useMemo)(()=>targetTypes?targetTypes.map(tt=>({value:tt.value,label:tt.type==="profile"?tt.title??tt.name??tt.resourceType??tt.value:tt.value})):[],[targetTypes]);return(0,import_jsx_runtime76.jsxs)(import_jsx_runtime76.Fragment,{children:[props.name&&(0,import_jsx_runtime76.jsx)("input",{type:"hidden",name:props.name,value:value?.reference??""}),(0,import_jsx_runtime76.jsxs)(import_core88.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[targetTypes&&targetTypes.length>1&&(0,import_jsx_runtime76.jsx)(import_core88.NativeSelect,{name:props.name+"-resourceType",disabled:props.disabled,"data-autofocus":props.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:targetType?.resourceType,autoFocus:props.autoFocus,onChange:e=>{let newValue=e.currentTarget.value,newTargetType=targetTypes.find(tt=>tt.value===newValue);setTargetType(newTargetType)},data:typeSelectOptions}),!targetTypes&&(0,import_jsx_runtime76.jsx)(ResourceTypeInput,{disabled:props.disabled,autoFocus:props.autoFocus,testId:"reference-input-resource-type-input",defaultValue:targetType?.resourceType,onChange:newResourceType=>{setTargetType(newResourceType?{type:"resourceType",value:newResourceType,resourceType:newResourceType}:void 0)},name:props.name+"-resourceType",placeholder:"Resource Type"}),(0,import_jsx_runtime76.jsx)(ResourceInput,{resourceType:targetType?.resourceType,name:props.name+"-id",required:props.required,placeholder:props.placeholder,defaultValue:value,searchCriteria,onChange:setValueHelper,disabled:props.disabled})]})]})}function createTargetTypes(resourceTypesAndProfileUrls){if(!resourceTypesAndProfileUrls||resourceTypesAndProfileUrls.length===0||resourceTypesAndProfileUrls.length===1&&resourceTypesAndProfileUrls[0]==="Resource")return;let results=[];for(let value of resourceTypesAndProfileUrls)value.includes("/")?results.push({type:"profile",value}):results.push({type:"resourceType",value,resourceType:value});return results}function getInitialTargetType(defaultValue2,targetTypes){let defaultValueResourceType=defaultValue2?.reference?.split("/")[0];if(defaultValueResourceType){let targetType=targetTypes?.find(tt=>tt.resourceType===defaultValueResourceType);return targetType||{type:"resourceType",value:defaultValueResourceType,resourceType:defaultValueResourceType}}if(targetTypes&&targetTypes.length>0)return targetTypes[0]}async function fetchResourceTypeOfProfile(medplum,profileUrl){let profile=(0,import_core89.tryGetProfile)(profileUrl);if(profile)return{type:profile.type,name:profile.name,title:profile.title};let query=`{
66
66
  StructureDefinitionList(url: "${profileUrl}", _sort: "_lastUpdated", _count: 1) {
67
67
  type,
68
68
  name,