@medplum/react 0.10.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/cjs/AttachmentButton.d.ts +2 -0
  2. package/dist/cjs/CalendarInput.d.ts +0 -1
  3. package/dist/cjs/CheckboxFormSection.d.ts +0 -1
  4. package/dist/cjs/DescriptionList.d.ts +0 -1
  5. package/dist/cjs/DiagnosticReportDisplay.d.ts +0 -1
  6. package/dist/cjs/Document.d.ts +0 -1
  7. package/dist/cjs/FhirPathTable.d.ts +0 -1
  8. package/dist/cjs/FormSection.d.ts +0 -1
  9. package/dist/cjs/MedplumLink.d.ts +2 -4
  10. package/dist/cjs/QuestionnaireBuilder.d.ts +0 -1
  11. package/dist/cjs/QuestionnaireForm.d.ts +0 -1
  12. package/dist/cjs/RequestGroupDisplay.d.ts +0 -1
  13. package/dist/cjs/ResourceBadge.d.ts +0 -1
  14. package/dist/cjs/ResourceBlame.d.ts +0 -1
  15. package/dist/cjs/ResourceDiff.d.ts +0 -1
  16. package/dist/cjs/ResourceDiffTable.d.ts +0 -2
  17. package/dist/cjs/ResourceName.d.ts +2 -1
  18. package/dist/cjs/ResourceTimeline.d.ts +0 -1
  19. package/dist/cjs/Scheduler.d.ts +0 -1
  20. package/dist/cjs/SearchControl.d.ts +0 -1
  21. package/dist/cjs/SearchFilterEditor.d.ts +0 -1
  22. package/dist/cjs/Timeline.d.ts +0 -1
  23. package/dist/cjs/auth/AuthenticationForm.d.ts +1 -0
  24. package/dist/cjs/auth/RegisterForm.d.ts +0 -1
  25. package/dist/cjs/auth/SignInForm.d.ts +1 -1
  26. package/dist/cjs/index.js +1247 -907
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/index.min.js +1 -1
  29. package/dist/cjs/index.min.js.map +1 -1
  30. package/dist/cjs/stories/DescriptionList.stories.d.ts +5 -0
  31. package/dist/esm/AttachmentArrayInput.js +2 -2
  32. package/dist/esm/AttachmentArrayInput.js.map +1 -1
  33. package/dist/esm/AttachmentButton.d.ts +2 -0
  34. package/dist/esm/AttachmentButton.js +4 -1
  35. package/dist/esm/AttachmentButton.js.map +1 -1
  36. package/dist/esm/BackboneElementInput.js +2 -1
  37. package/dist/esm/BackboneElementInput.js.map +1 -1
  38. package/dist/esm/CalendarInput.d.ts +0 -1
  39. package/dist/esm/CalendarInput.js +39 -2
  40. package/dist/esm/CalendarInput.js.map +1 -1
  41. package/dist/esm/CheckboxFormSection.d.ts +0 -1
  42. package/dist/esm/CheckboxFormSection.js +5 -5
  43. package/dist/esm/CheckboxFormSection.js.map +1 -1
  44. package/dist/esm/DescriptionList.d.ts +0 -1
  45. package/dist/esm/DescriptionList.js +23 -1
  46. package/dist/esm/DescriptionList.js.map +1 -1
  47. package/dist/esm/DiagnosticReportDisplay.d.ts +0 -1
  48. package/dist/esm/DiagnosticReportDisplay.js +40 -22
  49. package/dist/esm/DiagnosticReportDisplay.js.map +1 -1
  50. package/dist/esm/Document.d.ts +0 -1
  51. package/dist/esm/Document.js +7 -2
  52. package/dist/esm/Document.js.map +1 -1
  53. package/dist/esm/ErrorBoundary.js +2 -1
  54. package/dist/esm/ErrorBoundary.js.map +1 -1
  55. package/dist/esm/FhirPathTable.d.ts +0 -1
  56. package/dist/esm/FhirPathTable.js +5 -5
  57. package/dist/esm/FhirPathTable.js.map +1 -1
  58. package/dist/esm/FormSection.d.ts +0 -1
  59. package/dist/esm/FormSection.js +3 -11
  60. package/dist/esm/FormSection.js.map +1 -1
  61. package/dist/esm/MedplumLink.d.ts +2 -4
  62. package/dist/esm/MedplumLink.js +11 -8
  63. package/dist/esm/MedplumLink.js.map +1 -1
  64. package/dist/esm/PlanDefinitionBuilder.js +41 -10
  65. package/dist/esm/PlanDefinitionBuilder.js.map +1 -1
  66. package/dist/esm/QuestionnaireBuilder.d.ts +0 -1
  67. package/dist/esm/QuestionnaireBuilder.js +78 -31
  68. package/dist/esm/QuestionnaireBuilder.js.map +1 -1
  69. package/dist/esm/QuestionnaireForm.d.ts +0 -1
  70. package/dist/esm/QuestionnaireForm.js +26 -16
  71. package/dist/esm/QuestionnaireForm.js.map +1 -1
  72. package/dist/esm/RequestGroupDisplay.d.ts +0 -1
  73. package/dist/esm/RequestGroupDisplay.js +8 -7
  74. package/dist/esm/RequestGroupDisplay.js.map +1 -1
  75. package/dist/esm/ResourceBadge.d.ts +0 -1
  76. package/dist/esm/ResourceBadge.js +2 -1
  77. package/dist/esm/ResourceBadge.js.map +1 -1
  78. package/dist/esm/ResourceBlame.d.ts +0 -1
  79. package/dist/esm/ResourceBlame.js +59 -10
  80. package/dist/esm/ResourceBlame.js.map +1 -1
  81. package/dist/esm/ResourceDiff.d.ts +0 -1
  82. package/dist/esm/ResourceDiff.js +13 -2
  83. package/dist/esm/ResourceDiff.js.map +1 -1
  84. package/dist/esm/ResourceDiffTable.d.ts +0 -2
  85. package/dist/esm/ResourceDiffTable.js +25 -3
  86. package/dist/esm/ResourceDiffTable.js.map +1 -1
  87. package/dist/esm/ResourceForm.js +6 -5
  88. package/dist/esm/ResourceForm.js.map +1 -1
  89. package/dist/esm/ResourceInput.js +22 -1
  90. package/dist/esm/ResourceInput.js.map +1 -1
  91. package/dist/esm/ResourceName.d.ts +2 -1
  92. package/dist/esm/ResourceName.js +5 -2
  93. package/dist/esm/ResourceName.js.map +1 -1
  94. package/dist/esm/ResourcePropertyDisplay.js +6 -6
  95. package/dist/esm/ResourcePropertyDisplay.js.map +1 -1
  96. package/dist/esm/ResourceTimeline.d.ts +0 -1
  97. package/dist/esm/ResourceTimeline.js +78 -25
  98. package/dist/esm/ResourceTimeline.js.map +1 -1
  99. package/dist/esm/Scheduler.d.ts +0 -1
  100. package/dist/esm/Scheduler.js +20 -4
  101. package/dist/esm/Scheduler.js.map +1 -1
  102. package/dist/esm/SearchControl.d.ts +0 -1
  103. package/dist/esm/SearchControl.js +33 -18
  104. package/dist/esm/SearchControl.js.map +1 -1
  105. package/dist/esm/SearchFilterEditor.d.ts +0 -1
  106. package/dist/esm/SearchFilterEditor.js +2 -2
  107. package/dist/esm/SearchFilterEditor.js.map +1 -1
  108. package/dist/esm/Timeline.d.ts +0 -1
  109. package/dist/esm/Timeline.js +13 -16
  110. package/dist/esm/Timeline.js.map +1 -1
  111. package/dist/esm/auth/AuthenticationForm.d.ts +1 -0
  112. package/dist/esm/auth/AuthenticationForm.js +6 -3
  113. package/dist/esm/auth/AuthenticationForm.js.map +1 -1
  114. package/dist/esm/auth/ChooseProfileForm.js +3 -3
  115. package/dist/esm/auth/ChooseProfileForm.js.map +1 -1
  116. package/dist/esm/auth/NewProjectForm.js +3 -3
  117. package/dist/esm/auth/NewProjectForm.js.map +1 -1
  118. package/dist/esm/auth/NewUserForm.js +4 -3
  119. package/dist/esm/auth/NewUserForm.js.map +1 -1
  120. package/dist/esm/auth/RegisterForm.d.ts +0 -1
  121. package/dist/esm/auth/RegisterForm.js.map +1 -1
  122. package/dist/esm/auth/SignInForm.d.ts +1 -1
  123. package/dist/esm/auth/SignInForm.js +1 -1
  124. package/dist/esm/auth/SignInForm.js.map +1 -1
  125. package/dist/esm/index.min.js +1 -1
  126. package/dist/esm/index.min.js.map +1 -1
  127. package/dist/esm/stories/DescriptionList.stories.d.ts +5 -0
  128. package/package.json +35 -24
  129. package/rollup.config.mjs +111 -0
  130. package/dist/cjs/defaulttheme.css +0 -192
  131. package/dist/cjs/styles.css +0 -528
  132. package/dist/esm/defaulttheme.css +0 -192
  133. package/dist/esm/styles.css +0 -528
@@ -1,2 +1,2 @@
1
- import{formatAddress as e,capitalize as t,globalSchema as n,getPropertyDisplayName as a,formatHumanName as r,stringify as l,buildTypeName as o,PropertyType as i,formatTiming as c,formatPeriod as u,formatDateTime as s,getTypedPropertyValue as m,createReference as d,isValidDate as p,getDisplayString as v,getImageSrc as h,toTypedValue as g,getReferenceString as E,evalFhirPath as f,getSearchParameterDetails as y,Operator as b,DEFAULT_SEARCH_COUNT as C,evalFhirPathTyped as T,SearchParameterType as k,formatSearchQuery as O,deepEquals as j,getQuestionnaireAnswers as w,normalizeErrorString as x}from"@medplum/core";import S,{useState as I,useRef as N,createContext as V,useEffect as A,useContext as D,useCallback as R,forwardRef as P,useMemo as L}from"react";import{Group as F,NativeSelect as M,TextInput as q,ActionIcon as _,Button as $,Stack as z,Text as U,Divider as W,PasswordInput as K,Checkbox as Q,Anchor as H,UnstyledButton as B,Avatar as G,MultiSelect as J,JsonInput as Y,Autocomplete as X,Loader as Z,Modal as ee,Textarea as te,Table as ne,Menu as ae,ScrollArea as re,createStyles as le,Center as oe,Pagination as ie,Badge as ce}from"@mantine/core";import{IconCircleMinus as ue,IconCloudUpload as se,IconCirclePlus as me,IconDots as de,IconMessage as pe,IconPin as ve,IconPinnedOff as he,IconListDetails as ge,IconEdit as Ee,IconTrash as fe,IconSortAscending as ye,IconSortDescending as be,IconEqual as Ce,IconEqualNot as Te,IconMathLower as ke,IconMathGreater as Oe,IconBracketsContain as je,IconCalendar as we,IconSettings as xe,IconBucket as Se,IconBucketOff as Ie,IconBleach as Ne,IconBleachOff as Ve,IconX as Ae,IconFilter as De,IconColumns as Re,IconFilePlus as Pe,IconTableExport as Le,IconBoxMultiple as Fe,IconAdjustmentsHorizontal as Me}from"@tabler/icons";import{useNavigate as qe}from"react-router-dom";function _e(t){const n=t.value;return n?S.createElement(S.Fragment,null,e(n)):null}function $e(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function ze(e,t,n){const a=e.line||[];for(;a.length<=t;)a.push("");return a[t]=n,Object.assign(Object.assign({},e),{line:a})}function Ue(e){const[t,n]=I(e.defaultValue||{}),a=N();function r(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(M,{"data-testid":"address-use",defaultValue:null==t?void 0:t.use,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},a.current),{use:t}));var t},data:["","home","work","temp","old","billing"]}),S.createElement(M,{"data-testid":"address-type",defaultValue:null==t?void 0:t.type,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},a.current),{type:t}));var t},data:["","postal","physical","both"]}),S.createElement(q,{placeholder:"Line 1",defaultValue:$e(t,0),onChange:e=>{return t=e.currentTarget.value,void r(ze(a.current||{},0,t));var t}}),S.createElement(q,{placeholder:"Line 2",defaultValue:$e(t,1),onChange:e=>{return t=e.currentTarget.value,void r(ze(a.current||{},1,t));var t}}),S.createElement(q,{placeholder:"City",defaultValue:t.city,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},a.current),{city:t}));var t}}),S.createElement(q,{placeholder:"State",defaultValue:t.state,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},a.current),{state:t}));var t}}),S.createElement(q,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},a.current),{postalCode:t}));var t}}))}function We(e){const t=e.value,{contentType:n,url:a,title:r}=null!=t?t:{};return a?S.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&S.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:a,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&S.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},S.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==r?void 0:r.endsWith(".pdf"))&&S.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},S.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),S.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},S.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function Ke(e){return S.createElement("div",null,e.values&&e.values.map(((t,n)=>S.createElement("div",{key:"attatchment-"+n},S.createElement(We,{value:t,maxWidth:e.maxWidth})))))}const Qe=V(void 0);function He(e){const t=e.medplum,[n,a]=I({profile:t.getProfile(),loading:!1});A((()=>{function e(){a(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const r=Object.assign(Object.assign({},n),{medplum:t});return S.createElement(Qe.Provider,{value:r},e.children)}function Be(){return D(Qe)}function Ge(){return Be().medplum}function Je(){return Be().profile}function Ye(e){e.preventDefault(),e.stopPropagation()}function Xe(e){if(Ze(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&Ze(t[0]))return!0}return!1}function Ze(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function et(e){const t=Ge(),n=N(null);function a(n){if(!n)return;if(!n.name)return;const a=n.name,r=n.type||"application/octet-stream";t.createBinary(n,a,r).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:a})})).catch((e=>{var t,n,a;alert(null===(a=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===a?void 0:a.text)}))}return S.createElement(S.Fragment,null,S.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){Ye(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),e.children({onClick:function(e){var t;Ye(e),null===(t=n.current)||void 0===t||t.click()}}))}function tt(e){var t;const[n,a]=I(null!==(t=e.defaultValue)&&void 0!==t?t:[]),r=N();function l(t){a(t),e.onChange&&e.onChange(t)}return r.current=n,S.createElement("table",{style:{width:"100%"}},S.createElement("colgroup",null,S.createElement("col",{width:"97%"}),S.createElement("col",{width:"3%"})),S.createElement("tbody",null,n.map(((e,t)=>S.createElement("tr",{key:`${t}-${n.length}`},S.createElement("td",null,S.createElement(We,{value:e,maxWidth:200})),S.createElement("td",{className:"medplum-right"},S.createElement(_,{title:"Remove",size:"sm",onClick:e=>{Ye(e);const a=n.slice();a.splice(t,1),l(a)}},S.createElement(ue,null)))))),S.createElement("tr",null,S.createElement("td",null),S.createElement("td",{className:"medplum-right"},S.createElement(et,{onUpload:e=>{l([...r.current,e])}},(e=>S.createElement(_,Object.assign({},e,{title:"Add",size:"sm",color:"green"}),S.createElement(se,{size:16}))))))))}function nt(e){const[t,n]=I(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?S.createElement(S.Fragment,null,S.createElement(We,{value:t,maxWidth:200}),S.createElement($,{onClick:e=>{Ye(e),a(void 0)}},"Remove")):S.createElement(et,{onUpload:a},(e=>S.createElement($,Object.assign({},e),"Upload...")))}function at(e){return S.createElement("main",{className:"medplum-document"},S.createElement("article",{style:{maxWidth:e.width}},e.children))}function rt(e,t,n,a){return new(n||(n=Promise))((function(r,l){function o(e){try{c(a.next(e))}catch(e){l(e)}}function i(e){try{c(a.throw(e))}catch(e){l(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,i)}c((a=a.apply(e,t||[])).next())}))}function lt(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?ot(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&it(t,n);return t}function ot(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function it(e,t){e[t.name]=t.value}function ct(e){return S.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=lt(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function ut(e){return S.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},S.createElement("title",null,"Medplum Logo"),S.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),S.createElement("path",{fill:e.fill||"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),S.createElement("path",{fill:e.fill||"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),S.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),S.createElement("path",{fill:e.fill||"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function st(e,t){var n,a,r;return null===(r=null===(a=null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return dt(null===(n=e.expression)||void 0===n?void 0:n[0],t)})))||void 0===a?void 0:a.map((e=>{var t;return null===(t=e.details)||void 0===t?void 0:t.text})))||void 0===r?void 0:r.join("\n")}function mt(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return dt(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function dt(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=e.indexOf(".");if(n>=0&&e.substring(n+1)===t)return!0;const a=t.indexOf(".");return a>=0&&t.substring(a+1)===e}function pt(e){const t=Ge(),[n,a]=I();return S.createElement(ct,{style:{maxWidth:400},onSubmit:n=>rt(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){a(e)}}))},S.createElement("div",{className:"medplum-center"},S.createElement(ut,{size:32}),S.createElement("h1",null,"Create project")),S.createElement(z,{spacing:"xl"},S.createElement(q,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:st(n,"firstName")}),S.createElement(U,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",S.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",S.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),".")),S.createElement(F,{position:"right",mt:"xl",noWrap:!0},S.createElement($,{type:"submit"},"Create project")))}function vt(e,t){const n=document.getElementsByTagName("head")[0],a=document.createElement("script");a.async=!0,a.src=e,a.onload=t||null,n.appendChild(a)}function ht(e){const t=Ge(),{googleClientId:n,handleGoogleCredential:a}=e,r=N(null),[l,o]=I("undefined"!=typeof google),[i,c]=I(!1),[u,s]=I(!1);return A((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:n,callback:a}),c(!0)),r.current&&!u&&(google.accounts.id.renderButton(r.current,{}),s(!0))):vt("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,l,r,u,a]),n?S.createElement("div",{ref:r}):null}function gt(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;return(null!==(n=null===(t="http://localhost:3000,http://127.0.0.1:3000,http://localhost:6006,http://127.0.0.1:6006,https://app.medplum.com,https://docs.medplum.com,https://storybook.medplum.com,https://graphiql.medplum.com,https://www.medplum.com")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function Et(e){"undefined"==typeof grecaptcha&&vt("https://www.google.com/recaptcha/api.js?render="+e)}function ft(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>rt(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function yt(e){const t=gt(e.googleClientId),n=e.recaptchaSiteKey,a=Ge(),[r,l]=I(),o=mt(r,void 0);return A((()=>Et(n)),[n]),S.createElement(ct,{style:{maxWidth:400},onSubmit:t=>rt(this,void 0,void 0,(function*(){try{const r=yield ft(n);e.handleAuthResponse(yield a.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:n,recaptchaToken:r}))}catch(e){l(e)}}))},S.createElement("div",{className:"medplum-center"},e.children),o&&S.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return S.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),t&&S.createElement(S.Fragment,null,S.createElement(F,{position:"center",p:"xl",style:{height:70}},S.createElement(ht,{googleClientId:t,handleGoogleCredential:t=>rt(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield a.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){l(e)}}))})),S.createElement(W,{label:"or",labelPosition:"center",my:"lg"})),S.createElement(z,{spacing:"xl"},S.createElement(q,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:st(r,"firstName")}),S.createElement(q,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:st(r,"lastName")}),S.createElement(q,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:st(r,"email")}),S.createElement(K,{name:"password",label:"Password",autoComplete:"off",required:!0,error:st(r,"password")}),S.createElement(U,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",S.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",S.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),S.createElement(U,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",S.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",S.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply.")),S.createElement(F,{position:"apart",mt:"xl",noWrap:!0},S.createElement(Q,{name:"remember",label:"Remember me",size:"xs"}),S.createElement($,{type:"submit"},"Create account")))}function bt(e){const{type:t,projectId:n,googleClientId:a,recaptchaSiteKey:r,onSuccess:l}=e,o=Ge(),[i,c]=I(void 0),[u,s]=I();function m(e){e.code?o.processCode(e.code).then((()=>l())).catch(console.log):e.login&&c(e.login)}return A((()=>{"patient"===t&&i&&o.startNewPatient({login:i,projectId:n}).then((e=>o.processCode(e.code))).then((()=>l())).catch((e=>s(e)))}),[o,t,n,i,l]),S.createElement(at,{width:450},u&&S.createElement("pre",null,JSON.stringify(u,null,2)),!i&&S.createElement(yt,{projectId:n,googleClientId:a,recaptchaSiteKey:r,handleAuthResponse:m},e.children),i&&"project"===t&&S.createElement(pt,{login:i,handleAuthResponse:m}))}function Ct(e){const t=Ge(),n=gt(e.googleClientId),[a,r]=I(),l=mt(a,void 0);function o(){return rt(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return S.createElement(ct,{style:{maxWidth:400},onSubmit:n=>{o().then((()=>t.startLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}))).then(e.handleAuthResponse).catch(r)}},S.createElement("div",{className:"medplum-center"},e.children),l&&S.createElement("div",{className:"medplum-input-error"},l.map((e=>{var t,n;return S.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),n&&S.createElement(S.Fragment,null,S.createElement(F,{position:"center",p:"xl",style:{height:70}},S.createElement(ht,{googleClientId:n,handleGoogleCredential:n=>{o().then((()=>t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}))).then(e.handleAuthResponse).catch(r)}})),S.createElement(W,{label:"or",labelPosition:"center",my:"lg"})),S.createElement(z,{spacing:"xl"},S.createElement(q,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:st(a,"email")}),S.createElement(K,{name:"password",type:"password",label:"Password",autoComplete:"off",required:!0,error:st(a,"password")})),S.createElement(F,{position:"apart",mt:"xl",noWrap:!0},e.onForgotPassword&&S.createElement(H,{component:"button",type:"button",color:"dimmed",onClick:e.onForgotPassword,size:"xs"},"Forgot password"),e.onRegister&&S.createElement(H,{component:"button",type:"button",color:"dimmed",onClick:e.onRegister,size:"xs"},"Register"),S.createElement(Q,{name:"remember",label:"Remember me",size:"xs"}),S.createElement($,{type:"submit"},"Sign in")))}function Tt(e){const t=Ge();return S.createElement(z,null,S.createElement("div",{className:"medplum-center"},S.createElement(ut,{size:32}),S.createElement(U,{size:"lg",weight:500},"Choose profile")),e.memberships.map((n=>{var a,r;return S.createElement(B,{key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},S.createElement(F,null,S.createElement(G,{radius:"xl"}),S.createElement("div",{style:{flex:1}},S.createElement(U,{size:"sm",weight:500},null===(a=n.profile)||void 0===a?void 0:a.display),S.createElement(U,{color:"dimmed",size:"xs"},null===(r=n.project)||void 0===r?void 0:r.display))))})))}function kt(e){const t=Ge(),[n,a]=I(void 0),[r,l]=I(void 0);function o(n){n.login&&a(n.login),n.memberships&&l(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return S.createElement(at,{width:450},n?r?S.createElement(Tt,{login:n,memberships:r,handleAuthResponse:o}):"new"===e.projectId?S.createElement(pt,{login:n,handleAuthResponse:o}):S.createElement("div",null,"Success"):S.createElement(Ct,{projectId:e.projectId,clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,generatePkce:!e.onCode,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function Ot(e){return S.createElement("div",{className:"medplum-checkbox-form-section"},S.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),S.createElement("div",{className:"medplum-checkbox-form-section-details-container"},S.createElement("label",{htmlFor:e.htmlFor},e.title),S.createElement("p",null,e.description)))}const jt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function wt(e){const t=mt(e.outcome,e.htmlFor),n=t&&t.length>0;return S.createElement("fieldset",{className:"medplum-form-section"},e.title&&S.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&S.createElement("p",null,e.description),e.children,n&&S.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return S.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))))}const xt={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function St(e){const t=Ge(),[n,a]=I(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?xt:e.getCachedReference(t);return}(t,e));return A((()=>{let r=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{r&&a(e)})).catch((()=>a(void 0))),()=>r=!1}),[t,n,e]),n}function It(e){const t=Ge(),n=St(e.defaultValue),[a,r]=I(),[l,o]=I();return A((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(r).catch(console.log))}),[t,n]),a&&l?S.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(l)}},S.createElement(wt,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},S.createElement(q,{name:"resourceType",defaultValue:l.resourceType,disabled:!0})),S.createElement(wt,{title:"ID",htmlFor:"id",outcome:e.outcome},S.createElement(q,{name:"id",defaultValue:l.id,disabled:!0})),S.createElement(Sn,{typeName:l.resourceType,defaultValue:l,outcome:e.outcome,onChange:o}),S.createElement(F,null,S.createElement($,{type:"submit"},"OK"),e.onDelete&&S.createElement($,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(l)}},"Delete"))):S.createElement("div",null,"Loading...")}function Nt(e,n,a,r,l){const o=r.type;if(o.length>1)for(const a of o){const r=n.replace("[x]",t(a.code));r in e&&delete e[r]}return e[a]=l,e}function Vt(e){return S.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function At(e){return S.createElement(S.Fragment,null,S.createElement("dt",null,e.term),S.createElement("dd",null,e.children))}function Dt(e){const t=e.value,r=t.value;if(!r)return null;const l=t.type,o=n.types[l];return o?"object"==typeof r&&"name"in r&&1===Object.keys(r).length?S.createElement("div",null,r.name):S.createElement(Vt,{compact:e.compact},Object.entries(o.properties).map((n=>{const r=n[0];if(jt.indexOf(r)>=0)return null;const l=n[1],[o,i]=Gt(t,r);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:S.createElement(At,{key:r,term:a(r)},S.createElement(Bt,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):S.createElement("div",null,l," not implemented")}function Rt(e){var t,n;return S.createElement(S.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function Pt(e){const t=e.value;return t?t.text?S.createElement(S.Fragment,null,t.text):t.coding?S.createElement(S.Fragment,null,t.coding.map(((e,t)=>S.createElement(S.Fragment,{key:"coding-"+t},t>0&&S.createElement(S.Fragment,null,", "),S.createElement(Rt,{value:e}))))):null:null}function Lt(e){const t=e.value;if(!t)return null;const n=[];return t.value&&n.push(t.value),(t.use||t.system)&&(n.push(" ["),t.use&&n.push(t.use),t.use&&t.system&&n.push(" "),t.system&&n.push(t.system),n.push("]")),S.createElement(S.Fragment,null,n.join("").trim())}function Ft(e){var t;const n=e.value;return n?S.createElement(S.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>S.createElement(Lt,{key:"telecom-"+t,value:e})))):null}function Mt(e){const t=e.value;return t?S.createElement(S.Fragment,null,r(t,e.options)):null}function qt(e){var t,n;return S.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function _t(e){return S.createElement(S.Fragment,null,$t(e.value))}function $t(e){if(!e)return"";const t=[];return e.comparator&&(t.push(e.comparator),t.push(" ")),void 0!==e.value&&t.push(e.value),e.unit&&("%"!==e.unit&&t.push(" "),t.push(e.unit)),t.join("")}function zt(e){return S.createElement(S.Fragment,null,Ut(e.value))}function Ut(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${$t(e.low)}`:!e.low&&e.high?`<= ${$t(e.high)}`:`${$t(e.low)} - ${$t(e.high)}`:""}function Wt(e){const t=e.value;return t?S.createElement(S.Fragment,null,S.createElement(_t,{value:t.numerator})," / ",S.createElement(_t,{value:t.denominator})):null}function Kt(e){const t=qe();let n=function(e){if(e){if("string"==typeof e)return function(e){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/"))return e;return"/"+e}(e);if("resourceType"in e)return function(e){return`/${e.resourceType}/${e.id}`}(e);if("reference"in e)return function(e){return`/${e.reference}`}(e)}return"#"}(e.to);return e.suffix&&(n+="/"+e.suffix),S.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{Ye(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function Qt(e){if(!e.value)return null;const t=e.value.display||e.value.reference||l(e.value);return!1!==e.link&&e.value.reference?S.createElement(Kt,{to:e.value},t):S.createElement(S.Fragment,null,t)}function Ht(e){var t,n,a;const r=e.property,l=null!==(t=e.values)&&void 0!==t?t:[],o=null===(a=null===(n=r.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return S.createElement(S.Fragment,null,l.map(((t,n)=>S.createElement("div",{key:`${n}-${l.length}`},S.createElement(Bt,{arrayElement:!0,property:r,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function Bt(e){var t;const{property:n,propertyType:a,value:r}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?S.createElement(Ke,{values:r,maxWidth:e.maxWidth}):S.createElement(Ht,{property:n,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case i.boolean:return S.createElement("div",null,void 0===r?"":Boolean(r).toString());case i.SystemString:case i.code:case i.date:case i.integer:case i.positiveInt:case i.string:case i.unsignedInt:case i.uri:case i.url:return S.createElement("div",null,r);case i.canonical:return S.createElement(Qt,{value:{reference:r},link:e.link});case i.dateTime:case i.instant:return S.createElement("div",null,s(r));case i.markdown:return S.createElement("pre",null,r);case i.Address:return S.createElement(_e,{value:r});case i.Annotation:return S.createElement("div",null,null==r?void 0:r.text);case i.Attachment:return S.createElement(We,{value:r,maxWidth:e.maxWidth});case i.CodeableConcept:return S.createElement(Pt,{value:r});case i.Coding:return S.createElement(Rt,{value:r});case i.ContactDetail:return S.createElement(Ft,{value:r});case i.ContactPoint:return S.createElement(Lt,{value:r});case i.HumanName:return S.createElement(Mt,{value:r});case i.Identifier:return S.createElement(qt,{value:r});case i.Period:return S.createElement("div",null,u(r));case i.Quantity:return S.createElement(_t,{value:r});case i.Range:return S.createElement(zt,{value:r});case i.Ratio:return S.createElement(Wt,{value:r});case i.Reference:return S.createElement(Qt,{value:r,link:e.link});case i.Timing:return S.createElement("div",null,c(r));default:if(!(null==n?void 0:n.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return S.createElement(Dt,{value:{type:o(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Gt(e,t){const n=m(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function Jt(e){const t=Je(),[n,a]=I(e.defaultValue||{});return N().current=n,S.createElement(q,{name:e.name,placeholder:"Annotation text",defaultValue:n.text,onChange:n=>function(n){const r=n?{text:n,authorReference:t&&d(t),time:(new Date).toISOString()}:{};a(r),e.onChange&&e.onChange(r)}(n.currentTarget.value)})}function Yt(e){return{value:e.code,label:(t=e,t.display||t.code||""),element:e};var t}function Xt(e){const t=Ge(),{property:n,defaultValue:a}=e,[r,l]=I(a?[a.code]:[]),[o,i]=I(a?[Yt(a)]:[]),c=N();c.current=o;const u=R((e=>rt(this,void 0,void 0,(function*(){var a,r;const l=null===(a=n.binding)||void 0===a?void 0:a.valueSet,o=null===(r=(yield t.searchValueSet(l,e)).expansion)||void 0===r?void 0:r.contains,u=[...c.current];for(const e of o)u.some((t=>t.value===e.code))||u.push(Yt(e));i(u)}))),[t,n,c]);return A((()=>{u("").catch(console.log)}),[u]),S.createElement(J,{data:o,placeholder:e.placeholder,searchable:!0,creatable:!0,clearable:!0,value:r,filter:(e,t,n)=>{var a,l;return!(0!==r.length||t||!(null===(a=n.element.display)||void 0===a?void 0:a.toLowerCase().includes(e.toLowerCase().trim()))&&!(null===(l=n.element.code)||void 0===l?void 0:l.toLowerCase().includes(e.toLowerCase().trim())))},onChange:function(t){l(t);const n=t[0];let a;if(n&&(a=c.current.find((e=>e.value===t[0])),!a)){a=Yt({code:n,display:n}),i([...c.current,a])}e.onChange&&e.onChange(null==a?void 0:a.element)},getCreateLabel:e=>`+ Create ${e}`,onCreate:e=>Yt({code:e,display:e})})}function Zt(e){const[t,n]=I(e.defaultValue);return S.createElement(Xt,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(a=t,{system:null===(l=null===(r=a.coding)||void 0===r?void 0:r[0])||void 0===l?void 0:l.system,code:null===(i=null===(o=a.coding)||void 0===o?void 0:o[0])||void 0===i?void 0:i.code,display:null===(u=null===(c=a.coding)||void 0===c?void 0:c[0])||void 0===u?void 0:u.display}),onChange:function(t){const a=t&&{text:(r=t).display,coding:[{system:r.system,code:r.code,display:r.display}]};var r;n(a),e.onChange&&e.onChange(a)}});var a,r,l,o,i,c,u}function en(e){const[t,n]=I(e.defaultValue);return S.createElement(Xt,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:(a=t,a?{code:a}:void 0),onChange:function(t){const a=null==(r=t)?void 0:r.code;var r;n(a),e.onChange&&e.onChange(a)}});var a}function tn(e){const[t,n]=I(e.defaultValue);return S.createElement(Xt,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(a=t,{system:a.system,code:a.code,display:a.display}),onChange:function(t){const a=t&&{system:(r=t).system,code:r.code,display:r.display};var r;n(a),e.onChange&&e.onChange(a)}});var a}function nn(e){const[t,n]=I(e.defaultValue),a=N();function r(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(M,{"data-testid":"system",defaultValue:null==t?void 0:t.system,onChange:e=>function(e){const t=Object.assign(Object.assign({},a.current),{system:e});e||delete t.system,r(t)}(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),S.createElement(M,{"data-testid":"use",defaultValue:null==t?void 0:t.use,onChange:e=>function(e){const t=Object.assign(Object.assign({},a.current),{use:e});e||delete t.use,r(t)}(e.currentTarget.value),data:["","home","work","temp","old","mobile"]}),S.createElement(q,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>function(e){const t=Object.assign(Object.assign({},a.current),{value:e});e||delete t.value,r(t)}(e.currentTarget.value)}))}function an(e){var t;const[n,a]=I(e.defaultValue),r=N();function l(t){a(t),e.onChange&&e.onChange(t)}return r.current=n,S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(q,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==n?void 0:n.name,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{name:e});e||delete t.name,l(t)}(e.currentTarget.value)}),S.createElement(nn,{name:e.name+"-telecom",defaultValue:null===(t=null==n?void 0:n.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},r.current),{telecom:e&&[e]});e||delete t.telecom,l(t)}}))}function rn(e){return S.createElement(q,{id:e.name,name:e.name,"data-testid":e.name,placeholder:e.placeholder,type:"datetime-local",defaultValue:ln(e.defaultValue),error:st(e.outcome,e.name),onChange:t=>{if(e.onChange){const n=t.currentTarget.value;e.onChange(on(n))}}})}function ln(e){if(!e)return"";const t=new Date(e);return p(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function on(e){if(!e)return"";const t=new Date(e);return p(t)?t.toISOString():""}function cn(e){return S.createElement(Y,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:l(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function un(e){var t,n,a;const[r,l]=I(e.defaultValue),o=N();function i(t){l(t),e.onChange&&e.onChange(t)}return o.current=r,S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(M,{defaultValue:null==r?void 0:r.use,"data-testid":"use",onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{use:t||void 0}));var t},data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),S.createElement(q,{placeholder:"Prefix",defaultValue:null===(t=null==r?void 0:r.prefix)||void 0===t?void 0:t.join(" "),onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{prefix:t?t.split(" "):void 0}));var t}}),S.createElement(q,{placeholder:"Given",defaultValue:null===(n=null==r?void 0:r.given)||void 0===n?void 0:n.join(" "),onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{given:t?t.split(" "):void 0}));var t}}),S.createElement(q,{placeholder:"Family",defaultValue:null==r?void 0:r.family,onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{family:t||void 0}));var t}}),S.createElement(q,{placeholder:"Suffix",defaultValue:null===(a=null==r?void 0:r.suffix)||void 0===a?void 0:a.join(" "),onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{suffix:t?t.split(" "):void 0}));var t}}))}function sn(e){const[t,n]=I(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(q,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e.currentTarget.value}))}),S.createElement(q,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e.currentTarget.value}))}))}function mn(e){const[t,n]=I(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(rn,{name:e.name+".start",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),S.createElement(rn,{name:e.name+".end",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function dn(e){var t;const[n,a]=I(e.defaultValue);function r(t){a(t),e.onChange&&e.onChange(t)}return S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(M,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,data:["","<","<=",">=",">"],onChange:e=>r(Object.assign(Object.assign({},n),{comparator:e.currentTarget.value}))}),S.createElement(q,{id:e.name,name:e.name,"data-testid":e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==n?void 0:n.value)||void 0===t?void 0:t.toString(),onChange:e=>r(Object.assign(Object.assign({},n),{value:pn(e.currentTarget.value)}))}),S.createElement(q,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>r(Object.assign(Object.assign({},n),{unit:e.currentTarget.value}))}))}function pn(e){if(e)return parseFloat(e)}function vn(e){const[t,n]=I(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(dn,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),S.createElement(dn,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function hn(e){const[t,n]=I(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(dn,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),S.createElement(dn,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function gn(e){var t,n,a;const r=St(e.value),l=r?v(r):null!==(t=e.alt)&&void 0!==t?t:"",o=null!==(n=r&&h(r))&&void 0!==n?n:e.src,i=null!==(a=e.radius)&&void 0!==a?a:"xl",c=Object.assign({},e);return delete c.value,delete c.link,e.link?S.createElement(Kt,{to:r},S.createElement(G,Object.assign({src:o,alt:l,radius:i},c))):S.createElement(G,Object.assign({src:o,alt:l,radius:i},c))}function En(e){const t=Ge(),n=St(e.defaultValue),[a,r]=I(n?v(n):""),[l,o]=I(!1),[i,c]=I([]);function u(n){return rt(this,void 0,void 0,(function*(){o(!0);const a=yield t.searchResources(e.resourceType,"name="+encodeURIComponent(n)+"&_count=10");c(a.map((e=>({value:v(e),resource:e})))),o(!1)}))}return A((()=>{n&&r(v(n))}),[n,r]),S.createElement(X,{itemComponent:fn,value:a,data:i,placeholder:e.placeholder,onFocus:()=>u(a),onChange:function(e){return rt(this,void 0,void 0,(function*(){return r(e),u(e)}))},onItemSubmit:function(t){r(t.value),c([]),e.onChange&&e.onChange(t.resource)},rightSection:l?S.createElement(Z,{size:16}):null})}const fn=P(((e,t)=>{var{value:n,resource:a}=e,r=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n}(e,["value","resource"]);return S.createElement("div",Object.assign({ref:t},r),S.createElement(F,{noWrap:!0},S.createElement(gn,{value:a}),S.createElement("div",null,S.createElement(U,null,n),S.createElement(U,{size:"xs",color:"dimmed"},a.birthDate))))}));function yn(e){const t=e.targetTypes,n=function(e,t){var n;const a=null===(n=null==e?void 0:e.reference)||void 0===n?void 0:n.split("/")[0];if(a)return a;if(t&&t.length>0)return t[0];return}(e.defaultValue,t),[a,r]=I(e.defaultValue),[l,o]=I(n);N().current=a;return N().current=l,S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},t?S.createElement(M,{"data-testid":"reference-input-resource-type-select",defaultValue:l,onChange:e=>o(e.currentTarget.value),data:t}):S.createElement(q,{"data-testid":"reference-input-resource-type-input",defaultValue:l,onChange:e=>o(e.currentTarget.value)}),S.createElement(En,{resourceType:l,name:e.name+"-id",placeholder:e.placeholder,defaultValue:a,onChange:t=>{var n;n=t?d(t):void 0,r(n),e.onChange&&e.onChange(n)}}))}function bn(e){const[t,n]=I(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),a=N();function r(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,S.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},S.createElement("colgroup",null,S.createElement("col",{width:"97%"}),S.createElement("col",{width:"3%"})),S.createElement("tbody",null,t.map(((n,l)=>S.createElement("tr",{key:`${l}-${t.length}`},S.createElement("td",null,S.createElement(On,{arrayElement:!0,property:e.property,name:e.name+"."+l,defaultValue:n,onChange:e=>{const t=[...a.current];t[l]=e,r(t)}})),S.createElement("td",{style:{textAlign:"right"}},S.createElement(_,{title:"Remove",size:"sm",onClick:e=>{Ye(e);const t=[...a.current];t.splice(l,1),r(t)}},S.createElement(ue,null)))))),S.createElement("tr",null,S.createElement("td",null),S.createElement("td",{style:{textAlign:"right"}},S.createElement(_,{title:"Add",size:"sm",color:"green",onClick:e=>{Ye(e);const t=[...a.current];t.push(void 0),r(t)}},S.createElement(me,null))))))}const Cn=["sun","mon","tue","wed","thu","fri","sat"];function Tn(e){const[t,n]=I(e.defaultValue||{}),[a,r]=I(!1),l=N();return l.current=t,S.createElement(S.Fragment,null,S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement("span",null,c(l.current)||"No repeat"),S.createElement($,{onClick:()=>r(!0)},"Edit")),S.createElement(kn,{visible:a,defaultValue:l.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),r(!1)},onCancel:()=>r(!1)}))}function kn(e){var t,n;const[a,r]=I(e.defaultValue||{}),l=N();function o(e){r(Object.assign(Object.assign({},l.current),{repeat:e}))}function i(e,t){t?function(e){var t,n,a;const r=(null===(n=null===(t=l.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];r.includes(e)||o(Object.assign(Object.assign({},null===(a=l.current)||void 0===a?void 0:a.repeat),{dayOfWeek:[...r,e]}))}(e):function(e){var t,n,a;const r=(null===(n=null===(t=l.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];r.includes(e)&&o(Object.assign(Object.assign({},null===(a=l.current)||void 0===a?void 0:a.repeat),{dayOfWeek:r.filter((t=>t!==e))}))}(e)}return l.current=a,S.createElement(ee,{title:"Timing",closeButtonLabel:"Close",opened:e.visible,onClose:()=>e.onCancel()},S.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},S.createElement(wt,{title:"Starts on",htmlFor:"timing-dialog-start"},S.createElement(rn,{name:"timing-dialog-start",onChange:e=>{return t=e,void r(Object.assign(Object.assign({},l.current),{event:[t]}));var t}})),S.createElement(wt,{title:"Repeat every",htmlFor:"timing-dialog-period"},S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(q,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:null===(t=null==a?void 0:a.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=l.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e.currentTarget.value))}),S.createElement(M,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:null===(n=null==a?void 0:a.repeat)||void 0===n?void 0:n.periodUnit,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=l.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e.currentTarget.value),data:[{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),S.createElement(wt,{title:"Repeat on"},S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},Cn.map((e=>S.createElement(S.Fragment,{key:e},S.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),S.createElement(Q,{id:"timing-dialog-repeat-"+e,name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t.currentTarget.checked)}))))))),S.createElement($,{onClick:()=>e.onOk(a)},"OK"))}function On(e){var t,n,a;const r=e.property,l=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(a=null===(n=r.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code,o=e.name,i=e.defaultValue;if("*"===r.max&&!e.arrayElement)return"Attachment"===l?S.createElement(tt,{name:o,defaultValue:i,onChange:e.onChange}):S.createElement(bn,{property:r,name:o,defaultValue:i,onChange:e.onChange});const c=r.type;return c.length>1?S.createElement(jn,Object.assign({elementDefinitionTypes:c},e)):S.createElement(wn,Object.assign({elementDefinitionType:c[0]},e))}function jn(e){const n=e.elementDefinitionTypes;let a;e.defaultPropertyType&&(a=n.find((t=>t.code===e.defaultPropertyType))),a||(a=n[0]);const[r,l]=I(a);return S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(M,{style:{width:"200px"},defaultValue:null==r?void 0:r.code,onChange:e=>{l(n.find((t=>t.code===e.currentTarget.value)))},data:n.map((e=>({value:e.code,label:e.code})))}),S.createElement(wn,Object.assign({},e,{elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t(r.code)))}})))}function wn(e){var t;const n=e.property,a=e.elementDefinitionType.code,r=e.name,l=e.defaultValue;switch(a){case i.SystemString:case i.canonical:case i.string:case i.time:case i.uri:case i.url:return S.createElement(q,{id:r,name:r,"data-testid":r,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:st(e.outcome,r)});case i.date:return S.createElement(q,{type:"date",id:r,name:r,"data-testid":r,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:st(e.outcome,r)});case i.dateTime:case i.instant:return S.createElement(rn,{name:r,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.decimal:case i.integer:case i.positiveInt:case i.unsignedInt:return S.createElement(q,{type:"number",step:a===i.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.valueAsNumber)}});case i.code:return S.createElement(en,{property:n,name:r,defaultValue:l,onChange:e.onChange});case i.boolean:return S.createElement(Q,{id:r,name:r,"data-testid":r,defaultChecked:!!l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}});case i.markdown:return S.createElement(te,{id:r,name:r,"data-testid":r,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}});case i.Address:return S.createElement(Ue,{name:r,defaultValue:l,onChange:e.onChange});case i.Annotation:return S.createElement(Jt,{name:r,defaultValue:l,onChange:e.onChange});case i.Attachment:return S.createElement(nt,{name:r,defaultValue:l,onChange:e.onChange});case i.CodeableConcept:return S.createElement(Zt,{property:n,name:r,defaultValue:l,onChange:e.onChange});case i.Coding:return S.createElement(tn,{property:n,name:r,defaultValue:l,onChange:e.onChange});case i.ContactDetail:return S.createElement(an,{name:r,defaultValue:l,onChange:e.onChange});case i.ContactPoint:return S.createElement(nn,{name:r,defaultValue:l,onChange:e.onChange});case i.Extension:return S.createElement(cn,{name:r,defaultValue:l,onChange:e.onChange});case i.HumanName:return S.createElement(un,{name:r,defaultValue:l,onChange:e.onChange});case i.Identifier:return S.createElement(sn,{name:r,defaultValue:l,onChange:e.onChange});case i.Period:return S.createElement(mn,{name:r,defaultValue:l,onChange:e.onChange});case i.Quantity:return S.createElement(dn,{name:r,defaultValue:l,onChange:e.onChange});case i.Range:return S.createElement(vn,{name:r,defaultValue:l,onChange:e.onChange});case i.Ratio:return S.createElement(hn,{name:r,defaultValue:l,onChange:e.onChange});case i.Reference:return S.createElement(yn,{name:r,defaultValue:l,targetTypes:xn(n),onChange:e.onChange});case i.Timing:return S.createElement(Tn,{name:r,defaultValue:l,onChange:e.onChange});default:return S.createElement(Sn,{typeName:o(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:l,onChange:e.onChange,outcome:e.outcome})}}function xn(e){var t,n,a;return null===(a=null===(n=null===(t=null==e?void 0:e.type)||void 0===t?void 0:t[0])||void 0===n?void 0:n.targetProfile)||void 0===a?void 0:a.map((e=>e.split("/").pop()))}function Sn(e){var t;const[r,l]=I(null!==(t=e.defaultValue)&&void 0!==t?t:{});function o(t){l(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=n.types[i];if(!c)return S.createElement("div",null,i," not implemented");const u={type:i,value:r};return S.createElement(S.Fragment,null,Object.entries(c.properties).map((t=>{const n=t[0];if("id"===n||jt.indexOf(n)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=Gt(u,n);return 1===l.type.length&&"boolean"===l.type[0].code?S.createElement(Ot,{key:n,title:a(n),description:l.definition,htmlFor:n},S.createElement(On,{property:l,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,a)=>{o(Nt(r,n,null!=a?a:n,t[1],e))}})):S.createElement(wt,{key:n,title:a(n),description:l.definition,htmlFor:n,outcome:e.outcome},S.createElement(On,{property:l,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,a)=>{o(Nt(r,n,null!=a?a:n,t[1],e))}}))})))}function In(e){const t=St(e.value);if(!t)return null;const n=v(t);return e.link?S.createElement(Kt,{to:t},n):S.createElement("span",null,n)}function Nn(e){return S.createElement("div",{className:"medplum-resource-badge"},S.createElement(gn,{size:24,radius:12,value:e.value,link:e.link}),S.createElement(In,{value:e.value,link:e.link}))}function Vn(e){var n,a;const r=St(e.value),l=St(null===(n=null==r?void 0:r.specimen)||void 0===n?void 0:n[0]);if(!r)return null;let o="";if(r.presentedForm&&r.presentedForm.length>0){const e=r.presentedForm[0];(null===(a=e.contentType)||void 0===a?void 0:a.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==l?void 0:l.note)for(const e of l.note)o+=e.text+"\n\n";return S.createElement("div",{className:"medplum-diagnostic-report"},S.createElement("h1",null,"Diagnostic Report"),S.createElement("div",{className:"medplum-diagnostic-report-header"},r.subject&&S.createElement("dl",null,S.createElement("dt",null,"Subject"),S.createElement("dd",null,S.createElement(Nn,{value:r.subject,link:!0}))),r.resultsInterpreter&&r.resultsInterpreter.map((e=>S.createElement("dl",{key:e.reference},S.createElement("dt",null,"Interpreter"),S.createElement("dd",null,S.createElement(Nn,{value:e,link:!0}))))),r.issued&&S.createElement("dl",null,S.createElement("dt",null,"Issued"),S.createElement("dd",null,s(r.issued))),r.status&&S.createElement("dl",null,S.createElement("dt",null,"Status"),S.createElement("dd",null,t(r.status)))),r.result&&S.createElement(An,{value:r.result}),o&&S.createElement("pre",null,o.trim()))}function An(e){var t;return S.createElement(ne,{withBorder:!0,withColumnBorders:!0},S.createElement("thead",null,S.createElement("tr",null,S.createElement("th",null,"Test"),S.createElement("th",null,"Value"),S.createElement("th",null,"Reference Range"),S.createElement("th",null,"Interpretation"))),S.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>S.createElement(Dn,{key:"obs-"+t,value:e})))))}function Dn(e){const t=St(e.value);if(!t)return null;let n;return function(e){var t,n,a,r;const l=null===(r=null===(a=null===(n=null===(t=e.interpretation)||void 0===t?void 0:t[0])||void 0===n?void 0:n.coding)||void 0===a?void 0:a[0])||void 0===r?void 0:r.code;return"AA"===l||"LL"===l||"HH"===l||"RR"===l}(t)&&(n="medplum-critical"),S.createElement("tr",{className:n},S.createElement("td",null,S.createElement(Kt,{to:t},S.createElement(Pt,{value:t.code}))),S.createElement("td",null,S.createElement(Rn,{value:t})),S.createElement("td",null,S.createElement(Pn,{value:t.referenceRange})),S.createElement("td",null,t.interpretation&&t.interpretation.length>0&&S.createElement(Pt,{value:t.interpretation[0]})))}function Rn(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?S.createElement(_t,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?S.createElement(S.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?S.createElement(S.Fragment,null,n.component.map(((e,t)=>S.createElement(Rn,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Pn(e){const t=e.value&&e.value.length>0&&e.value[0];return t?t.text?S.createElement(S.Fragment,null,t.text):S.createElement(zt,{value:t}):null}function Ln(e){const t=Ge(),[n,r]=I();if(A((()=>{t.requestSchema(e.original.resourceType).then(r).catch(console.log)}),[t,e.original.resourceType]),!n)return null;const o=n.types[e.original.resourceType];return o?S.createElement("table",{className:"medplum-diff-table"},S.createElement("colgroup",null,S.createElement("col",{style:{width:"30%"}}),S.createElement("col",{style:{width:"35%"}}),S.createElement("col",{style:{width:"35%"}})),S.createElement("thead",null,S.createElement("tr",null,S.createElement("th",null,"Property"),S.createElement("th",null,"Before"),S.createElement("th",null,"After"))),S.createElement("tbody",null,Object.entries(o.properties).map((t=>{const n=t[0];if("id"===n||"meta"===n)return null;const r=t[1],[o,i]=Gt(g(e.original),n),[c,u]=Gt(g(e.revised),n);return Fn(o)&&Fn(c)||l(o)===l(c)?null:S.createElement("tr",{key:n},S.createElement("td",null,a(n)),S.createElement("td",{className:"medplum-diff-removed"},S.createElement(Bt,{property:r,propertyType:i,value:o,ignoreMissingValues:!0})),S.createElement("td",{className:"medplum-diff-added"},S.createElement(Bt,{property:r,propertyType:u,value:c,ignoreMissingValues:!0})))})))):null}function Fn(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function Mn(e){const t=Ge(),n=St(e.value),[a,r]=I();return A((()=>{n&&t.requestSchema(n.resourceType).then(r).catch(console.log)}),[t,n]),a&&n?S.createElement(Dt,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}class qn extends S.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?S.createElement("h1",null,"Something went wrong."):this.props.children}}function _n(e){return S.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function $n(e){var t,n,a;const r=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return S.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},S.createElement("div",{className:"medplum-timeline-item-header"},S.createElement("div",{className:"medplum-timeline-item-avatar"},S.createElement(gn,{value:r,link:!0,size:"md"})),S.createElement("div",{className:"medplum-timeline-item-title"},S.createElement(In,{value:r,link:!0}),S.createElement("div",{className:"medplum-timeline-item-subtitle"},S.createElement(Kt,{to:e.resource},s(null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated)),S.createElement("span",null,"·"),S.createElement(Kt,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&S.createElement(ae,{position:"bottom-end",shadow:"md",width:200},S.createElement(ae.Target,null,S.createElement(_,{radius:"xl","aria-label":`Actions for ${E(e.resource)}`},S.createElement(de,null))),e.popupMenuItems)),S.createElement(qn,null,e.padding&&S.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&S.createElement(S.Fragment,null,e.children)),e.socialEnabled&&S.createElement("div",{className:"medplum-timeline-item-footer"},S.createElement($,{variant:"subtle"},"Like"),S.createElement($,{variant:"subtle"},"Comment")))}function zn(e){e.sort(Un)}function Un(e,t){const n=Wn(e),a=Wn(t);return n>a?1:n<a?-1:Kn(e)-Kn(t)}function Wn(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function Kn(e){var t;if("Communication"===e.resourceType&&e.sent)return new Date(e.sent).getTime();if(("DiagnosticReport"===e.resourceType||"Media"===e.resourceType||"Observation"===e.resourceType)&&e.issued)return new Date(e.issued).getTime();if("DocumentReference"===e.resourceType&&e.date)return new Date(e.date).getTime();const n=null===(t=e.meta)||void 0===t?void 0:t.lastUpdated;return n?new Date(n).getTime():0}function Qn(e){const t=qe(),n=Ge(),a=n.getProfile(),r=N(null),l=St(e.value),[o,i]=I(),[c,u]=I([]),s=e.buildSearchRequests,m=N(c);m.current=c;const d=R((()=>{if(!l)return u([]),void i({});n.executeBatch(s(l)).then(p).catch(console.log)}),[n,l,s]);function p(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&i(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}zn(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];zn(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function g(e){h(e,"stat").then(d).catch(console.log)}function E(e){h(e,"routine").then(d).catch(console.log)}function f(e){t(`/${e.resourceType}/${e.id}`)}function y(e){t(`/${e.resourceType}/${e.id}/edit`)}function b(e){t(`/${e.resourceType}/${e.id}/delete`)}function C(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return A((()=>{d()}),[d]),l&&o?S.createElement(_n,null,e.createCommunication&&S.createElement("article",{className:"medplum-timeline-item"},S.createElement("div",{className:"medplum-timeline-item-header"},S.createElement(ct,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,l&&e.createCommunication&&n.createResource(e.createCommunication(l,a,o)).then((e=>{v([e])})).catch(console.log);const i=r.current;i&&(i.value="",i.focus())}},S.createElement(F,{spacing:"xs",noWrap:!0,style:{width:"100%"}},S.createElement(gn,{value:a}),S.createElement(q,{name:"text",ref:r,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),S.createElement(_,{type:"submit",radius:"xl",color:"blue",variant:"filled"},S.createElement(pe,{size:16})),S.createElement(et,{onUpload:function(t){l&&e.createMedia&&n.createResource(e.createMedia(l,a,t)).then((e=>{v([e])})).catch(console.log)}},(e=>S.createElement(_,Object.assign({},e,{radius:"xl",color:"blue",variant:"filled"}),S.createElement(se,{size:16})))))))),c.map((e=>{var t;if(e.resourceType===l.resourceType&&e.id===l.id)return S.createElement(Bn,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:o,resource:e,onDetails:C});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return S.createElement(Yn,{key:n,resource:e,onDetails:f});case"Communication":return S.createElement(Gn,{key:n,resource:e,onPin:"stat"!==e.priority?g:void 0,onUnpin:"stat"===e.priority?E:void 0,onDetails:f,onEdit:y,onDelete:b});case"DiagnosticReport":return S.createElement(Xn,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});case"Media":return S.createElement(Jn,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});default:return S.createElement($n,{key:n,resource:e,padding:!0},S.createElement(Mn,{value:e,ignoreMissingValues:!0}))}}))):S.createElement(Z,null)}function Hn(e){return S.createElement(ae.Dropdown,null,S.createElement(ae.Label,null,"Resource"),e.onPin&&S.createElement(ae.Item,{icon:S.createElement(ve,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${E(e.resource)}`},"Pin"),e.onUnpin&&S.createElement(ae.Item,{icon:S.createElement(he,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${E(e.resource)}`},"Unpin"),e.onDetails&&S.createElement(ae.Item,{icon:S.createElement(ge,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${E(e.resource)}`},"Details"),e.onEdit&&S.createElement(ae.Item,{icon:S.createElement(Ee,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${E(e.resource)}`},"Edit"),e.onDelete&&S.createElement(S.Fragment,null,S.createElement(ae.Divider,null),S.createElement(ae.Label,null,"Danger zone"),S.createElement(ae.Item,{color:"red",icon:S.createElement(fe,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${E(e.resource)}`},"Delete")))}function Bn(e){const t=function(e,t){const n=e.entry,a=n.findIndex((e=>{var n,a,r;return(null===(a=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===a?void 0:a.versionId)===(null===(r=t.meta)||void 0===r?void 0:r.versionId)}));if(a>=n.length-1)return;return n[a+1].resource}(e.history,e.resource);return t?S.createElement($n,{resource:e.resource,padding:!0,popupMenuItems:S.createElement(Hn,Object.assign({},e))},S.createElement(Ln,{original:t,revised:e.resource})):S.createElement($n,{resource:e.resource,padding:!0,popupMenuItems:S.createElement(Hn,Object.assign({},e))},S.createElement("h3",null,"Created"),S.createElement(Mn,{value:e.resource,ignoreMissingValues:!0}))}function Gn(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return S.createElement($n,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:S.createElement(Hn,Object.assign({},e))},S.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function Jn(e){var t;const n=null===(t=e.resource.content)||void 0===t?void 0:t.contentType,a=n&&!n.startsWith("image/")&&!n.startsWith("video/")&&"application/pdf"!==n;return S.createElement($n,{resource:e.resource,padding:!!a,popupMenuItems:S.createElement(Hn,Object.assign({},e))},S.createElement(We,{value:e.resource.content}))}function Yn(e){return S.createElement($n,{resource:e.resource,padding:!0,popupMenuItems:S.createElement(Hn,Object.assign({},e))},S.createElement(re,null,S.createElement("pre",null,e.resource.outcomeDesc)))}function Xn(e){return S.createElement($n,{resource:e.resource,padding:!0,popupMenuItems:S.createElement(Hn,Object.assign({},e))},S.createElement(Vn,{value:e.resource}))}function Zn(e){return S.createElement(Qn,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${E(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${E(e)}&_sort=-_lastUpdated`}}]})})}function ea(e){return S.createElement(Qn,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${E(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${E(e)}`}},{request:{method:"GET",url:`Media?encounter=${E(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",status:"completed",encounter:d(e),subject:e.subject,sender:d(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",status:"completed",encounter:d(e),subject:e.subject,operator:d(t),issued:(new Date).toISOString(),content:n})})}function ta(e){let t;try{t=f(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(t.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${t.length} elements [${JSON.stringify(t,null,2)}]`);return S.createElement(Bt,{value:t[0]||"",propertyType:e.propertyType})}function na(e,t){var a;if("_lastUpdated"===t)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===t)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const r=n.types[e],l=r.properties[t],o=null===(a=r.searchParams)||void 0===a?void 0:a[t.toLowerCase()];if(l&&o)return{name:t,elementDefinition:l,searchParams:[o]};if(l){let n;if(r.searchParams){const a=`${e}.${t.replaceAll("[x]","")}`;n=Object.values(r.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===n.length&&(n=void 0)}return{name:t,elementDefinition:l,searchParams:n}}if(o){return{name:t,elementDefinition:y(e,o).elementDefinition,searchParams:[o]}}return{name:t}}const aa={string:[b.EQUALS,b.NOT,b.CONTAINS,b.EXACT],fulltext:[b.EQUALS,b.NOT,b.CONTAINS,b.EXACT],token:[b.EQUALS,b.NOT],reference:[b.EQUALS,b.NOT],numeric:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS],quantity:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS],date:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS,b.STARTS_AFTER,b.ENDS_BEFORE,b.APPROXIMATELY],datetime:[b.EQUALS,b.NOT_EQUALS,b.GREATER_THAN,b.LESS_THAN,b.GREATER_THAN_OR_EQUALS,b.LESS_THAN_OR_EQUALS,b.STARTS_AFTER,b.ENDS_BEFORE,b.APPROXIMATELY]},ra={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing"};function la(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function oa(e){return la(e,[])}function ia(e,t){return la(e,(e.filters||[]).filter((e=>e.code!==t)))}function ca(e,t,n,a,r){r&&(e=ia(e,t));const l=[];return e.filters&&l.push(...e.filters),l.push({code:t,operator:n,value:a||""}),la(e,l)}function ua(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})}function sa(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),Object.assign(Object.assign({},e),{filters:n,name:void 0})}function ma(e,t){return va(e,t,-1)}function da(e,t){return va(e,t,0)}function pa(e,t){return va(e,t,1)}function va(e,t,n){const a=new Date;a.setDate(a.getDate()+n),a.setHours(0,0,0,0);const r=new Date(a.getTime());return r.setDate(r.getDate()+1),r.setTime(r.getTime()-1),Ta(e,t,a,r)}function ha(e,t){return fa(e,t,-1)}function ga(e,t){return fa(e,t,0)}function Ea(e,t){return fa(e,t,1)}function fa(e,t,n){const a=new Date;a.setMonth(a.getMonth()+n),a.setDate(1),a.setHours(0,0,0,0);const r=new Date(a.getTime());return r.setMonth(r.getMonth()+1),r.setDate(1),r.setHours(0,0,0,0),r.setTime(r.getTime()-1),Ta(e,t,a,r)}function ya(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return Ta(e,t,n,new Date)}function ba(e,t,n){return Ta(e,t,n,n)}function Ca(e,t,n,a){return ka(e=ia(e,t),t,n,a)}function Ta(e,t,n,a){return e=ka(e=ia(e,t),t,b.GREATER_THAN_OR_EQUALS,n),e=ka(e,t,b.LESS_THAN_OR_EQUALS,a)}function ka(e,t,n,a){return ca(e,t,n,a.toISOString())}function Oa(e,t,n=!0){return ca(e,t,b.MISSING,n.toString())}function ja(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function wa(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function xa(e,t){var n;return wa(e,(t-1)*(null!==(n=e.count)&&void 0!==n?n:C))}function Sa(e,t,n){return t===Na(e)&&void 0!==n&&n===Va(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Ia(e,t){let n=!1;return Na(e)===t&&(n=!Va(e)),Sa(e,t,n)}function Na(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Va(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Aa(e){return aa[e.type]}function Da(e){var t;return null!==(t=ra[e])&&void 0!==t?t:""}function Ra(e){let n=e;return n.includes(".")&&(n=n.split(".").pop()),"id"===n?"ID":"versionId"===n?"Version ID":(n=n.replace("[x]",""),n=n.replace(/([A-Z])/g," $1"),n=n.replace(/[-_]/g," "),n=n.replace(/\s+/g," "),n=n.trim(),n.split(/\s/).map(t).join(" "))}function Pa(e,t){var n,a;const r=t.name;return"id"===r?e.id:"meta.versionId"===r?null===(n=e.meta)||void 0===n?void 0:n.versionId:"_lastUpdated"===r?s(null===(a=e.meta)||void 0===a?void 0:a.lastUpdated):t.elementDefinition&&`${e.resourceType}.${t.name}`===t.elementDefinition.path?function(e,t){var n,a,r;const l=(null===(r=null===(a=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===a?void 0:a.pop())||void 0===r?void 0:r.replaceAll("[x]",""))||"",[o,i]=Gt({type:e.resourceType,value:e},l);if(!o)return null;return S.createElement(Bt,{property:t,propertyType:i,value:o,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,t.elementDefinition):t.searchParams&&1===t.searchParams.length&&t.name===t.searchParams[0].code?function(e,t,n){const a=T(t.expression,[{type:e.resourceType,value:e}]);if(!a||0===a.length)return null;if(n)return S.createElement(Bt,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return S.createElement(S.Fragment,null,a.map(((e,t)=>S.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function La(e){var t;const[a,r]=I({search:JSON.parse(l(e.search))}),o=N(null),i=N(null);function c(){var e,t;const n=null!==(e=a.search.fields)&&void 0!==e?e:[],l=null===(t=o.current)||void 0===t?void 0:t.value;if(l){const e=[...n,l];r({search:Object.assign(Object.assign({},a.search),{fields:e})})}}function u(){var e,t;const n=null!==(e=a.search.fields)&&void 0!==e?e:[],l=null===(t=i.current)||void 0===t?void 0:t.value;if(l){const e=[...n];e.splice(e.indexOf(l),1),r({search:Object.assign(Object.assign({},a.search),{fields:e})})}}function s(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(A((()=>{r({search:e.search})}),[e.search]),!e.visible)return null;const m=e.search.resourceType,d=n.types[m],p=null!==(t=a.search.fields)&&void 0!==t?t:[],v=function(e){const t=[],n=new Set,a=new Set;for(const r of Object.keys(e.properties))t.push(r),n.add(r.toLowerCase()),a.add(Ra(r));if(e.searchParams)for(const r of Object.keys(e.searchParams)){const e=Ra(r);n.has(r)||a.has(e)||(t.push(r),n.add(r),a.add(Ra(r)))}return t}(d).filter((e=>!(null==p?void 0:p.includes(e)))).sort();return S.createElement(ee,{title:"Fields",closeButtonLabel:"Close",opened:e.visible,onClose:e.onCancel},S.createElement("div",null,S.createElement("table",{style:{margin:"auto"}},S.createElement("thead",null,S.createElement("tr",null,S.createElement("th",{colSpan:2,align:"center"},"Available"),S.createElement("th",{colSpan:2,align:"center"},"Selected"))),S.createElement("tbody",null,S.createElement("tr",null,S.createElement("td",{colSpan:2,align:"center"},S.createElement("select",{ref:o,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"available"},v.map((e=>S.createElement("option",{key:e,value:e},Ra(e)))))),S.createElement("td",{colSpan:2,align:"center"},S.createElement("select",{ref:i,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&u()}(e),onDoubleClick:()=>{u()},"data-testid":"selected"},p.map((e=>S.createElement("option",{key:e,value:e},Ra(e)))))))),S.createElement("tfoot",null,S.createElement("tr",null,S.createElement("td",{align:"center"},S.createElement($,{compact:!0,variant:"outline",onClick:c},"Add")),S.createElement("td",{align:"center"},S.createElement($,{compact:!0,variant:"outline",onClick:u},"Remove")),S.createElement("td",{align:"center"},S.createElement($,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=a.search.fields)&&void 0!==e?e:[],l=null===(t=i.current)||void 0===t?void 0:t.value;if(l){const e=[...n],t=e.indexOf(l);s(e,t,t-1),r({search:Object.assign(Object.assign({},a.search),{fields:e})})}}},"Up")),S.createElement("td",{align:"center"},S.createElement($,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=a.search.fields)&&void 0!==e?e:[],l=null===(t=i.current)||void 0===t?void 0:t.value;if(l){const e=[...n],t=e.indexOf(l);s(e,t,t+1),r({search:Object.assign(Object.assign({},a.search),{fields:e})})}}},"Down")))))),S.createElement($,{onClick:()=>e.onOk(a.search)},"OK"))}function Fa(e){var t,a;const{resourceType:r,filter:l}=e,o=null===(a=null===(t=n.types[r])||void 0===t?void 0:t.searchParams)||void 0===a?void 0:a[l.code];if(o){if("reference"===o.type)return S.createElement(In,{value:{reference:l.value}});const e=y(r,o);if("_lastUpdated"===l.code||e.type===k.DATETIME)return S.createElement(S.Fragment,null,s(l.value))}return S.createElement(S.Fragment,null,l.value)}function Ma(e){var t;const n="filter-value";switch(y(e.resourceType,e.searchParam).type){case k.REFERENCE:return S.createElement(yn,{name:n,defaultValue:{reference:e.defaultValue},targetTypes:null===(t=e.searchParam)||void 0===t?void 0:t.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case k.BOOLEAN:return S.createElement(Q,{name:n,"data-testid":n,defaultChecked:"true"===e.defaultValue,onChange:t=>e.onChange(t.currentTarget.checked.toString())});case k.DATE:return S.createElement(q,{type:"date",name:n,"data-testid":n,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case k.DATETIME:return S.createElement(rn,{name:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return S.createElement(q,{type:"number",name:n,"data-testid":n,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case k.QUANTITY:return S.createElement(dn,{name:n,defaultValue:qa(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return S.createElement(q,{name:n,"data-testid":n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:t=>e.onChange(t.currentTarget.value),placeholder:"Search value"})}}function qa(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function _a(e){const[t,a]=I(JSON.parse(l(e.search))),[r,o]=I(-1),i=N(t);if(i.current=t,A((()=>{a(JSON.parse(l(e.search)))}),[e.search]),!e.visible)return null;const c=e.search.resourceType,u=n.types[c].searchParams,s=t.filters||[];return S.createElement(ee,{title:"Filters",closeButtonLabel:"Close",size:900,opened:e.visible,onClose:e.onCancel},S.createElement("div",{className:"medplum-filter-editor"},S.createElement("table",{className:"medplum-filter-editor-table"},S.createElement("colgroup",null,S.createElement("col",{style:{width:200}}),S.createElement("col",{style:{width:200}}),S.createElement("col",{style:{width:380}}),S.createElement("col",{style:{width:120}})),S.createElement("thead",null,S.createElement("tr",null,S.createElement("th",null,"Field"),S.createElement("th",null,"Operation"),S.createElement("th",null,"Value"),S.createElement("th",null,"Actions"))),S.createElement("tbody",null,s.map(((e,t)=>t===r?S.createElement(za,{key:`filter-${t}-${s.length}-input`,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const n=[...s];n[t]=e,a(la(i.current,n)),o(-1)},onCancel:()=>o(-1)}):S.createElement($a,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>o(t),onDelete:()=>a(sa(i.current,t))}))),S.createElement(za,{resourceType:c,searchParams:u,okText:"Add",onOk:function(e){a(ca(i.current,e.code,e.operator,e.value))}})))),S.createElement(F,{position:"right",mt:"xl"},S.createElement($,{onClick:()=>e.onOk(i.current)},"OK")))}function $a(e){const{filter:t}=e;return S.createElement("tr",null,S.createElement("td",null,Ra(t.code)),S.createElement("td",null,Da(t.operator)),S.createElement("td",null,S.createElement(Fa,{resourceType:e.resourceType,filter:t})),S.createElement("td",null,S.createElement($,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),S.createElement($,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function za(e){var t;const[n,a]=I(null!==(t=e.defaultValue)&&void 0!==t?t:{}),r=N(n);r.current=n;const l=e.searchParams[n.code],o=l&&Aa(l);return S.createElement("tr",null,S.createElement("td",null,S.createElement(M,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:e=>{return t=e.currentTarget.value,void a(Object.assign(Object.assign({},r.current),{code:t}));var t},data:Object.keys(e.searchParams).map((e=>({value:e,label:Ra(e)})))})),S.createElement("td",null,o&&S.createElement(M,{"data-testid":"filter-operation",defaultValue:n.operator,onChange:e=>{return t=e.currentTarget.value,void a(Object.assign(Object.assign({},r.current),{operator:t}));var t},data:["",...o.map((e=>({value:e,label:Da(e)})))]})),S.createElement("td",null,l&&n.operator&&S.createElement(Ma,{resourceType:e.resourceType,searchParam:l,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},r.current),{value:e}))}})),S.createElement("td",null,n.code&&n.operator&&n.value&&S.createElement($,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),a({})}},e.okText),e.onCancel&&S.createElement($,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}function Ua(e){var t;const[n,a]=I(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return S.createElement(ee,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},S.createElement("div",{style:{width:500}},S.createElement(ct,{onSubmit:r},S.createElement(Ma,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))),S.createElement($,{onClick:r},"OK"))}function Wa(e){if(!e.searchParams)return null;function t(t){e.onChange(t)}return 1===e.searchParams.length?S.createElement(Ka,{search:e.search,searchParam:e.searchParams[0],onSort:function(n,a){t(Sa(e.search,n.code,a))},onPrompt:function(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})},onChange:t,onClear:function(n){t(ia(e.search,n.code))}}):S.createElement(ae.Dropdown,null,e.searchParams.map((e=>S.createElement(ae.Item,{key:e.code},Ra(e.code)))))}function Ka(e){switch(e.searchParam.type){case"date":return S.createElement(Qa,Object.assign({},e));case"number":case"quantity":return S.createElement(Ha,Object.assign({},e));case"reference":return S.createElement(Ba,Object.assign({},e));case"string":case"token":case"uri":return S.createElement(Ga,Object.assign({},e));default:return S.createElement(S.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Qa(e){const{searchParam:t}=e,n=t.code;return S.createElement(ae.Dropdown,null,S.createElement(ae.Item,{icon:S.createElement(ye,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),S.createElement(ae.Item,{icon:S.createElement(be,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(Ce,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),S.createElement(ae.Item,{icon:S.createElement(Te,{size:14}),onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(ke,{size:14}),onClick:()=>e.onPrompt(t,b.ENDS_BEFORE)},"Before..."),S.createElement(ae.Item,{icon:S.createElement(Oe,{size:14}),onClick:()=>e.onPrompt(t,b.STARTS_AFTER)},"After..."),S.createElement(ae.Item,{icon:S.createElement(je,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Between..."),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(we,{size:14}),onClick:()=>e.onChange(pa(e.search,n))},"Tomorrow"),S.createElement(ae.Item,{icon:S.createElement(we,{size:14}),onClick:()=>e.onChange(da(e.search,n))},"Today"),S.createElement(ae.Item,{icon:S.createElement(we,{size:14}),onClick:()=>e.onChange(ma(e.search,n))},"Yesterday"),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(we,{size:14}),onClick:()=>e.onChange(Ea(e.search,n))},"Next Month"),S.createElement(ae.Item,{icon:S.createElement(we,{size:14}),onClick:()=>e.onChange(ga(e.search,n))},"This Month"),S.createElement(ae.Item,{icon:S.createElement(we,{size:14}),onClick:()=>e.onChange(ha(e.search,n))},"Last Month"),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(we,{size:14}),onClick:()=>e.onChange(ya(e.search,n))},"Year to date"),S.createElement(Ja,Object.assign({},e)))}function Ha(e){const{searchParam:t}=e;return S.createElement(ae.Dropdown,null,S.createElement(ae.Item,{icon:S.createElement(ye,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),S.createElement(ae.Item,{icon:S.createElement(be,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(Ce,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),S.createElement(ae.Item,{icon:S.createElement(Te,{size:14}),onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(Oe,{size:14}),onClick:()=>e.onPrompt(t,b.GREATER_THAN)},"Greater than..."),S.createElement(ae.Item,{icon:S.createElement(xe,{size:14}),onClick:()=>e.onPrompt(t,b.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),S.createElement(ae.Item,{icon:S.createElement(ke,{size:14}),onClick:()=>e.onPrompt(t,b.LESS_THAN)},"Less than..."),S.createElement(ae.Item,{icon:S.createElement(xe,{size:14}),onClick:()=>e.onPrompt(t,b.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),S.createElement(Ja,Object.assign({},e)))}function Ba(e){const{searchParam:t}=e;return S.createElement(ae.Dropdown,null,S.createElement(ae.Item,{icon:S.createElement(Ce,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),S.createElement(ae.Item,{icon:S.createElement(Te,{size:14}),onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),S.createElement(Ja,Object.assign({},e)))}function Ga(e){const{searchParam:t}=e;return S.createElement(ae.Dropdown,null,S.createElement(ae.Item,{icon:S.createElement(ye,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort A to Z"),S.createElement(ae.Item,{icon:S.createElement(be,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Z to A"),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(Ce,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),S.createElement(ae.Item,{icon:S.createElement(Te,{size:14}),onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(Se,{size:14}),onClick:()=>e.onPrompt(t,b.CONTAINS)},"Contains..."),S.createElement(ae.Item,{icon:S.createElement(Ie,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Does not contain..."),S.createElement(Ja,Object.assign({},e)))}function Ja(e){const{searchParam:t}=e,n=t.code;return S.createElement(S.Fragment,null,S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(Ne,{size:14}),onClick:()=>e.onChange(Oa(e.search,n))},"Missing"),S.createElement(ae.Item,{icon:S.createElement(Ve,{size:14}),onClick:()=>e.onChange(Oa(e.search,n,!1))},"Not missing"),S.createElement(ae.Divider,null),S.createElement(ae.Item,{icon:S.createElement(Ae,{size:14}),onClick:()=>e.onClear(t)},"Clear filters"))}class Ya extends Event{constructor(e){super("change"),this.definition=e}}class Xa extends Event{constructor(e){super("load"),this.response=e}}class Za extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}const er=le((e=>({th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs}px ${e.spacing.md}px`,"&:hover":{backgroundColor:"dark"===e.colorScheme?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}})));function tr(e){var t,a;const{classes:r}=er(),l=Ge(),[o,i]=I(!1),[c,u]=I(),{search:s,onLoad:m}=e,[d,p]=I({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=N(d);function h(t){e.onChange&&e.onChange(new Ya(t))}function g(t,n){Xe(t.target)||2!==t.button&&(Ye(t),1!==t.button&&e.onClick&&e.onClick(new Za(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Za(n,t)))}v.current=d,A((()=>{u(void 0),l.search(s.resourceType,O(Object.assign(Object.assign({},s),{total:"accurate",fields:void 0}))).then((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:e})),m&&m(new Xa(e))})).catch((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),u(e)}))}),[l,s,m]),A((()=>{i(!1),l.requestSchema(e.search.resourceType).then((()=>i(!0))).catch(console.log)}),[l,e.search.resourceType]);if(!(o&&(null===(t=null==n?void 0:n.types)||void 0===t?void 0:t[e.search.resourceType])))return S.createElement(Z,null);const E=e.checkboxesEnabled,f=function(e){const t=e.resourceType,n=[];for(const a of e.fields||["id","_lastUpdated"])n.push(na(t,a));return n}(s),y=s.resourceType,b=d.searchResponse,T=null==b?void 0:b.entry,k=null==T?void 0:T.map((e=>e.resource)),j="subtle",w="gray",x=16,V=window.innerWidth<768;return S.createElement("div",{className:"medplum-search-control","data-testid":"search-control"},!e.hideToolbar&&S.createElement(F,{position:"apart",mb:"xl"},S.createElement(F,{spacing:2},S.createElement($,{compact:!0,variant:j,color:w,leftIcon:S.createElement(De,{size:x}),onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),S.createElement($,{compact:!0,variant:j,color:w,leftIcon:S.createElement(Re,{size:x}),onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&S.createElement($,{compact:!0,variant:j,color:w,leftIcon:S.createElement(Pe,{size:x}),onClick:e.onNew},"New..."),!V&&e.onExport&&S.createElement($,{compact:!0,variant:j,color:w,leftIcon:S.createElement(Le,{size:x}),onClick:e.onExport},"Export..."),!V&&e.onDelete&&S.createElement($,{compact:!0,variant:j,color:w,leftIcon:S.createElement(fe,{size:x}),onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),!V&&e.onBulk&&S.createElement($,{compact:!0,variant:j,color:w,leftIcon:S.createElement(Fe,{size:x}),onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),b&&S.createElement(F,{spacing:2},S.createElement("span",{className:"medplum-search-summary"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(s,b.total),"-",function(e,t){var n,a;return Math.min(t,((null!==(n=e.offset)&&void 0!==n?n:0)+1)*(null!==(a=e.count)&&void 0!==a?a:C))}(s,b.total)," of"," ",null===(a=b.total)||void 0===a?void 0:a.toLocaleString()))),S.createElement(ne,null,S.createElement("thead",null,S.createElement("tr",null,E&&S.createElement("th",{className:"medplum-search-icon-cell"},S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=v.current;if(!(null===(e=n.searchResponse)||void 0===e?void 0:e.entry)||0===n.searchResponse.entry.length)return!1;for(const e of n.searchResponse.entry)if((null===(t=e.resource)||void 0===t?void 0:t.id)&&!n.selected[e.resource.id])return!1;return!0}(),onChange:e=>function(e){var t;e.stopPropagation();const n=e.target.checked,a={},r=null===(t=v.current)||void 0===t?void 0:t.searchResponse;n&&(null==r?void 0:r.entry)&&r.entry.forEach((e=>{var t;(null===(t=e.resource)||void 0===t?void 0:t.id)&&(a[e.resource.id]=!0)})),p(Object.assign(Object.assign({},v.current),{selected:a}))}(e)})),f.map((t=>S.createElement("th",{key:t.name},S.createElement(ae,{shadow:"md",width:240,position:"bottom-end"},S.createElement(ae.Target,null,S.createElement(B,{className:r.control},S.createElement(F,{position:"apart",noWrap:!0},S.createElement(U,{weight:500,size:"sm"},Ra(t.name)),S.createElement(oe,{className:r.icon},S.createElement(Me,{size:14,stroke:1.5}))))),S.createElement(Wa,{search:e.search,searchParams:t.searchParams,onPrompt:(e,t)=>{p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{h(e)}})))))),!e.hideFilters&&S.createElement("tr",null,E&&S.createElement("th",{className:"filters medplum-search-icon-cell"}),f.map((t=>S.createElement("th",{key:t.name,className:"filters"},t.searchParams&&S.createElement(ar,{resourceType:y,searchParams:t.searchParams,filters:e.search.filters})))))),S.createElement("tbody",null,null==k?void 0:k.map((e=>e&&S.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>g(t,e),onAuxClick:t=>g(t,e)},E&&S.createElement("td",{className:"medplum-search-icon-cell"},S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!d.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},v.current.selected);n?a[t]=!0:delete a[t],p(Object.assign(Object.assign({},v.current),{selected:a}))}(t,e.id)})),f.map((t=>S.createElement("td",{key:t.name},Pa(e,t))))))))),0===(null==k?void 0:k.length)&&S.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),void 0!==(null==b?void 0:b.total)&&b.total>0&&S.createElement(oe,{m:"md",p:"md"},S.createElement(ie,{page:rr(s),total:lr(s,b.total),onChange:e=>h(xa(s,e)),getItemAriaLabel:e=>{switch(e){case"prev":return"Previous page";case"next":return"Next page";default:return}}})),c&&S.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),S.createElement(La,{search:e.search,visible:v.current.fieldEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))}}),S.createElement(_a,{search:e.search,visible:v.current.filterEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))}}),S.createElement(Ua,{visible:v.current.filterDialogVisible,title:"Input",resourceType:y,searchParam:d.filterDialogSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(ca(e.search,t.code,t.operator,t.value)),p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))}}))}const nr=S.memo(tr);function ar(e){var t;const n=(null!==(t=e.filters)&&void 0!==t?t:[]).filter((t=>e.searchParams.find((e=>e.code===t.code))));return 0===n.length?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,n.map(((t,a)=>S.createElement("div",{key:`filter-${a}-${n.length}`},Da(t.operator)," ",S.createElement(Fa,{resourceType:e.resourceType,filter:t})))))}function rr(e){return Math.floor((e.offset||0)/(e.count||C))+1}function lr(e,t){const n=e.count||C;return Math.ceil(t/n)}function or(e){var t,n,a,r,l;const o=Ge(),[i,c]=I(),[u,s]=I(),{query:m,fields:d}=e,[p,v]=I(),[h,g]=I({}),E=N();E.current=p;const f=N({});function y(t,n){Xe(t.target)||(Ye(t),1!==t.button&&e.onClick&&e.onClick(new Za(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Za(n,t)))}f.current=h,A((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),A((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))})).catch(console.log)}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return S.createElement(Z,null);const b=e.checkboxesEnabled;return S.createElement("div",{className:"medplum-search-control",onContextMenu:e=>Ye(e),"data-testid":"search-control"},S.createElement(ne,null,S.createElement("thead",null,S.createElement("tr",null,b&&S.createElement("th",{className:"medplum-search-icon-cell"},S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=E.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!f.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const a=e.target.checked,r={},l=null===(n=null===(t=E.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;a&&l&&l.forEach((e=>{(null==e?void 0:e.id)&&(r[e.id]=!0)})),g(r)}(e)})),d.map((e=>S.createElement("th",{key:e.name},e.name))))),S.createElement("tbody",null,null===(a=null===(n=null==p?void 0:p.data)||void 0===n?void 0:n.ResourceList)||void 0===a?void 0:a.map((e=>e&&S.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&S.createElement("td",{className:"medplum-search-icon-cell"},S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!h[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},f.current);n?a[t]=!0:delete a[t],g(a)}(t,e.id)})),d.map((t=>S.createElement("td",{key:t.name},S.createElement(ta,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(l=null===(r=null==p?void 0:p.data)||void 0===r?void 0:r.ResourceList)||void 0===l?void 0:l.length)&&S.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&S.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&S.createElement($,{onClick:()=>e.onBulk(Object.keys(f.current))},"Bulk..."))}const ir=S.memo(or),cr=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function ur(e){return S.createElement(Qn,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:cr.map((t=>({request:{method:"GET",url:t.replaceAll("$",E(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",status:"completed",subject:d(e),sender:d(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",status:"completed",subject:d(e),operator:d(t),issued:(new Date).toISOString(),content:n})})}function sr(e){const t=Ge(),n=St(e.value),[a,r]=I(void 0),[l,o]=I(),[i,c]=I(),[u,s]=I();function m(){c(void 0)}function d(){o(void 0)}const p=N();if(p.current=u,A((()=>{t.requestSchema("PlanDefinition").then(r).catch(console.log)}),[t]),A((()=>{var e;return s((e=null!=n?n:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:Cr(e.action)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),!a||!u)return null;function v(e,t){s(Object.assign(Object.assign({},p.current),{[e]:t}))}return S.createElement("div",{className:"medplum-questionnaire-builder"},S.createElement(ct,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},S.createElement(q,{label:"Plan Title",defaultValue:u.title,onChange:e=>v("title",e.currentTarget.value)}),S.createElement(mr,{actions:u.action||[],selectedKey:l,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>v("action",e)}),S.createElement($,{type:"submit"},"Save")))}function mr(e){const t=N();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,S.createElement("div",{className:"section"},e.actions.map((a=>S.createElement("div",{key:a.id},S.createElement(dr,{action:a,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n,onRemove:()=>{return n=a,void e.onChange(t.current.filter((e=>e!==n)));var n}})))),S.createElement("div",{className:"bottom-actions"},S.createElement("a",{href:"#",onClick:n=>{var a;Ye(n),a={id:br()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function dr(e){const{action:t}=e,n=function(e){var t,n,a;if(null===(t=e.definitionCanonical)||void 0===t?void 0:t.startsWith("Schedule"))return"appointment";if(null===(n=e.definitionCanonical)||void 0===n?void 0:n.startsWith("Questionnaire/"))return"questionnaire";if(null===(a=e.definitionCanonical)||void 0===a?void 0:a.startsWith("ActivityDefinition/"))return"task";return}(t),a=e.selectedKey===e.action.id,r=e.hoverKey===e.action.id;const l=a?"section editing":r?"section hovering":"section";return S.createElement("div",{"data-testid":t.id,className:l,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){Ye(t),e.setHoverKey(e.action.id)}},a?S.createElement(hr,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):S.createElement(vr,{action:t,actionType:n}),S.createElement("div",{className:"bottom-actions"},S.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const pr={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function vr(e){const{action:t,actionType:n}=e,[a,r]=fr(t);return S.createElement("div",null,S.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&S.createElement("div",null,S.createElement(Qt,{value:{reference:t.definitionCanonical}})),a&&S.createElement("div",null,S.createElement(Bt,{property:pr,propertyType:r,value:a})))}function hr(e){const{action:t}=e,[n,a]=I(e.actionType);function r(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return S.createElement(S.Fragment,null,S.createElement(q,{name:`actionTitle-${t.id}`,label:"Title",defaultValue:t.title,onChange:e=>r("title",e.currentTarget.value)}),S.createElement(q,{name:`actionDescription-${t.id}`,label:"Description",defaultValue:t.description,onChange:e=>r("description",e.currentTarget.value)}),S.createElement(M,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${t.id}`,defaultValue:n,onChange:e=>a(e.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),t.action&&t.action.length>0&&S.createElement(mr,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>r("action",e)}),(()=>{switch(n){case"appointment":return S.createElement(gr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return S.createElement(gr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return S.createElement(gr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return S.createElement(gr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),S.createElement("p",null,"Timing"),S.createElement("p",null,"When the action should take place."),S.createElement(Er,{name:"timing-"+t.id,action:t,onChange:e.onChange}))}function gr(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return S.createElement(En,{name:t,resourceType:e.resourceType,defaultValue:a,loadOnFocus:!0,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:E(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}})}function Er(e){const t=e.action,n="timing",[a,r]=fr(t);return S.createElement(On,{property:pr,name:"timing[x]",defaultValue:a,defaultPropertyType:r,onChange:(a,r)=>{e.onChange(Nt(t,n,null!=r?r:n,pr,a))}})}function fr(e){return Gt({type:"PlanDefinitionAction",value:e},"timing")}let yr=1;function br(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(yr=Math.max(yr,t+1))}return e}return"id-"+yr++}function Cr(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:br(e.id),action:Cr(e.action)})))}var Tr;function kr(e){return"choice"===e.type||"open-choice"===e.type}function Or(e){const t=Ge(),n=t.getProfile(),[a,r]=I(),l=St(e.questionnaire),[o,i]=I(),[c,u]=I({});return A((()=>{t.requestSchema("Questionnaire").then((()=>t.requestSchema("QuestionnaireResponse"))).then(r).catch(console.log)}),[t]),A((()=>{i(l?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:E(e),item:Nr(e.item)}}(l):void 0)}),[l]),a&&l?S.createElement(ct,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:E(l),subject:e.subject,source:d(n),authored:(new Date).toISOString()}))}},l.title&&S.createElement("h1",null,l.title),l.item&&S.createElement(jr,{items:l.item,answers:c,onChange:function(e){const t={resourceType:"QuestionnaireResponse",item:e};i(t),u(w(t))}}),S.createElement($,{type:"submit"},e.submitButtonText||"OK")):null}function jr(e){const[t,n]=I(Nr(e.items));function a(a,r){const l=t.slice();l[a]=r,n(l),e.onChange(l)}return S.createElement(S.Fragment,null,e.items.map(((t,n)=>{if(!Dr(t,e.answers))return null;if(t.type===Tr.display)return S.createElement("p",{key:t.linkId},t.text);if(t.type===Tr.group)return S.createElement(wr,{key:t.linkId,item:t,answers:e.answers,onChange:e=>a(n,e)});if(t.type===Tr.boolean){const e=t.initial&&t.initial.length>0?t.initial[0]:void 0;return S.createElement(Ot,{key:t.linkId,title:t.text,htmlFor:t.linkId},S.createElement(Q,{id:t.linkId,name:t.linkId,defaultChecked:null==e?void 0:e.valueBoolean,onChange:e=>a(n,{linkId:t.linkId,text:t.text,answer:[{valueBoolean:e.currentTarget.checked}]})}))}return S.createElement(wt,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},S.createElement(wr,{item:t,answers:e.answers,onChange:e=>a(n,e)}))})))}function wr(e){const t=e.item,n=t.type;if(!n)return null;const a=t.linkId;if(!a)return null;const r=t.initial&&t.initial.length>0?t.initial[0]:void 0;function l(n){e.onChange({linkId:t.linkId,text:t.text,answer:[n]})}switch(n){case Tr.group:return S.createElement("div",null,S.createElement("h3",null,t.text),t.item&&S.createElement(jr,{items:t.item,answers:e.answers,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case Tr.boolean:return S.createElement(Q,{id:a,name:a,defaultChecked:null==r?void 0:r.valueBoolean,onChange:e=>l({valueBoolean:e.currentTarget.checked})});case Tr.decimal:return S.createElement(q,{type:"number",step:"any",id:a,name:a,defaultValue:null==r?void 0:r.valueDecimal,onChange:e=>l({valueDecimal:e.currentTarget.valueAsNumber})});case Tr.integer:return S.createElement(q,{type:"number",step:1,id:a,name:a,defaultValue:null==r?void 0:r.valueInteger,onChange:e=>l({valueInteger:e.currentTarget.valueAsNumber})});case Tr.date:return S.createElement(q,{type:"date",id:a,name:a,defaultValue:null==r?void 0:r.valueDate,onChange:e=>l({valueDate:e.currentTarget.value})});case Tr.dateTime:return S.createElement(rn,{name:a,defaultValue:null==r?void 0:r.valueDateTime,onChange:e=>l({valueDateTime:e})});case Tr.time:return S.createElement(q,{type:"time",id:a,name:a,defaultValue:null==r?void 0:r.valueTime,onChange:e=>l({valueTime:e.currentTarget.value})});case Tr.string:case Tr.url:return S.createElement(q,{id:a,name:a,defaultValue:null==r?void 0:r.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case Tr.text:return S.createElement(te,{id:a,name:a,defaultValue:null==r?void 0:r.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case Tr.attachment:return S.createElement(nt,{name:a,defaultValue:null==r?void 0:r.valueAttachment,onChange:e=>l({valueAttachment:e})});case Tr.reference:return S.createElement(yn,{name:a,defaultValue:null==r?void 0:r.valueReference,onChange:e=>l({valueReference:e})});case Tr.quantity:return S.createElement(dn,{name:a,defaultValue:null==r?void 0:r.valueQuantity,onChange:e=>l({valueQuantity:e})});case Tr.choice:case Tr.openChoice:return function(e){var t;return!!(null===(t=e.extension)||void 0===t?void 0:t.some((e=>{var t,n,a;return"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===(null===(a=null===(n=null===(t=e.valueCodeableConcept)||void 0===t?void 0:t.coding)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code)})))}(t)?S.createElement(xr,{name:a,item:t,initial:r,onChangeAnswer:l}):S.createElement(Ir,{name:a,item:t,initial:r,onChangeAnswer:l})}return null}function xr(e){const{name:n,item:a,initial:r}=e,l=m({type:"QuestionnaireItemInitial",value:r},"value"),o=[""];if(a.answerOption)for(const e of a.answerOption){const t=m({type:"QuestionnaireItemAnswerOption",value:e},"value");o.push(Sr(t))}return S.createElement(M,{id:n,name:n,className:"medplum-select",onChange:n=>{const r=n.currentTarget.selectedIndex;if(0===r)return void e.onChangeAnswer({});const l=a.answerOption[r-1],o=m({type:"QuestionnaireItemAnswerOption",value:l},"value"),i="value"+t(o.type);e.onChangeAnswer({[i]:o.value})},defaultValue:Sr(l),data:o})}function Sr(e){if(e)return"CodeableConcept"===e.type?e.value.coding[0].display:"Coding"===e.type?e.value.display:e.value.toString()}function Ir(e){const{name:a,item:r,initial:o,onChangeAnswer:i}=e,c=n.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=m({type:"QuestionnaireItemInitial",value:o},"value");return S.createElement(S.Fragment,null,r.answerOption&&r.answerOption.map(((e,n)=>{const r=m({type:"QuestionnaireItemAnswerOption",value:e},"value"),o="value"+t(r.type),s=`${a}-option-${n}`;return S.createElement("div",{key:s,className:"medplum-questionnaire-option-row"},S.createElement("div",{className:"medplum-questionnaire-option-checkbox"},S.createElement("input",{type:"radio",id:s,name:a,value:r.value,defaultChecked:u&&l(r)===l(u),onChange:()=>i({[o]:r.value})})),S.createElement("div",null,S.createElement("label",{htmlFor:s},S.createElement(Bt,{property:c,propertyType:r.type,value:r.value}))))})))}function Nr(e){var t;return null!==(t=null==e?void 0:e.map(Vr))&&void 0!==t?t:[]}function Vr(e){var t,n;return{linkId:e.linkId,text:e.text,item:Nr(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Ar))&&void 0!==n?n:[]}}function Ar(e){return Object.assign({},e)}function Dr(e,t){if(!e.enableWhen)return!0;const n=e.enableBehavior||"any";for(const a of e.enableWhen){const e=m({type:"QuestionnaireItemEnableWhen",value:a},"answer[x]"),r=m({type:"QuestionnaireResponseItemAnswer",value:t[a.question]},"value[x]"),l=j(e,r);if("any"===n&&l)return!0;if("all"===n&&!l)return!1}return"any"!==n}function Rr(e){const t=Ge(),n=St(e.questionnaire),[a,r]=I(),[l,o]=I(),[i,c]=I(),[u,s]=I();function m(){s(void 0)}function d(){c(void 0)}return A((()=>{t.requestSchema("Questionnaire").then(r).catch(console.log)}),[t]),A((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||_r(),item:$r(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&l?S.createElement("div",{className:"medplum-questionnaire-builder"},S.createElement(ct,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(l)},S.createElement(Pr,{item:l,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),S.createElement($,{type:"submit"},"Save"))):null}function Pr(e){var t;const n=e.item,a=e.item,r="resourceType"in e.item,l=r||a.type===Tr.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=N();function s(t){var n;const a=u.current;e.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((e=>e.id===t.id?t:e))}))}function m(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:[...null!==(a=null===(n=e.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],t]}))}function d(t,n){e.onChange(Object.assign(Object.assign({},u.current),{[t]:n}))}u.current=e.item;const p=i?"section editing":c?"section hovering":"section";return S.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){Ye(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){Ye(t),e.setHoverKey(e.item.id)}},i?S.createElement(S.Fragment,null,r&&S.createElement("div",null,S.createElement(q,{defaultValue:n.title,onChange:e=>d("title",e.currentTarget.value)})),!l&&S.createElement("div",null,S.createElement(M,{defaultValue:a.type,onChange:e=>d("type",e.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})),!r&&S.createElement(te,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e.currentTarget.value)}),kr(a)&&S.createElement(Lr,{options:a.answerOption,onChange:e=>d("answerOption",e)})):S.createElement(S.Fragment,null,n.title&&S.createElement("h1",null,n.title),a.text&&S.createElement("p",null,a.text),!l&&S.createElement(wr,{item:a,answers:{},onChange:()=>{}})),a.item&&a.item.map((t=>S.createElement("div",{key:t.id},S.createElement(Pr,{item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:s,onRemove:()=>function(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:null===(a=null===(n=e.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((e=>e!==t))}))}(t)})))),!l&&S.createElement("div",{className:"top-actions"},i?S.createElement(q,{defaultValue:a.linkId,onChange:e=>d("linkId",e.currentTarget.value)}):S.createElement("div",null,o)),S.createElement("div",{className:"bottom-actions"},l&&S.createElement(S.Fragment,null,S.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:_r(),linkId:qr("q"),type:"string",text:"Question"})}},"Add item"),S.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:_r(),linkId:qr("g"),type:"group",text:"Group"})}},"Add group")),!r&&S.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Lr(e){var t;const a=n.types.QuestionnaireItemAnswerOption.properties["value[x]"],r=null!==(t=e.options)&&void 0!==t?t:[];return S.createElement("div",null,r.map((t=>{const[n,l]=Gt({type:"QuestionnaireItemAnswerOption",value:t},"value");return S.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(On,{key:t.id,name:"value[x]",property:a,defaultPropertyType:l,defaultValue:n,onChange:(n,a)=>{const l=[...r],o=l.findIndex((e=>e.id===t.id));l[o]={id:t.id,[a]:n},e.onChange(l)}})),S.createElement("div",null,S.createElement("a",{href:"#",onClick:n=>{Ye(n),e.onChange(r.filter((e=>e.id!==t.id)))}},"Remove")))})),S.createElement("a",{href:"#",onClick:t=>{Ye(t),e.onChange([...r,{id:_r()}])}},"Add choice"))}!function(e){e.group="group",e.display="display",e.question="question",e.boolean="boolean",e.decimal="decimal",e.integer="integer",e.date="date",e.dateTime="dateTime",e.time="time",e.string="string",e.text="text",e.url="url",e.choice="choice",e.openChoice="open-choice",e.attachment="attachment",e.reference="reference",e.quantity="quantity"}(Tr||(Tr={}));let Fr=1,Mr=1;function qr(e){return e+Fr++}function _r(){return"id-"+Mr++}function $r(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&(Mr=Math.max(Mr,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&(Fr=Math.max(Fr,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||_r(),item:$r(e.item),answerOption:zr(e.answerOption)})))}function zr(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||_r()})))}const Ur={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Wr(e){return S.createElement(ce,{color:Ur[e.status]},e.status)}function Kr(e){var t;const n=Ge(),a=St(e.value),[r,l]=I(!1),[o,i]=I();return A((()=>{a&&!r&&(n.executeBatch(function(e){var t;const n=[];if(e.action)for(const a of e.action)(null===(t=a.resource)||void 0===t?void 0:t.reference)&&n.push({request:{method:"GET",url:a.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:n}}(a)).then(i).catch(console.log),l(!0))}),[n,a,r]),a&&o?S.createElement("div",{className:"medplum-request-group"},null===(t=a.action)||void 0===t?void 0:t.map(((t,n)=>{var a,r,l,i,c,u;const m=t.resource&&function(e){for(const t of null==o?void 0:o.entry)if(t.resource&&e.reference===E(t.resource))return t.resource;return}(t.resource),d=null===(r=null===(a=null==m?void 0:m.input)||void 0===a?void 0:a[0])||void 0===r?void 0:r.valueReference,p=null===(i=null===(l=null==m?void 0:m.output)||void 0===l?void 0:l[0])||void 0===i?void 0:i.valueReference;return S.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},S.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==m?void 0:m.status)?"🗹":"☐"),S.createElement("div",{className:"medplum-request-group-task-details"},S.createElement("div",{className:"medplum-request-group-task-title"},t.title),t.description&&S.createElement("div",null,t.description),S.createElement("div",null,"Last edited by ",S.createElement(In,{value:null===(c=null==m?void 0:m.meta)||void 0===c?void 0:c.author})," on ",s(null===(u=null==m?void 0:m.meta)||void 0===u?void 0:u.lastUpdated)),S.createElement("div",null,"Status: ",S.createElement(Wr,{status:(null==m?void 0:m.status)||"unknown"}))),S.createElement("div",{className:"medplum-request-group-task-actions"},d&&!p&&S.createElement($,{onClick:()=>e.onStart(m,d)},"Start"),d&&p&&S.createElement($,{onClick:()=>e.onEdit(m,d,p)},"Edit")))}))):null}function Qr(e,t){return function(e,t,n){const a=[];let r=e;r.snake&&(r=r.prev);for(;r&&r.prev&&r.prev.j>=0;){const e=r.i,l=r.j;r=r.prev;const o=r.i,i=r.j,c={position:o,lines:t.slice(o,e)},u={position:i,lines:n.slice(i,l)};let s;s=0===c.lines.length&&u.lines.length>0?"insert":c.lines.length>0&&0===u.lines.length?"delete":"change",a.push({original:c,revised:u,type:s}),r.snake&&(r=r.prev)}return a}(function(e,t){const n=e.length,a=t.length,r=n+a+1,l=1+2*r,o=l/2|0,i=new Array(l);i[o+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<r;l++){for(let r=-l;r<=l;r+=2){const c=o+r,u=c-1,s=i[c+1],m=i[u];let d,p=0;r===-l||r!==l&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let v=p-r,h={i:p,j:v,prev:Hr(d),snake:!1};for(;p<n&&v<a&&e[p]===t[v];)p++,v++;if(p>h.i&&(h={i:p,j:v,prev:h,snake:!0}),i[c]=h,p>=n&&v>=a)return i[c]}i[o+l-1]=void 0}return}(e,t),e,t)}function Hr(e){return e&&!e.snake&&e.prev?e.prev:e}function Br(e){const t=e.entry.filter((e=>!!e.resource)).map((e=>{var t;return{meta:null===(t=e.resource)||void 0===t?void 0:t.meta,lines:l(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),n=t[0].lines.map((e=>({id:t[0].meta.versionId,meta:t[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=Qr(t[n-1].lines,t[n].lines);for(const r of a){const a=r.original.position,l=r.original.lines,o=r.revised.lines;if("delete"!==r.type&&"change"!==r.type||e.splice(a,l.length),"insert"===r.type||"change"===r.type)for(let l=0;l<r.revised.lines.length;l++)e.splice(a+l,0,{id:t[n].meta.versionId,meta:t[n].meta,value:o[l],span:1})}}}(n,t),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(n),n}function Gr(e){var t,n;const a=Ge(),[r,l]=I(e.history);if(A((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then(l).catch(console.log)}),[a,e.history,e.resourceType,e.id]),!r)return S.createElement("div",null,"Loading...");const o=null===(n=null===(t=r.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=Br(r);return S.createElement("div",{className:"medplum-blame-container"},S.createElement("table",{className:"medplum-blame"},S.createElement("tbody",null,i.map(((e,t)=>S.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&S.createElement("td",{className:"details",rowSpan:e.span},S.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},S.createElement(Nn,{value:e.meta.author,link:!0}),S.createElement(Kt,{to:Jr(o,e.meta.versionId)},Yr(e.meta.lastUpdated)))),S.createElement("td",{className:"line-number"},t+1),S.createElement("td",{className:"line"},S.createElement("pre",{className:"line-pre"},e.value))))))))}function Jr(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function Yr(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return Xr(n,"year");const a=Math.floor(t/2592e3);if(a>0)return Xr(a,"month");const r=Math.floor(t/86400);if(r>0)return Xr(r,"day");const l=Math.floor(t/3600);if(l>0)return Xr(l,"hour");const o=Math.floor(t/60);return o>0?Xr(o,"minute"):Xr(t,"second")}function Xr(e,t){return`${e} ${1===e?t:t+"s"} ago`}function Zr(e){let t=e.original,n=e.revised;e.ignoreMeta&&(t=Object.assign(Object.assign({},t),{meta:void 0}),n=Object.assign(Object.assign({},n),{meta:void 0}));const a=Qr(l(t,!0).match(/[^\r\n]+/g),l(n,!0).match(/[^\r\n]+/g));return S.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>S.createElement(el,{key:"delta"+t,delta:e}))))}function el(e){return S.createElement(S.Fragment,null,"...",S.createElement("br",null),e.delta.original.lines.length>0&&S.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&S.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",S.createElement("br",null))}function tl(e){var t;const n=Ge(),[a,r]=I(e.history);return A((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then(r).catch(console.log)}),[n,e.history,e.resourceType,e.id]),a?S.createElement(ne,{withBorder:!0,withColumnBorders:!0},S.createElement("thead",null,S.createElement("tr",null,S.createElement("th",null,"Author"),S.createElement("th",null,"Date"),S.createElement("th",null,"Version"))),S.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map(((e,t)=>S.createElement(nl,{key:"entry-"+t,entry:e}))))):S.createElement("div",null,"Loading...")}function nl(e){var t,n,a;const{response:r,resource:l}=e.entry;return l?S.createElement("tr",null,S.createElement("td",null,S.createElement(Nn,{value:null===(t=l.meta)||void 0===t?void 0:t.author,link:!0})),S.createElement("td",null,s(null===(n=l.meta)||void 0===n?void 0:n.lastUpdated)),S.createElement("td",null,S.createElement(Kt,{to:al(l)},null===(a=l.meta)||void 0===a?void 0:a.versionId))):S.createElement("tr",null,S.createElement("td",{colSpan:3},x(null==r?void 0:r.outcome)))}function al(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function rl(e){const{onChangeMonth:t,onClick:n}=e,[a,r]=I(ll);function l(e){r((n=>{const a=new Date(n.getTime());return a.setMonth(n.getMonth()+e),t(a),a}))}const o=L((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),a=[];let r=[];for(let e=0;e<n.getDay();e++)r.push(void 0);for(;n.getMonth()===e.getMonth();)r.push({date:new Date(n.getTime()),available:ol(n,t)}),6===n.getDay()&&(a.push(r),r=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)r.push(void 0);a.push(r)}return a}(a,e.slots)),[a,e.slots]);return S.createElement("div",null,S.createElement(F,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},S.createElement("p",{style:{flex:1}},(i=a).toLocaleString("default",{month:"long"})+" "+i.getFullYear()),S.createElement(F,{position:"right",spacing:"xs"},S.createElement($,{variant:"outline","aria-label":"Previous month",onClick:()=>l(-1)},"<"),S.createElement($,{variant:"outline","aria-label":"Next month",onClick:()=>l(1)},">"))),S.createElement("table",{className:"medplum-calendar-table"},S.createElement("thead",null,S.createElement("tr",null,S.createElement("th",null,"SUN"),S.createElement("th",null,"MON"),S.createElement("th",null,"TUE"),S.createElement("th",null,"WED"),S.createElement("th",null,"THU"),S.createElement("th",null,"FRI"),S.createElement("th",null,"SAT"))),S.createElement("tbody",null,o.map(((e,t)=>S.createElement("tr",{key:"week-"+t},e.map(((e,t)=>S.createElement("td",{key:"day-"+t},e&&S.createElement($,{disabled:!e.available,onClick:()=>n(e.date)},e.date.getDate()))))))))));var i}function ll(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function ol(e,t){for(const n of t){const t=new Date(n.start);if(t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())return!0}return!1}function il(e){var t;const n=Ge(),a=St(e.schedule),r=St(e.questionnaire),[l,o]=I();N().current=l;const[i,c]=I(ll()),[u,s]=I(),[m,d]=I(),[p,v]=I();if(A((()=>{a?(o([]),n.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",E(a)],["start","gt"+cl(i)],["start","lt"+ul(i)]])).then(o).catch(console.log)):o(void 0)}),[n,a,i]),!a||!l||!r)return null;const h=null===(t=a.actor)||void 0===t?void 0:t[0];return S.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},S.createElement("div",{className:"medplum-calendar-info-pane"},h&&S.createElement(gn,{value:h,size:"xl"}),h&&S.createElement(U,{size:"xl",weight:500},S.createElement(In,{value:h})),S.createElement("p",null,"1 hour"),u&&S.createElement("p",null,u.toLocaleDateString()),m&&S.createElement("p",null,ml(new Date(m.start)))),S.createElement("div",{className:"medplum-calendar-selection-pane"},!u&&S.createElement("div",null,S.createElement("h3",null,"Select date"),S.createElement(rl,{slots:l,onChangeMonth:c,onClick:s})),u&&!m&&S.createElement("div",null,S.createElement("h3",null,"Select time"),S.createElement(z,null,l.map((e=>{const t=new Date(e.start);return t.getTime()>u.getTime()&&t.getTime()<u.getTime()+864e5&&S.createElement("div",{key:e.id},S.createElement($,{variant:"outline",style:{width:150},onClick:()=>d(e)},ml(t)))})))),u&&m&&!p&&S.createElement(Or,{questionnaire:r,submitButtonText:"Next",onSubmit:v}),u&&m&&p&&S.createElement("div",null,S.createElement("h3",null,"You're all set!"),S.createElement("p",null,"Check your email for a calendar invite."))))}function cl(e){return sl(e.getTime())}function ul(e){return sl(e.getTime()+26784e5)}function sl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function ml(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function dl(e){return S.createElement(Qn,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${E(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${E(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${E(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${E(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",status:"completed",basedOn:[d(e)],subject:e.subject,sender:d(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",status:"completed",basedOn:[d(e)],subject:e.subject,operator:d(t),issued:(new Date).toISOString(),content:n})})}export{_e as AddressDisplay,Ue as AddressInput,Ke as AttachmentArrayDisplay,tt as AttachmentArrayInput,et as AttachmentButton,nt as AttachmentInput,Sn as BackboneElementInput,Ot as CheckboxFormSection,en as CodeInput,Pt as CodeableConceptDisplay,Zt as CodeableConceptInput,Ft as ContactDetailDisplay,an as ContactDetailInput,Lt as ContactPointDisplay,nn as ContactPointInput,rn as DateTimeInput,Zn as DefaultResourceTimeline,Vt as DescriptionList,At as DescriptionListEntry,Vn as DiagnosticReportDisplay,at as Document,jn as ElementDefinitionInputSelector,wn as ElementDefinitionTypeInput,ea as EncounterTimeline,qn as ErrorBoundary,or as FhirPathTable,ct as Form,wt as FormSection,Mt as HumanNameDisplay,un as HumanNameInput,sn as IdentifierInput,ut as Logo,Kt as MedplumLink,He as MedplumProvider,ir as MemoizedFhirPathTable,nr as MemoizedSearchControl,An as ObservationTable,ur as PatientTimeline,sr as PlanDefinitionBuilder,Rr as QuestionnaireBuilder,Or as QuestionnaireForm,wr as QuestionnaireFormItem,Tr as QuestionnaireItemType,zt as RangeDisplay,vn as RangeInput,yn as ReferenceInput,bt as RegisterForm,Kr as RequestGroupDisplay,Ht as ResourceArrayDisplay,bn as ResourceArrayInput,gn as ResourceAvatar,Nn as ResourceBadge,Gr as ResourceBlame,Zr as ResourceDiff,It as ResourceForm,tl as ResourceHistoryTable,En as ResourceInput,In as ResourceName,Bt as ResourcePropertyDisplay,On as ResourcePropertyInput,Mn as ResourceTable,Qn as ResourceTimeline,il as Scheduler,Ya as SearchChangeEvent,Za as SearchClickEvent,tr as SearchControl,La as SearchFieldEditor,_a as SearchFilterEditor,Xa as SearchLoadEvent,dl as ServiceRequestTimeline,kt as SignInForm,Wr as StatusBadge,_n as Timeline,$n as TimelineItem,ba as addDateEqualsFilter,Ca as addDateFilter,Ta as addDateFilterBetween,ua as addField,ca as addFilter,ha as addLastMonthFilter,Oa as addMissingFilter,Ea as addNextMonthFilter,ga as addThisMonthFilter,da as addTodayFilter,pa as addTomorrowFilter,ya as addYearToDateFilter,ma as addYesterdayFilter,Ra as buildFieldNameString,oa as clearFilters,ia as clearFiltersOnField,ln as convertIsoToLocal,on as convertLocalToIso,vt as createScriptTag,sa as deleteFilter,Ut as formatRangeString,st as getErrorsForInput,mt as getIssuesForExpression,Da as getOpString,ft as getRecaptcha,Aa as getSearchOperators,Na as getSortField,Yr as getTimeString,Gt as getValueAndType,ja as hasFilterOnField,Et as initRecaptcha,kr as isChoiceQuestion,Dr as isQuestionEnabled,Va as isSortDescending,lt as parseForm,Pa as renderValue,la as setFilters,wa as setOffset,xa as setPage,Nt as setPropertyValue,Sa as setSort,zn as sortByDateAndPriority,Ia as toggleSort,Ge as useMedplum,Be as useMedplumContext,Je as useMedplumProfile,St as useResource};
1
+ import{formatAddress as e,capitalize as t,globalSchema as n,getPropertyDisplayName as r,formatHumanName as a,stringify as l,buildTypeName as o,PropertyType as i,formatTiming as c,formatPeriod as s,formatDateTime as u,getTypedPropertyValue as d,createReference as m,isValidDate as p,getDisplayString as g,getImageSrc as h,toTypedValue as v,getReferenceString as f,normalizeErrorString as E,evalFhirPath as y,getSearchParameterDetails as b,Operator as C,DEFAULT_SEARCH_COUNT as T,evalFhirPathTyped as x,SearchParameterType as k,formatSearchQuery as O,deepEquals as w,getQuestionnaireAnswers as S}from"@medplum/core";import j,{useState as A,useRef as I,createContext as D,useEffect as V,useContext as R,useCallback as P,forwardRef as N,useMemo as $}from"react";import{Group as L,NativeSelect as z,TextInput as F,ActionIcon as M,Button as _,Container as U,Paper as q,Center as W,Title as K,Stack as Q,Text as H,Alert as B,Divider as G,PasswordInput as J,Checkbox as Y,Anchor as X,UnstyledButton as Z,Avatar as ee,Input as te,createStyles as ne,MultiSelect as re,JsonInput as ae,Autocomplete as le,Loader as oe,Modal as ie,Textarea as ce,Menu as se,ScrollArea as ue,Table as de,Pagination as me,Radio as pe,Badge as ge,Grid as he}from"@mantine/core";import{IconCircleMinus as ve,IconCloudUpload as fe,IconAlertCircle as Ee,IconCirclePlus as ye,IconDots as be,IconMessage as Ce,IconCheck as Te,IconFileAlert as xe,IconPin as ke,IconPinnedOff as Oe,IconListDetails as we,IconEdit as Se,IconTrash as je,IconSortAscending as Ae,IconSortDescending as Ie,IconEqual as De,IconEqualNot as Ve,IconMathLower as Re,IconMathGreater as Pe,IconBracketsContain as Ne,IconCalendar as $e,IconSettings as Le,IconBucket as ze,IconBucketOff as Fe,IconBleach as Me,IconBleachOff as _e,IconX as Ue,IconFilter as qe,IconColumns as We,IconFilePlus as Ke,IconTableExport as Qe,IconBoxMultiple as He,IconAdjustmentsHorizontal as Be,IconCheckbox as Ge,IconSquare as Je}from"@tabler/icons";import{useNavigate as Ye}from"react-router-dom";import{updateNotification as Xe,showNotification as Ze}from"@mantine/notifications";function et(t){const n=t.value;return n?j.createElement(j.Fragment,null,e(n)):null}function tt(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function nt(e,t,n){const r=e.line||[];for(;r.length<=t;)r.push("");return r[t]=n,Object.assign(Object.assign({},e),{line:r})}function rt(e){const[t,n]=A(e.defaultValue||{}),r=I();function a(t){n(t),e.onChange&&e.onChange(t)}return r.current=t,j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(z,{"data-testid":"address-use",defaultValue:null==t?void 0:t.use,onChange:e=>{return t=e.currentTarget.value,void a(Object.assign(Object.assign({},r.current),{use:t}));var t},data:["","home","work","temp","old","billing"]}),j.createElement(z,{"data-testid":"address-type",defaultValue:null==t?void 0:t.type,onChange:e=>{return t=e.currentTarget.value,void a(Object.assign(Object.assign({},r.current),{type:t}));var t},data:["","postal","physical","both"]}),j.createElement(F,{placeholder:"Line 1",defaultValue:tt(t,0),onChange:e=>{return t=e.currentTarget.value,void a(nt(r.current||{},0,t));var t}}),j.createElement(F,{placeholder:"Line 2",defaultValue:tt(t,1),onChange:e=>{return t=e.currentTarget.value,void a(nt(r.current||{},1,t));var t}}),j.createElement(F,{placeholder:"City",defaultValue:t.city,onChange:e=>{return t=e.currentTarget.value,void a(Object.assign(Object.assign({},r.current),{city:t}));var t}}),j.createElement(F,{placeholder:"State",defaultValue:t.state,onChange:e=>{return t=e.currentTarget.value,void a(Object.assign(Object.assign({},r.current),{state:t}));var t}}),j.createElement(F,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:e=>{return t=e.currentTarget.value,void a(Object.assign(Object.assign({},r.current),{postalCode:t}));var t}}))}function at(e){const t=e.value,{contentType:n,url:r,title:a}=null!=t?t:{};return r?j.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&j.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&j.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},j.createElement("source",{type:n,src:r})),"application/pdf"===n&&!(null==a?void 0:a.endsWith(".pdf"))&&j.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},j.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),j.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},j.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function lt(e){return j.createElement("div",null,e.values&&e.values.map(((t,n)=>j.createElement("div",{key:"attatchment-"+n},j.createElement(at,{value:t,maxWidth:e.maxWidth})))))}const ot=D(void 0);function it(e){const t=e.medplum,[n,r]=A({profile:t.getProfile(),loading:!1});V((()=>{function e(){r(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const a=Object.assign(Object.assign({},n),{medplum:t});return j.createElement(ot.Provider,{value:a},e.children)}function ct(){return R(ot)}function st(){return ct().medplum}function ut(){return ct().profile}function dt(e){e.preventDefault(),e.stopPropagation()}function mt(e){if(pt(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&pt(t[0]))return!0}return!1}function pt(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function gt(e){const t=st(),n=I(null);function r(n){if(!n)return;if(!n.name)return;e.onUploadStart&&e.onUploadStart();const r=n.name,a=n.type||"application/octet-stream";t.createBinary(n,r,a,e.onUploadProgress).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:r})})).catch((e=>{var t,n,r;alert(null===(r=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===r?void 0:r.text)}))}return j.createElement(j.Fragment,null,j.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){dt(e);const t=e.target.files;t&&Array.from(t).forEach(r)}(e)}),e.children({onClick:function(e){var t;dt(e),null===(t=n.current)||void 0===t||t.click()}}))}function ht(e){var t;const[n,r]=A(null!==(t=e.defaultValue)&&void 0!==t?t:[]),a=I();function l(t){r(t),e.onChange&&e.onChange(t)}return a.current=n,j.createElement("table",{style:{width:"100%"}},j.createElement("colgroup",null,j.createElement("col",{width:"97%"}),j.createElement("col",{width:"3%"})),j.createElement("tbody",null,n.map(((e,t)=>j.createElement("tr",{key:`${t}-${n.length}`},j.createElement("td",null,j.createElement(at,{value:e,maxWidth:200})),j.createElement("td",null,j.createElement(M,{title:"Remove",size:"sm",onClick:e=>{dt(e);const r=n.slice();r.splice(t,1),l(r)}},j.createElement(ve,null)))))),j.createElement("tr",null,j.createElement("td",null),j.createElement("td",null,j.createElement(gt,{onUpload:e=>{l([...a.current,e])}},(e=>j.createElement(M,Object.assign({},e,{title:"Add",size:"sm",color:"green"}),j.createElement(fe,{size:16}))))))))}function vt(e){const[t,n]=A(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return t?j.createElement(j.Fragment,null,j.createElement(at,{value:t,maxWidth:200}),j.createElement(_,{onClick:e=>{dt(e),r(void 0)}},"Remove")):j.createElement(gt,{onUpload:r},(e=>j.createElement(_,Object.assign({},e),"Upload...")))}function ft(e){let t;return e.width&&(t={maxWidth:e.width}),j.createElement(U,null,j.createElement(q,{style:t,mx:"auto",my:"lg",p:"lg",shadow:"xs",radius:"sm",withBorder:!0},e.children))}function Et(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function yt(e,t,n,r){return new(n||(n=Promise))((function(a,l){function o(e){try{c(r.next(e))}catch(e){l(e)}}function i(e){try{c(r.throw(e))}catch(e){l(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,i)}c((r=r.apply(e,t||[])).next())}))}function bt(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?Ct(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&Tt(t,n);return t}function Ct(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function Tt(e,t){e[t.name]=t.value}function xt(e){return j.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=bt(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function kt(e){return j.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},j.createElement("title",null,"Medplum Logo"),j.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),j.createElement("path",{fill:e.fill||"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),j.createElement("path",{fill:e.fill||"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),j.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),j.createElement("path",{fill:e.fill||"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function Ot(e,t){var n,r,a;return null===(a=null===(r=null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return St(null===(n=e.expression)||void 0===n?void 0:n[0],t)})))||void 0===r?void 0:r.map((e=>{var t;return null===(t=e.details)||void 0===t?void 0:t.text})))||void 0===a?void 0:a.join("\n")}function wt(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return St(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function St(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=e.indexOf(".");if(n>=0&&e.substring(n+1)===t)return!0;const r=t.indexOf(".");return r>=0&&t.substring(r+1)===e}function jt(e){const t=st(),[n,r]=A();return j.createElement(xt,{style:{maxWidth:400},onSubmit:n=>yt(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){r(e)}}))},j.createElement(W,{sx:{flexDirection:"column"}},j.createElement(kt,{size:32}),j.createElement(K,null,"Create project")),j.createElement(Q,{spacing:"xl"},j.createElement(F,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:Ot(n,"firstName")}),j.createElement(H,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",j.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",j.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),".")),j.createElement(L,{position:"right",mt:"xl",noWrap:!0},j.createElement(_,{type:"submit"},"Create project")))}function At(e,t){const n=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=t||null,n.appendChild(r)}function It(e){const t=st(),{googleClientId:n,handleGoogleCredential:r}=e,a=I(null),[l,o]=A("undefined"!=typeof google),[i,c]=A(!1),[s,u]=A(!1);return V((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:n,callback:r}),c(!0)),a.current&&!s&&(google.accounts.id.renderButton(a.current,{}),u(!0))):At("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,l,a,s,r]),n?j.createElement("div",{ref:a}):null}function Dt(e){var t,n;if(e)return e;const r=window.location.protocol+"//"+window.location.host;return(null!==(n=null===(t="http://localhost:3000,http://127.0.0.1:3000,http://localhost:6006,http://127.0.0.1:6006,https://app.medplum.com,https://docs.medplum.com,https://storybook.medplum.com,https://graphiql.medplum.com,https://www.medplum.com")?void 0:t.split(","))&&void 0!==n?n:[]).includes(r)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function Vt(e){"undefined"==typeof grecaptcha&&At("https://www.google.com/recaptcha/api.js?render="+e)}function Rt(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>yt(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function Pt(e){const t=Dt(e.googleClientId),n=e.recaptchaSiteKey,r=st(),[a,l]=A(),o=wt(a,void 0);return V((()=>Vt(n)),[n]),j.createElement(xt,{style:{maxWidth:400},onSubmit:t=>yt(this,void 0,void 0,(function*(){try{const a=yield Rt(n);e.handleAuthResponse(yield r.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:n,recaptchaToken:a}))}catch(e){l(e)}}))},j.createElement(W,{sx:{flexDirection:"column"}},e.children),o&&j.createElement(B,{icon:j.createElement(Ee,{size:16}),color:"red"},o.map((e=>{var t,n;return j.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),t&&j.createElement(j.Fragment,null,j.createElement(L,{position:"center",p:"xl",style:{height:70}},j.createElement(It,{googleClientId:t,handleGoogleCredential:t=>yt(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield r.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){l(e)}}))})),j.createElement(G,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Q,{spacing:"xl"},j.createElement(F,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:Ot(a,"firstName")}),j.createElement(F,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:Ot(a,"lastName")}),j.createElement(F,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:Ot(a,"email")}),j.createElement(J,{name:"password",label:"Password",autoComplete:"off",required:!0,error:Ot(a,"password")}),j.createElement(H,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",j.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",j.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),j.createElement(H,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",j.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",j.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply.")),j.createElement(L,{position:"apart",mt:"xl",noWrap:!0},j.createElement(Y,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(_,{type:"submit"},"Create account")))}function Nt(e){const{type:t,projectId:n,googleClientId:r,recaptchaSiteKey:a,onSuccess:l}=e,o=st(),[i,c]=A(void 0),[s,u]=A();function d(e){e.code?o.processCode(e.code).then((()=>l())).catch(console.log):e.login&&c(e.login)}return V((()=>{"patient"===t&&i&&o.startNewPatient({login:i,projectId:n}).then((e=>o.processCode(e.code))).then((()=>l())).catch((e=>u(e)))}),[o,t,n,i,l]),j.createElement(ft,{width:450},s&&j.createElement("pre",null,JSON.stringify(s,null,2)),!i&&j.createElement(Pt,{projectId:n,googleClientId:r,recaptchaSiteKey:a,handleAuthResponse:d},e.children),i&&"project"===t&&j.createElement(jt,{login:i,handleAuthResponse:d}))}function $t(e){const t=st(),n=Dt(e.googleClientId),[r,a]=A(),l=wt(r,void 0);function o(){return yt(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return j.createElement(xt,{style:{maxWidth:400},onSubmit:n=>{o().then((()=>t.startLogin({projectId:e.projectId,clientId:e.clientId,resourceType:e.resourceType,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,email:n.email,password:n.password,remember:"true"===n.remember}))).then(e.handleAuthResponse).catch(a)}},j.createElement(W,{sx:{flexDirection:"column"}},e.children),l&&j.createElement(B,{icon:j.createElement(Ee,{size:16}),color:"red"},l.map((e=>{var t,n;return j.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),n&&j.createElement(j.Fragment,null,j.createElement(L,{position:"center",p:"xl",style:{height:70}},j.createElement(It,{googleClientId:n,handleGoogleCredential:n=>{o().then((()=>t.startGoogleLogin({projectId:e.projectId,clientId:e.clientId,resourceType:e.resourceType,scope:e.scope,nonce:e.nonce,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,googleClientId:n.clientId,googleCredential:n.credential}))).then(e.handleAuthResponse).catch(a)}})),j.createElement(G,{label:"or",labelPosition:"center",my:"lg"})),j.createElement(Q,{spacing:"xl"},j.createElement(F,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:Ot(r,"email")}),j.createElement(J,{name:"password",type:"password",label:"Password",autoComplete:"off",required:!0,error:Ot(r,"password")})),j.createElement(L,{position:"apart",mt:"xl",noWrap:!0},e.onForgotPassword&&j.createElement(X,{component:"button",type:"button",color:"dimmed",onClick:e.onForgotPassword,size:"xs"},"Forgot password"),e.onRegister&&j.createElement(X,{component:"button",type:"button",color:"dimmed",onClick:e.onRegister,size:"xs"},"Register"),j.createElement(Y,{name:"remember",label:"Remember me",size:"xs"}),j.createElement(_,{type:"submit"},"Sign in")))}function Lt(e){const t=st();return j.createElement(Q,null,j.createElement(W,{sx:{flexDirection:"column"}},j.createElement(kt,{size:32}),j.createElement(K,null,"Choose profile")),e.memberships.map((n=>{var r,a;return j.createElement(Z,{key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},j.createElement(L,null,j.createElement(ee,{radius:"xl"}),j.createElement("div",{style:{flex:1}},j.createElement(H,{size:"sm",weight:500},null===(r=n.profile)||void 0===r?void 0:r.display),j.createElement(H,{color:"dimmed",size:"xs"},null===(a=n.project)||void 0===a?void 0:a.display))))})))}function zt(e){const t=st(),[n,r]=A(void 0),[a,l]=A(void 0);function o(n){n.login&&r(n.login),n.memberships&&l(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return j.createElement(ft,{width:450},n?a?j.createElement(Lt,{login:n,memberships:a,handleAuthResponse:o}):"new"===e.projectId?j.createElement(jt,{login:n,handleAuthResponse:o}):j.createElement("div",null,"Success"):j.createElement($t,{projectId:e.projectId,clientId:e.clientId,resourceType:e.resourceType,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,generatePkce:!e.onCode,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function Ft(e){return j.createElement(L,{noWrap:!0},j.createElement("div",null,e.children),j.createElement("div",null,j.createElement(te.Wrapper,{id:e.htmlFor,label:e.title,description:e.description},null)))}const Mt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function _t(e){return j.createElement(te.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,error:Ot(e.outcome,e.htmlFor)},e.children)}const Ut={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function qt(e){const t=st(),[n,r]=A(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?Ut:e.getCachedReference(t);return}(t,e));return V((()=>{let a=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{a&&r(e)})).catch((()=>r(void 0))),()=>a=!1}),[t,n,e]),n}function Wt(e){const t=st(),n=qt(e.defaultValue),[r,a]=A(),[l,o]=A();return V((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(a).catch(console.log))}),[t,n]),r&&l?j.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(l)}},j.createElement(Q,{mb:"xl"},j.createElement(_t,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},j.createElement(F,{name:"resourceType",defaultValue:l.resourceType,disabled:!0})),j.createElement(_t,{title:"ID",htmlFor:"id",outcome:e.outcome},j.createElement(F,{name:"id",defaultValue:l.id,disabled:!0}))),j.createElement(Kn,{typeName:l.resourceType,defaultValue:l,outcome:e.outcome,onChange:o}),j.createElement(L,null,j.createElement(_,{type:"submit"},"OK"),e.onDelete&&j.createElement(_,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(l)}},"Delete"))):j.createElement("div",null,"Loading...")}function Kt(e,n,r,a,l){const o=a.type;if(o.length>1)for(const r of o){const a=n.replace("[x]",t(r.code));a in e&&delete e[a]}return e[r]=l,e}const Qt=ne((e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm}px ${e.spacing.sm}px`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs}px ${e.spacing.xs}px 0`,border:0}}})));function Ht(e){const{children:t,compact:n}=e,{classes:r,cx:a}=Qt();return j.createElement("dl",{className:a(r.root,{[r.compact]:n})},t)}function Bt(e){return j.createElement(j.Fragment,null,j.createElement("dt",null,e.term),j.createElement("dd",null,e.children))}function Gt(e){const t=e.value,a=t.value;if(!a)return null;const l=t.type,o=n.types[l];return o?"object"==typeof a&&"name"in a&&1===Object.keys(a).length?j.createElement("div",null,a.name):j.createElement(Ht,{compact:e.compact},Object.entries(o.properties).map((n=>{const a=n[0];if(Mt.indexOf(a)>=0)return null;const l=n[1],[o,i]=mn(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:j.createElement(Bt,{key:a,term:r(a)},j.createElement(dn,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):j.createElement("div",null,l," not implemented")}function Jt(e){var t,n;return j.createElement(j.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function Yt(e){const t=e.value;return t?t.text?j.createElement(j.Fragment,null,t.text):t.coding?j.createElement(j.Fragment,null,t.coding.map(((e,t)=>j.createElement(j.Fragment,{key:"coding-"+t},t>0&&j.createElement(j.Fragment,null,", "),j.createElement(Jt,{value:e}))))):null:null}function Xt(e){const t=e.value;if(!t)return null;const n=[];return t.value&&n.push(t.value),(t.use||t.system)&&(n.push(" ["),t.use&&n.push(t.use),t.use&&t.system&&n.push(" "),t.system&&n.push(t.system),n.push("]")),j.createElement(j.Fragment,null,n.join("").trim())}function Zt(e){var t;const n=e.value;return n?j.createElement(j.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>j.createElement(Xt,{key:"telecom-"+t,value:e})))):null}function en(e){const t=e.value;return t?j.createElement(j.Fragment,null,a(t,e.options)):null}function tn(e){var t,n;return j.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function nn(e){return j.createElement(j.Fragment,null,rn(e.value))}function rn(e){if(!e)return"";const t=[];return e.comparator&&(t.push(e.comparator),t.push(" ")),void 0!==e.value&&t.push(e.value),e.unit&&("%"!==e.unit&&t.push(" "),t.push(e.unit)),t.join("")}function an(e){return j.createElement(j.Fragment,null,ln(e.value))}function ln(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${rn(e.low)}`:!e.low&&e.high?`<= ${rn(e.high)}`:`${rn(e.low)} - ${rn(e.high)}`:""}function on(e){const t=e.value;return t?j.createElement(j.Fragment,null,j.createElement(nn,{value:t.numerator})," / ",j.createElement(nn,{value:t.denominator})):null}function cn(e){const t=Ye(),{to:n,suffix:r,label:a,onClick:l,children:o}=e,i=Et(e,["to","suffix","label","onClick","children"]);let c=function(e){if(e){if("string"==typeof e)return function(e){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/"))return e;return"/"+e}(e);if("resourceType"in e)return function(e){return`/${e.resourceType}/${e.id}`}(e);if("reference"in e)return function(e){return`/${e.reference}`}(e)}return"#"}(n);return r&&(c+="/"+r),j.createElement(X,Object.assign({href:c,"aria-label":a,onClick:e=>{dt(e),l?l():n&&t(c)}},i),o)}function sn(e){if(!e.value)return null;const t=e.value.display||e.value.reference||l(e.value);return!1!==e.link&&e.value.reference?j.createElement(cn,{to:e.value},t):j.createElement(j.Fragment,null,t)}function un(e){var t,n,r;const a=e.property,l=null!==(t=e.values)&&void 0!==t?t:[],o=null===(r=null===(n=a.type)||void 0===n?void 0:n[0])||void 0===r?void 0:r.code;return j.createElement(j.Fragment,null,l.map(((t,n)=>j.createElement("div",{key:`${n}-${l.length}`},j.createElement(dn,{arrayElement:!0,property:a,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function dn(e){var t;const{property:n,propertyType:r,value:a}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===r?j.createElement(lt,{values:a,maxWidth:e.maxWidth}):j.createElement(un,{property:n,values:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(r){case i.boolean:return j.createElement(j.Fragment,null,void 0===a?"":Boolean(a).toString());case i.SystemString:case i.code:case i.date:case i.integer:case i.positiveInt:case i.string:case i.unsignedInt:case i.uri:case i.url:return j.createElement(j.Fragment,null,a);case i.canonical:return j.createElement(sn,{value:{reference:a},link:e.link});case i.dateTime:case i.instant:return j.createElement(j.Fragment,null,u(a));case i.markdown:return j.createElement("pre",null,a);case i.Address:return j.createElement(et,{value:a});case i.Annotation:return j.createElement(j.Fragment,null,null==a?void 0:a.text);case i.Attachment:return j.createElement(at,{value:a,maxWidth:e.maxWidth});case i.CodeableConcept:return j.createElement(Yt,{value:a});case i.Coding:return j.createElement(Jt,{value:a});case i.ContactDetail:return j.createElement(Zt,{value:a});case i.ContactPoint:return j.createElement(Xt,{value:a});case i.HumanName:return j.createElement(en,{value:a});case i.Identifier:return j.createElement(tn,{value:a});case i.Period:return j.createElement(j.Fragment,null,s(a));case i.Quantity:return j.createElement(nn,{value:a});case i.Range:return j.createElement(an,{value:a});case i.Ratio:return j.createElement(on,{value:a});case i.Reference:return j.createElement(sn,{value:a,link:e.link});case i.Timing:return j.createElement(j.Fragment,null,c(a));default:if(!(null==n?void 0:n.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return j.createElement(Gt,{value:{type:o(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:a},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function mn(e,t){const n=d(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function pn(e){const t=ut(),[n,r]=A(e.defaultValue||{});return I().current=n,j.createElement(F,{name:e.name,placeholder:"Annotation text",defaultValue:n.text,onChange:n=>function(n){const a=n?{text:n,authorReference:t&&m(t),time:(new Date).toISOString()}:{};r(a),e.onChange&&e.onChange(a)}(n.currentTarget.value)})}function gn(e){return{value:e.code,label:(t=e,t.display||t.code||""),element:e};var t}function hn(e){const t=st(),{property:n,defaultValue:r}=e,[a,l]=A(r?[r.code]:[]),[o,i]=A(r?[gn(r)]:[]),c=I();c.current=o;const s=P((e=>yt(this,void 0,void 0,(function*(){var r,a;const l=null===(r=n.binding)||void 0===r?void 0:r.valueSet,o=null===(a=(yield t.searchValueSet(l,e)).expansion)||void 0===a?void 0:a.contains,s=[...c.current];for(const e of o)s.some((t=>t.value===e.code))||s.push(gn(e));i(s)}))),[t,n,c]);return V((()=>{s("").catch(console.log)}),[s]),j.createElement(re,{data:o,placeholder:e.placeholder,searchable:!0,creatable:!0,clearable:!0,value:a,filter:(e,t,n)=>{var r,l;return!(0!==a.length||t||!(null===(r=n.element.display)||void 0===r?void 0:r.toLowerCase().includes(e.toLowerCase().trim()))&&!(null===(l=n.element.code)||void 0===l?void 0:l.toLowerCase().includes(e.toLowerCase().trim())))},onChange:function(t){l(t);const n=t[0];let r;if(n&&(r=c.current.find((e=>e.value===t[0])),!r)){r=gn({code:n,display:n}),i([...c.current,r])}e.onChange&&e.onChange(null==r?void 0:r.element)},getCreateLabel:e=>`+ Create ${e}`,onCreate:e=>gn({code:e,display:e})})}function vn(e){const[t,n]=A(e.defaultValue);return j.createElement(hn,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(r=t,{system:null===(l=null===(a=r.coding)||void 0===a?void 0:a[0])||void 0===l?void 0:l.system,code:null===(i=null===(o=r.coding)||void 0===o?void 0:o[0])||void 0===i?void 0:i.code,display:null===(s=null===(c=r.coding)||void 0===c?void 0:c[0])||void 0===s?void 0:s.display}),onChange:function(t){const r=t&&{text:(a=t).display,coding:[{system:a.system,code:a.code,display:a.display}]};var a;n(r),e.onChange&&e.onChange(r)}});var r,a,l,o,i,c,s}function fn(e){const[t,n]=A(e.defaultValue);return j.createElement(hn,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:(r=t,r?{code:r}:void 0),onChange:function(t){const r=null==(a=t)?void 0:a.code;var a;n(r),e.onChange&&e.onChange(r)}});var r}function En(e){const[t,n]=A(e.defaultValue);return j.createElement(hn,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(r=t,{system:r.system,code:r.code,display:r.display}),onChange:function(t){const r=t&&{system:(a=t).system,code:a.code,display:a.display};var a;n(r),e.onChange&&e.onChange(r)}});var r}function yn(e){const[t,n]=A(e.defaultValue),r=I();function a(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return r.current=t,j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(z,{"data-testid":"system",defaultValue:null==t?void 0:t.system,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{system:e});e||delete t.system,a(t)}(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),j.createElement(z,{"data-testid":"use",defaultValue:null==t?void 0:t.use,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{use:e});e||delete t.use,a(t)}(e.currentTarget.value),data:["","home","work","temp","old","mobile"]}),j.createElement(F,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>function(e){const t=Object.assign(Object.assign({},r.current),{value:e});e||delete t.value,a(t)}(e.currentTarget.value)}))}function bn(e){var t;const[n,r]=A(e.defaultValue),a=I();function l(t){r(t),e.onChange&&e.onChange(t)}return a.current=n,j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(F,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==n?void 0:n.name,onChange:e=>function(e){const t=Object.assign(Object.assign({},a.current),{name:e});e||delete t.name,l(t)}(e.currentTarget.value)}),j.createElement(yn,{name:e.name+"-telecom",defaultValue:null===(t=null==n?void 0:n.telecom)||void 0===t?void 0:t[0],onChange:function(e){const t=Object.assign(Object.assign({},a.current),{telecom:e&&[e]});e||delete t.telecom,l(t)}}))}function Cn(e){return j.createElement(F,{id:e.name,name:e.name,"data-testid":e.name,placeholder:e.placeholder,type:"datetime-local",defaultValue:Tn(e.defaultValue),error:Ot(e.outcome,e.name),onChange:t=>{if(e.onChange){const n=t.currentTarget.value;e.onChange(xn(n))}}})}function Tn(e){if(!e)return"";const t=new Date(e);return p(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function xn(e){if(!e)return"";const t=new Date(e);return p(t)?t.toISOString():""}function kn(e){return j.createElement(ae,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:l(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function On(e){var t,n,r;const[a,l]=A(e.defaultValue),o=I();function i(t){l(t),e.onChange&&e.onChange(t)}return o.current=a,j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(z,{defaultValue:null==a?void 0:a.use,"data-testid":"use",onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{use:t||void 0}));var t},data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),j.createElement(F,{placeholder:"Prefix",defaultValue:null===(t=null==a?void 0:a.prefix)||void 0===t?void 0:t.join(" "),onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{prefix:t?t.split(" "):void 0}));var t}}),j.createElement(F,{placeholder:"Given",defaultValue:null===(n=null==a?void 0:a.given)||void 0===n?void 0:n.join(" "),onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{given:t?t.split(" "):void 0}));var t}}),j.createElement(F,{placeholder:"Family",defaultValue:null==a?void 0:a.family,onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{family:t||void 0}));var t}}),j.createElement(F,{placeholder:"Suffix",defaultValue:null===(r=null==a?void 0:a.suffix)||void 0===r?void 0:r.join(" "),onChange:e=>{return t=e.currentTarget.value,void i(Object.assign(Object.assign({},o.current),{suffix:t?t.split(" "):void 0}));var t}}))}function wn(e){const[t,n]=A(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(F,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>r(Object.assign(Object.assign({},t),{system:e.currentTarget.value}))}),j.createElement(F,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>r(Object.assign(Object.assign({},t),{value:e.currentTarget.value}))}))}function Sn(e){const[t,n]=A(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(Cn,{name:e.name+".start",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>r(Object.assign(Object.assign({},t),{start:e}))}),j.createElement(Cn,{name:e.name+".end",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>r(Object.assign(Object.assign({},t),{end:e}))}))}function jn(e){var t;const[n,r]=A(e.defaultValue);function a(t){r(t),e.onChange&&e.onChange(t)}return j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(z,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,data:["","<","<=",">=",">"],onChange:e=>a(Object.assign(Object.assign({},n),{comparator:e.currentTarget.value}))}),j.createElement(F,{id:e.name,name:e.name,"data-testid":e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==n?void 0:n.value)||void 0===t?void 0:t.toString(),onChange:e=>a(Object.assign(Object.assign({},n),{value:An(e.currentTarget.value)}))}),j.createElement(F,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>a(Object.assign(Object.assign({},n),{unit:e.currentTarget.value}))}))}function An(e){if(e)return parseFloat(e)}function In(e){const[t,n]=A(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(jn,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>r(Object.assign(Object.assign({},t),{low:e}))}),j.createElement(jn,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>r(Object.assign(Object.assign({},t),{high:e}))}))}function Dn(e){const[t,n]=A(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(jn,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>r(Object.assign(Object.assign({},t),{numerator:e}))}),j.createElement(jn,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>r(Object.assign(Object.assign({},t),{denominator:e}))}))}function Vn(e){var t,n,r;const a=qt(e.value),l=a?g(a):null!==(t=e.alt)&&void 0!==t?t:"",o=null!==(n=a&&h(a))&&void 0!==n?n:e.src,i=null!==(r=e.radius)&&void 0!==r?r:"xl",c=Object.assign({},e);return delete c.value,delete c.link,e.link?j.createElement(cn,{to:a},j.createElement(ee,Object.assign({src:o,alt:l,radius:i},c))):j.createElement(ee,Object.assign({src:o,alt:l,radius:i},c))}const Rn={Schedule:"_id",Task:"_id",Patient:"name",Practitioner:"name",Questionnaire:"name",ServiceRequest:"_id",DiagnosticReport:"_id",Specimen:"_id",Observation:"code",RequestGroup:"_id",ActivityDefinition:"name"};function Pn(e){const t=st(),n=qt(e.defaultValue),[r,a]=A(n?g(n):""),[l,o]=A(!1),[i,c]=A([]);function s(n){return yt(this,void 0,void 0,(function*(){o(!0);const r=Rn[e.resourceType]||"name",a=new URLSearchParams({[r]:encodeURIComponent(n),_count:"10"}),l=yield t.searchResources(e.resourceType,a);c(l.map((e=>({value:g(e),resource:e})))),o(!1)}))}return V((()=>{n&&a(g(n))}),[n,a]),j.createElement(le,{itemComponent:Nn,value:r,data:i,placeholder:e.placeholder,onFocus:()=>s(r),onChange:function(e){return yt(this,void 0,void 0,(function*(){return a(e),s(e)}))},onItemSubmit:function(t){a(t.value),c([]),e.onChange&&e.onChange(t.resource)},rightSection:l?j.createElement(oe,{size:16}):null})}const Nn=N(((e,t)=>{var{value:n,resource:r}=e,a=Et(e,["value","resource"]);return j.createElement("div",Object.assign({ref:t},a),j.createElement(L,{noWrap:!0},j.createElement(Vn,{value:r}),j.createElement("div",null,j.createElement(H,null,n),j.createElement(H,{size:"xs",color:"dimmed"},r.birthDate))))}));function $n(e){const t=e.targetTypes,n=function(e,t){var n;const r=null===(n=null==e?void 0:e.reference)||void 0===n?void 0:n.split("/")[0];if(r)return r;if(t&&t.length>0)return t[0];return}(e.defaultValue,t),[r,a]=A(e.defaultValue),[l,o]=A(n);I().current=r;return I().current=l,j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},t?j.createElement(z,{"data-testid":"reference-input-resource-type-select",defaultValue:l,onChange:e=>o(e.currentTarget.value),data:t}):j.createElement(F,{"data-testid":"reference-input-resource-type-input",defaultValue:l,onChange:e=>o(e.currentTarget.value)}),j.createElement(Pn,{resourceType:l,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:t=>{var n;n=t?m(t):void 0,a(n),e.onChange&&e.onChange(n)}}))}function Ln(e){const[t,n]=A(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=I();function a(t){n(t),e.onChange&&e.onChange(t)}return r.current=t,j.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},j.createElement("colgroup",null,j.createElement("col",{width:"97%"}),j.createElement("col",{width:"3%"})),j.createElement("tbody",null,t.map(((n,l)=>j.createElement("tr",{key:`${l}-${t.length}`},j.createElement("td",null,j.createElement(_n,{arrayElement:!0,property:e.property,name:e.name+"."+l,defaultValue:n,onChange:e=>{const t=[...r.current];t[l]=e,a(t)}})),j.createElement("td",{style:{textAlign:"right"}},j.createElement(M,{title:"Remove",size:"sm",onClick:e=>{dt(e);const t=[...r.current];t.splice(l,1),a(t)}},j.createElement(ve,null)))))),j.createElement("tr",null,j.createElement("td",null),j.createElement("td",{style:{textAlign:"right"}},j.createElement(M,{title:"Add",size:"sm",color:"green",onClick:e=>{dt(e);const t=[...r.current];t.push(void 0),a(t)}},j.createElement(ye,null))))))}const zn=["sun","mon","tue","wed","thu","fri","sat"];function Fn(e){const[t,n]=A(e.defaultValue||{}),[r,a]=A(!1),l=I();return l.current=t,j.createElement(j.Fragment,null,j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement("span",null,c(l.current)||"No repeat"),j.createElement(_,{onClick:()=>a(!0)},"Edit")),j.createElement(Mn,{visible:r,defaultValue:l.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),a(!1)},onCancel:()=>a(!1)}))}function Mn(e){var t,n;const[r,a]=A(e.defaultValue||{}),l=I();function o(e){a(Object.assign(Object.assign({},l.current),{repeat:e}))}function i(e,t){t?function(e){var t,n,r;const a=(null===(n=null===(t=l.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];a.includes(e)||o(Object.assign(Object.assign({},null===(r=l.current)||void 0===r?void 0:r.repeat),{dayOfWeek:[...a,e]}))}(e):function(e){var t,n,r;const a=(null===(n=null===(t=l.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];a.includes(e)&&o(Object.assign(Object.assign({},null===(r=l.current)||void 0===r?void 0:r.repeat),{dayOfWeek:a.filter((t=>t!==e))}))}(e)}return l.current=r,j.createElement(ie,{title:"Timing",closeButtonLabel:"Close",opened:e.visible,onClose:()=>e.onCancel()},j.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},j.createElement(_t,{title:"Starts on",htmlFor:"timing-dialog-start"},j.createElement(Cn,{name:"timing-dialog-start",onChange:e=>{return t=e,void a(Object.assign(Object.assign({},l.current),{event:[t]}));var t}})),j.createElement(_t,{title:"Repeat every",htmlFor:"timing-dialog-period"},j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(F,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:null===(t=null==r?void 0:r.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=l.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e.currentTarget.value))}),j.createElement(z,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:null===(n=null==r?void 0:r.repeat)||void 0===n?void 0:n.periodUnit,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=l.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e.currentTarget.value),data:[{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),j.createElement(_t,{title:"Repeat on"},j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},zn.map((e=>j.createElement(j.Fragment,{key:e},j.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),j.createElement(Y,{id:"timing-dialog-repeat-"+e,name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t.currentTarget.checked)}))))))),j.createElement(_,{onClick:()=>e.onOk(r)},"OK"))}function _n(e){var t,n,r;const a=e.property,l=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(r=null===(n=a.type)||void 0===n?void 0:n[0])||void 0===r?void 0:r.code,o=e.name,i=e.defaultValue;if("*"===a.max&&!e.arrayElement)return"Attachment"===l?j.createElement(ht,{name:o,defaultValue:i,onChange:e.onChange}):j.createElement(Ln,{property:a,name:o,defaultValue:i,onChange:e.onChange});const c=a.type;return c.length>1?j.createElement(Un,Object.assign({elementDefinitionTypes:c},e)):j.createElement(qn,Object.assign({elementDefinitionType:c[0]},e))}function Un(e){const n=e.elementDefinitionTypes;let r;e.defaultPropertyType&&(r=n.find((t=>t.code===e.defaultPropertyType))),r||(r=n[0]);const[a,l]=A(r);return j.createElement(L,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(z,{style:{width:"200px"},defaultValue:null==a?void 0:a.code,onChange:e=>{l(n.find((t=>t.code===e.currentTarget.value)))},data:n.map((e=>({value:e.code,label:e.code})))}),j.createElement(qn,Object.assign({},e,{elementDefinitionType:a,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t(a.code)))}})))}function qn(e){var t;const n=e.property,r=e.elementDefinitionType.code,a=e.name,l=e.defaultValue;switch(r){case i.SystemString:case i.canonical:case i.string:case i.time:case i.uri:case i.url:return j.createElement(F,{id:a,name:a,"data-testid":a,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:Ot(e.outcome,a)});case i.date:return j.createElement(F,{type:"date",id:a,name:a,"data-testid":a,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:Ot(e.outcome,a)});case i.dateTime:case i.instant:return j.createElement(Cn,{name:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.decimal:case i.integer:case i.positiveInt:case i.unsignedInt:return j.createElement(F,{type:"number",step:r===i.decimal?"any":"1",id:a,name:a,"data-testid":a,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.valueAsNumber)}});case i.code:return j.createElement(fn,{property:n,name:a,defaultValue:l,onChange:e.onChange});case i.boolean:return j.createElement(Y,{id:a,name:a,"data-testid":a,defaultChecked:!!l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}});case i.markdown:return j.createElement(ce,{id:a,name:a,"data-testid":a,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}});case i.Address:return j.createElement(rt,{name:a,defaultValue:l,onChange:e.onChange});case i.Annotation:return j.createElement(pn,{name:a,defaultValue:l,onChange:e.onChange});case i.Attachment:return j.createElement(vt,{name:a,defaultValue:l,onChange:e.onChange});case i.CodeableConcept:return j.createElement(vn,{property:n,name:a,defaultValue:l,onChange:e.onChange});case i.Coding:return j.createElement(En,{property:n,name:a,defaultValue:l,onChange:e.onChange});case i.ContactDetail:return j.createElement(bn,{name:a,defaultValue:l,onChange:e.onChange});case i.ContactPoint:return j.createElement(yn,{name:a,defaultValue:l,onChange:e.onChange});case i.Extension:return j.createElement(kn,{name:a,defaultValue:l,onChange:e.onChange});case i.HumanName:return j.createElement(On,{name:a,defaultValue:l,onChange:e.onChange});case i.Identifier:return j.createElement(wn,{name:a,defaultValue:l,onChange:e.onChange});case i.Period:return j.createElement(Sn,{name:a,defaultValue:l,onChange:e.onChange});case i.Quantity:return j.createElement(jn,{name:a,defaultValue:l,onChange:e.onChange});case i.Range:return j.createElement(In,{name:a,defaultValue:l,onChange:e.onChange});case i.Ratio:return j.createElement(Dn,{name:a,defaultValue:l,onChange:e.onChange});case i.Reference:return j.createElement($n,{name:a,defaultValue:l,targetTypes:Wn(n),onChange:e.onChange});case i.Timing:return j.createElement(Fn,{name:a,defaultValue:l,onChange:e.onChange});default:return j.createElement(Kn,{typeName:o(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:l,onChange:e.onChange,outcome:e.outcome})}}function Wn(e){var t,n,r;return null===(r=null===(n=null===(t=null==e?void 0:e.type)||void 0===t?void 0:t[0])||void 0===n?void 0:n.targetProfile)||void 0===r?void 0:r.map((e=>e.split("/").pop()))}function Kn(e){var t;const[a,l]=A(null!==(t=e.defaultValue)&&void 0!==t?t:{});function o(t){l(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=n.types[i];if(!c)return j.createElement("div",null,i," not implemented");const s={type:i,value:a};return j.createElement(Q,null,Object.entries(c.properties).map((t=>{const n=t[0];if("id"===n||Mt.indexOf(n)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=mn(s,n);return 1===l.type.length&&"boolean"===l.type[0].code?j.createElement(Ft,{key:n,title:r(n),description:l.definition,htmlFor:n},j.createElement(_n,{property:l,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,r)=>{o(Kt(a,n,null!=r?r:n,t[1],e))}})):j.createElement(_t,{key:n,title:r(n),description:l.definition,htmlFor:n,outcome:e.outcome},j.createElement(_n,{property:l,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,r)=>{o(Kt(a,n,null!=r?r:n,t[1],e))}}))})))}function Qn(e){const{value:t,link:n}=e,r=Et(e,["value","link"]),a=qt(t);if(!a)return null;const l=g(a);return n?j.createElement(cn,Object.assign({to:a},r),l):j.createElement(H,Object.assign({component:"span"},r),l)}function Hn(e){return j.createElement(L,{spacing:"xs"},j.createElement(Vn,{size:24,radius:12,value:e.value,link:e.link}),j.createElement(Qn,{value:e.value,link:e.link}))}const Bn=ne((e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:"dark"===e.colorScheme?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}}})));function Gn(e){var n,r;const a=qt(e.value),l=qt(null===(n=null==a?void 0:a.specimen)||void 0===n?void 0:n[0]);if(!a)return null;let o="";if(a.presentedForm&&a.presentedForm.length>0){const e=a.presentedForm[0];(null===(r=e.contentType)||void 0===r?void 0:r.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==l?void 0:l.note)for(const e of l.note)o+=e.text+"\n\n";return j.createElement(Q,null,j.createElement(K,null,"Diagnostic Report"),j.createElement(L,{mt:"md",spacing:30},a.subject&&j.createElement("div",null,j.createElement(H,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),j.createElement(H,null,j.createElement(Hn,{value:a.subject,link:!0}))),a.resultsInterpreter&&a.resultsInterpreter.map((e=>j.createElement("div",{key:e.reference},j.createElement(H,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),j.createElement(H,null,j.createElement(Hn,{value:e,link:!0}))))),a.issued&&j.createElement("div",null,j.createElement(H,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),j.createElement(H,null,u(a.issued))),a.status&&j.createElement("div",null,j.createElement(H,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),j.createElement(H,null,t(a.status)))),a.result&&j.createElement(Jn,{value:a.result}),o&&j.createElement("pre",null,o.trim()))}function Jn(e){var t;const{classes:n}=Bn();return j.createElement("table",{className:n.table},j.createElement("thead",null,j.createElement("tr",null,j.createElement("th",null,"Test"),j.createElement("th",null,"Value"),j.createElement("th",null,"Reference Range"),j.createElement("th",null,"Interpretation"))),j.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>j.createElement(Yn,{key:"obs-"+t,value:e})))))}function Yn(e){const{classes:t,cx:n}=Bn(),r=qt(e.value);if(!r)return null;const a=function(e){var t,n,r,a;const l=null===(a=null===(r=null===(n=null===(t=e.interpretation)||void 0===t?void 0:t[0])||void 0===n?void 0:n.coding)||void 0===r?void 0:r[0])||void 0===a?void 0:a.code;return"AA"===l||"LL"===l||"HH"===l||"RR"===l}(r);return j.createElement("tr",{className:n({[t.criticalRow]:a})},j.createElement("td",null,j.createElement(cn,{to:r},j.createElement(Yt,{value:r.code}))),j.createElement("td",null,j.createElement(Xn,{value:r})),j.createElement("td",null,j.createElement(Zn,{value:r.referenceRange})),j.createElement("td",null,r.interpretation&&r.interpretation.length>0&&j.createElement(Yt,{value:r.interpretation[0]})))}function Xn(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?j.createElement(nn,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?j.createElement(j.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?j.createElement(j.Fragment,null,n.component.map(((e,t)=>j.createElement(Xn,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Zn(e){const t=e.value&&e.value.length>0&&e.value[0];return t?t.text?j.createElement(j.Fragment,null,t.text):j.createElement(an,{value:t}):null}const er=ne((e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm}px ${e.spacing.sm}px`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}})));function tr(e){const{classes:t}=er(),n=st(),[a,o]=A();if(V((()=>{n.requestSchema(e.original.resourceType).then(o).catch(console.log)}),[n,e.original.resourceType]),!a)return null;const i=a.types[e.original.resourceType];return i?j.createElement("table",{className:t.root},j.createElement("colgroup",null,j.createElement("col",{style:{width:"30%"}}),j.createElement("col",{style:{width:"35%"}}),j.createElement("col",{style:{width:"35%"}})),j.createElement("thead",null,j.createElement("tr",null,j.createElement("th",null,"Property"),j.createElement("th",null,"Before"),j.createElement("th",null,"After"))),j.createElement("tbody",null,Object.entries(i.properties).map((n=>{const a=n[0];if("id"===a||"meta"===a)return null;const o=n[1],[i,c]=mn(v(e.original),a),[s,u]=mn(v(e.revised),a);return nr(i)&&nr(s)||l(i)===l(s)?null:j.createElement("tr",{key:a},j.createElement("td",null,r(a)),j.createElement("td",{className:t.removed},j.createElement(dn,{property:o,propertyType:c,value:i,ignoreMissingValues:!0})),j.createElement("td",{className:t.added},j.createElement(dn,{property:o,propertyType:u,value:s,ignoreMissingValues:!0})))})))):null}function nr(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function rr(e){const t=st(),n=qt(e.value),[r,a]=A();return V((()=>{n&&t.requestSchema(n.resourceType).then(a).catch(console.log)}),[t,n]),r&&n?j.createElement(Gt,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}class ar extends j.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?j.createElement(K,null,"Something went wrong."):this.props.children}}function lr(e){return j.createElement(U,null,e.children)}function or(e){var t,n,r;const a=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return j.createElement(q,{"data-testid":"timeline-item",m:"lg",p:"sm",shadow:"xs",radius:"sm",withBorder:!0,className:e.className},j.createElement(L,{position:"apart",spacing:8},j.createElement(Vn,{value:a,link:!0,size:"md"}),j.createElement("div",{style:{flex:1}},j.createElement(H,{size:"sm"},j.createElement(Qn,{color:"dark",weight:500,value:a,link:!0})),j.createElement(H,{size:"xs"},j.createElement(cn,{color:"dimmed",to:e.resource},u(null===(r=e.resource.meta)||void 0===r?void 0:r.lastUpdated)),j.createElement(H,{component:"span",color:"dimmed",mx:8},"·"),j.createElement(cn,{color:"dimmed",to:e.resource},e.resource.resourceType))),e.popupMenuItems&&j.createElement(se,{position:"bottom-end",shadow:"md",width:200},j.createElement(se.Target,null,j.createElement(M,{radius:"xl","aria-label":`Actions for ${f(e.resource)}`},j.createElement(be,null))),e.popupMenuItems)),j.createElement(ar,null,e.padding&&j.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&j.createElement(j.Fragment,null,e.children)))}function ir(e){e.sort(cr)}function cr(e,t){const n=sr(e),r=sr(t);return n>r?1:n<r?-1:ur(e)-ur(t)}function sr(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function ur(e){var t;if("Communication"===e.resourceType&&e.sent)return new Date(e.sent).getTime();if(("DiagnosticReport"===e.resourceType||"Media"===e.resourceType||"Observation"===e.resourceType)&&e.issued)return new Date(e.issued).getTime();if("DocumentReference"===e.resourceType&&e.date)return new Date(e.date).getTime();const n=null===(t=e.meta)||void 0===t?void 0:t.lastUpdated;return n?new Date(n).getTime():0}const dr=ne((e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}})));function mr(e){const t=Ye(),n=st(),r=n.getProfile(),a=I(null),l=qt(e.value),[o,i]=A(),[c,s]=A([]),u=e.buildSearchRequests,d=I(c);d.current=c;const m=P((()=>{if(!l)return s([]),void i({});n.executeBatch(u(l)).then(p).catch(console.log)}),[n,l,u]);function p(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&i(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}ir(t),t.reverse()}s(t)}function g(e){const t=[...d.current,...e];ir(t),t.reverse(),s(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function v(e){h(e,"stat").then(m).catch(console.log)}function f(e){h(e,"routine").then(m).catch(console.log)}function y(e){t(`/${e.resourceType}/${e.id}`)}function b(e){t(`/${e.resourceType}/${e.id}/edit`)}function C(e){t(`/${e.resourceType}/${e.id}/delete`)}function T(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return V((()=>{m()}),[m]),l&&o?j.createElement(lr,null,e.createCommunication&&j.createElement(q,{m:"lg",p:"sm",shadow:"xs",radius:"sm",withBorder:!0},j.createElement(xt,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,l&&e.createCommunication&&n.createResource(e.createCommunication(l,r,o)).then((e=>{g([e])})).catch(console.log);const i=a.current;i&&(i.value="",i.focus())}},j.createElement(L,{spacing:"xs",noWrap:!0,style:{width:"100%"}},j.createElement(Vn,{value:r}),j.createElement(F,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),j.createElement(M,{type:"submit",radius:"xl",color:"blue",variant:"filled"},j.createElement(Ce,{size:16})),j.createElement(gt,{onUpload:function(t){l&&e.createMedia&&n.createResource(e.createMedia(l,r,t)).then((e=>g([e]))).then((()=>Xe({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:j.createElement(Te,{size:16}),autoClose:2e3}))).catch((e=>Xe({id:"upload-notification",color:"red",title:"Upload error",message:E(e),icon:j.createElement(xe,{size:16}),autoClose:2e3})))},onUploadStart:function(){Ze({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,disallowClose:!0})},onUploadProgress:function(e){Xe({id:"upload-notification",loading:!0,title:"Uploading...",message:yr(e),autoClose:!1,disallowClose:!0})}},(e=>j.createElement(M,Object.assign({},e,{radius:"xl",color:"blue",variant:"filled"}),j.createElement(fe,{size:16}))))))),c.map((e=>{var t;if(e.resourceType===l.resourceType&&e.id===l.id)return j.createElement(gr,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:o,resource:e,onDetails:T});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return j.createElement(fr,{key:n,resource:e,onDetails:y});case"Communication":return j.createElement(hr,{key:n,resource:e,onPin:"stat"!==e.priority?v:void 0,onUnpin:"stat"===e.priority?f:void 0,onDetails:y,onEdit:b,onDelete:C});case"DiagnosticReport":return j.createElement(Er,{key:n,resource:e,onDetails:y,onEdit:b,onDelete:C});case"Media":return j.createElement(vr,{key:n,resource:e,onDetails:y,onEdit:b,onDelete:C});default:return j.createElement(or,{key:n,resource:e,padding:!0},j.createElement(rr,{value:e,ignoreMissingValues:!0}))}}))):j.createElement(oe,null)}function pr(e){return j.createElement(se.Dropdown,null,j.createElement(se.Label,null,"Resource"),e.onPin&&j.createElement(se.Item,{icon:j.createElement(ke,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${f(e.resource)}`},"Pin"),e.onUnpin&&j.createElement(se.Item,{icon:j.createElement(Oe,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${f(e.resource)}`},"Unpin"),e.onDetails&&j.createElement(se.Item,{icon:j.createElement(we,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${f(e.resource)}`},"Details"),e.onEdit&&j.createElement(se.Item,{icon:j.createElement(Se,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${f(e.resource)}`},"Edit"),e.onDelete&&j.createElement(j.Fragment,null,j.createElement(se.Divider,null),j.createElement(se.Label,null,"Danger zone"),j.createElement(se.Item,{color:"red",icon:j.createElement(je,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${f(e.resource)}`},"Delete")))}function gr(e){const t=function(e,t){const n=e.entry,r=n.findIndex((e=>{var n,r,a;return(null===(r=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===r?void 0:r.versionId)===(null===(a=t.meta)||void 0===a?void 0:a.versionId)}));if(r>=n.length-1)return;return n[r+1].resource}(e.history,e.resource);return t?j.createElement(or,{resource:e.resource,padding:!0,popupMenuItems:j.createElement(pr,Object.assign({},e))},j.createElement(tr,{original:t,revised:e.resource})):j.createElement(or,{resource:e.resource,padding:!0,popupMenuItems:j.createElement(pr,Object.assign({},e))},j.createElement("h3",null,"Created"),j.createElement(rr,{value:e.resource,ignoreMissingValues:!0}))}function hr(e){var t,n;const{classes:r}=dr(),a=!e.resource.priority||"routine"===e.resource.priority?void 0:r.pinnedComment;return j.createElement(or,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:j.createElement(pr,Object.assign({},e))},j.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function vr(e){var t;const n=null===(t=e.resource.content)||void 0===t?void 0:t.contentType,r=n&&!n.startsWith("image/")&&!n.startsWith("video/")&&"application/pdf"!==n;return j.createElement(or,{resource:e.resource,padding:!!r,popupMenuItems:j.createElement(pr,Object.assign({},e))},j.createElement(at,{value:e.resource.content}))}function fr(e){return j.createElement(or,{resource:e.resource,padding:!0,popupMenuItems:j.createElement(pr,Object.assign({},e))},j.createElement(ue,null,j.createElement("pre",null,e.resource.outcomeDesc)))}function Er(e){return j.createElement(or,{resource:e.resource,padding:!0,popupMenuItems:j.createElement(pr,Object.assign({},e))},j.createElement(Gn,{value:e.resource}))}function yr(e){if(e.lengthComputable){const t=100*e.loaded/e.total;return`Uploaded: ${br(e.loaded)} / ${br(e.total)} ${t.toFixed(2)}%`}return`Uploaded: ${br(e.loaded)}`}function br(e){if(0==e)return"0.00 B";const t=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,t)).toFixed(2)+" "+" KMGTP".charAt(t)+"B"}function Cr(e){return j.createElement(mr,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${f(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${f(e)}&_sort=-_lastUpdated`}}]})})}function Tr(e){return j.createElement(mr,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${f(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${f(e)}`}},{request:{method:"GET",url:`Media?encounter=${f(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",status:"completed",encounter:m(e),subject:e.subject,sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",status:"completed",encounter:m(e),subject:e.subject,operator:m(t),issued:(new Date).toISOString(),content:n})})}function xr(e){let t;try{t=y(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(t.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${t.length} elements [${JSON.stringify(t,null,2)}]`);return j.createElement(dn,{value:t[0]||"",propertyType:e.propertyType})}function kr(e,t){var r;if("_lastUpdated"===t)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===t)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const a=n.types[e],l=a.properties[t],o=null===(r=a.searchParams)||void 0===r?void 0:r[t.toLowerCase()];if(l&&o)return{name:t,elementDefinition:l,searchParams:[o]};if(l){let n;if(a.searchParams){const r=`${e}.${t.replaceAll("[x]","")}`;n=Object.values(a.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(r)})),0===n.length&&(n=void 0)}return{name:t,elementDefinition:l,searchParams:n}}if(o){return{name:t,elementDefinition:b(e,o).elementDefinition,searchParams:[o]}}return{name:t}}const Or={string:[C.EQUALS,C.NOT,C.CONTAINS,C.EXACT],fulltext:[C.EQUALS,C.NOT,C.CONTAINS,C.EXACT],token:[C.EQUALS,C.NOT],reference:[C.EQUALS,C.NOT],numeric:[C.EQUALS,C.NOT_EQUALS,C.GREATER_THAN,C.LESS_THAN,C.GREATER_THAN_OR_EQUALS,C.LESS_THAN_OR_EQUALS],quantity:[C.EQUALS,C.NOT_EQUALS,C.GREATER_THAN,C.LESS_THAN,C.GREATER_THAN_OR_EQUALS,C.LESS_THAN_OR_EQUALS],date:[C.EQUALS,C.NOT_EQUALS,C.GREATER_THAN,C.LESS_THAN,C.GREATER_THAN_OR_EQUALS,C.LESS_THAN_OR_EQUALS,C.STARTS_AFTER,C.ENDS_BEFORE,C.APPROXIMATELY],datetime:[C.EQUALS,C.NOT_EQUALS,C.GREATER_THAN,C.LESS_THAN,C.GREATER_THAN_OR_EQUALS,C.LESS_THAN_OR_EQUALS,C.STARTS_AFTER,C.ENDS_BEFORE,C.APPROXIMATELY]},wr={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing"};function Sr(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function jr(e){return Sr(e,[])}function Ar(e,t){return Sr(e,(e.filters||[]).filter((e=>e.code!==t)))}function Ir(e,t,n,r,a){a&&(e=Ar(e,t));const l=[];return e.filters&&l.push(...e.filters),l.push({code:t,operator:n,value:r||""}),Sr(e,l)}function Dr(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})}function Vr(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),Object.assign(Object.assign({},e),{filters:n,name:void 0})}function Rr(e,t){return $r(e,t,-1)}function Pr(e,t){return $r(e,t,0)}function Nr(e,t){return $r(e,t,1)}function $r(e,t,n){const r=new Date;r.setDate(r.getDate()+n),r.setHours(0,0,0,0);const a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Wr(e,t,r,a)}function Lr(e,t){return Mr(e,t,-1)}function zr(e,t){return Mr(e,t,0)}function Fr(e,t){return Mr(e,t,1)}function Mr(e,t,n){const r=new Date;r.setMonth(r.getMonth()+n),r.setDate(1),r.setHours(0,0,0,0);const a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Wr(e,t,r,a)}function _r(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return Wr(e,t,n,new Date)}function Ur(e,t,n){return Wr(e,t,n,n)}function qr(e,t,n,r){return Kr(e=Ar(e,t),t,n,r)}function Wr(e,t,n,r){return e=Kr(e=Ar(e,t),t,C.GREATER_THAN_OR_EQUALS,n),e=Kr(e,t,C.LESS_THAN_OR_EQUALS,r)}function Kr(e,t,n,r){return Ir(e,t,n,r.toISOString())}function Qr(e,t,n=!0){return Ir(e,t,C.MISSING,n.toString())}function Hr(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function Br(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Gr(e,t){var n;return Br(e,(t-1)*(null!==(n=e.count)&&void 0!==n?n:T))}function Jr(e,t,n){return t===Xr(e)&&void 0!==n&&n===Zr(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Yr(e,t){let n=!1;return Xr(e)===t&&(n=!Zr(e)),Jr(e,t,n)}function Xr(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Zr(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function ea(e){return Or[e.type]}function ta(e){var t;return null!==(t=wr[e])&&void 0!==t?t:""}function na(e){let n=e;return n.includes(".")&&(n=n.split(".").pop()),"id"===n?"ID":"versionId"===n?"Version ID":(n=n.replace("[x]",""),n=n.replace(/([A-Z])/g," $1"),n=n.replace(/[-_]/g," "),n=n.replace(/\s+/g," "),n=n.trim(),n.split(/\s/).map(t).join(" "))}function ra(e,t){var n,r;const a=t.name;return"id"===a?e.id:"meta.versionId"===a?null===(n=e.meta)||void 0===n?void 0:n.versionId:"_lastUpdated"===a?u(null===(r=e.meta)||void 0===r?void 0:r.lastUpdated):t.elementDefinition&&`${e.resourceType}.${t.name}`===t.elementDefinition.path?function(e,t){var n,r,a;const l=(null===(a=null===(r=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===r?void 0:r.pop())||void 0===a?void 0:a.replaceAll("[x]",""))||"",[o,i]=mn({type:e.resourceType,value:e},l);if(!o)return null;return j.createElement(dn,{property:t,propertyType:i,value:o,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,t.elementDefinition):t.searchParams&&1===t.searchParams.length&&t.name===t.searchParams[0].code?function(e,t,n){const r=x(t.expression,[{type:e.resourceType,value:e}]);if(!r||0===r.length)return null;if(n)return j.createElement(dn,{propertyType:r[0].type,value:r[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return j.createElement(j.Fragment,null,r.map(((e,t)=>j.createElement("span",{key:`${t}-${r.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function aa(e){var t;const[r,a]=A({search:JSON.parse(l(e.search))}),o=I(null),i=I(null);function c(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],l=null===(t=o.current)||void 0===t?void 0:t.value;if(l){const e=[...n,l];a({search:Object.assign(Object.assign({},r.search),{fields:e})})}}function s(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],l=null===(t=i.current)||void 0===t?void 0:t.value;if(l){const e=[...n];e.splice(e.indexOf(l),1),a({search:Object.assign(Object.assign({},r.search),{fields:e})})}}function u(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}if(V((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const d=e.search.resourceType,m=n.types[d],p=null!==(t=r.search.fields)&&void 0!==t?t:[],g=function(e){const t=[],n=new Set,r=new Set;for(const a of Object.keys(e.properties))t.push(a),n.add(a.toLowerCase()),r.add(na(a));if(e.searchParams)for(const a of Object.keys(e.searchParams)){const e=na(a);n.has(a)||r.has(e)||(t.push(a),n.add(a),r.add(na(a)))}return t}(m).filter((e=>!(null==p?void 0:p.includes(e)))).sort();return j.createElement(ie,{title:"Fields",closeButtonLabel:"Close",opened:e.visible,onClose:e.onCancel},j.createElement("div",null,j.createElement("table",{style:{margin:"auto"}},j.createElement("thead",null,j.createElement("tr",null,j.createElement("th",{colSpan:2,align:"center"},"Available"),j.createElement("th",{colSpan:2,align:"center"},"Selected"))),j.createElement("tbody",null,j.createElement("tr",null,j.createElement("td",{colSpan:2,align:"center"},j.createElement("select",{ref:o,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"available"},g.map((e=>j.createElement("option",{key:e,value:e},na(e)))))),j.createElement("td",{colSpan:2,align:"center"},j.createElement("select",{ref:i,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&s()}(e),onDoubleClick:()=>{s()},"data-testid":"selected"},p.map((e=>j.createElement("option",{key:e,value:e},na(e)))))))),j.createElement("tfoot",null,j.createElement("tr",null,j.createElement("td",{align:"center"},j.createElement(_,{compact:!0,variant:"outline",onClick:c},"Add")),j.createElement("td",{align:"center"},j.createElement(_,{compact:!0,variant:"outline",onClick:s},"Remove")),j.createElement("td",{align:"center"},j.createElement(_,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],l=null===(t=i.current)||void 0===t?void 0:t.value;if(l){const e=[...n],t=e.indexOf(l);u(e,t,t-1),a({search:Object.assign(Object.assign({},r.search),{fields:e})})}}},"Up")),j.createElement("td",{align:"center"},j.createElement(_,{compact:!0,variant:"outline",onClick:function(){var e,t;const n=null!==(e=r.search.fields)&&void 0!==e?e:[],l=null===(t=i.current)||void 0===t?void 0:t.value;if(l){const e=[...n],t=e.indexOf(l);u(e,t,t+1),a({search:Object.assign(Object.assign({},r.search),{fields:e})})}}},"Down")))))),j.createElement(_,{onClick:()=>e.onOk(r.search)},"OK"))}function la(e){var t,r;const{resourceType:a,filter:l}=e,o=null===(r=null===(t=n.types[a])||void 0===t?void 0:t.searchParams)||void 0===r?void 0:r[l.code];if(o){if("reference"===o.type)return j.createElement(Qn,{value:{reference:l.value}});const e=b(a,o);if("_lastUpdated"===l.code||e.type===k.DATETIME)return j.createElement(j.Fragment,null,u(l.value))}return j.createElement(j.Fragment,null,l.value)}function oa(e){var t;const n="filter-value";switch(b(e.resourceType,e.searchParam).type){case k.REFERENCE:return j.createElement($n,{name:n,defaultValue:{reference:e.defaultValue},targetTypes:null===(t=e.searchParam)||void 0===t?void 0:t.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case k.BOOLEAN:return j.createElement(Y,{name:n,"data-testid":n,defaultChecked:"true"===e.defaultValue,onChange:t=>e.onChange(t.currentTarget.checked.toString())});case k.DATE:return j.createElement(F,{type:"date",name:n,"data-testid":n,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case k.DATETIME:return j.createElement(Cn,{name:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return j.createElement(F,{type:"number",name:n,"data-testid":n,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case k.QUANTITY:return j.createElement(jn,{name:n,defaultValue:ia(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return j.createElement(F,{name:n,"data-testid":n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:t=>e.onChange(t.currentTarget.value),placeholder:"Search value"})}}function ia(e){if(e){const[t,n,r]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:r}}}function ca(e){const[t,r]=A(JSON.parse(l(e.search))),[a,o]=A(-1),i=I(t);if(i.current=t,V((()=>{r(JSON.parse(l(e.search)))}),[e.search]),!e.visible)return null;const c=e.search.resourceType,s=n.types[c].searchParams,u=t.filters||[];return j.createElement(ie,{title:"Filters",closeButtonLabel:"Close",size:900,opened:e.visible,onClose:e.onCancel},j.createElement("div",null,j.createElement("table",null,j.createElement("colgroup",null,j.createElement("col",{style:{width:200}}),j.createElement("col",{style:{width:200}}),j.createElement("col",{style:{width:380}}),j.createElement("col",{style:{width:120}})),j.createElement("thead",null,j.createElement("tr",null,j.createElement("th",null,"Field"),j.createElement("th",null,"Operation"),j.createElement("th",null,"Value"),j.createElement("th",null,"Actions"))),j.createElement("tbody",null,u.map(((e,t)=>t===a?j.createElement(ua,{key:`filter-${t}-${u.length}-input`,resourceType:c,searchParams:s,defaultValue:e,okText:"Save",onOk:e=>{const n=[...u];n[t]=e,r(Sr(i.current,n)),o(-1)},onCancel:()=>o(-1)}):j.createElement(sa,{key:`filter-${t}-${u.length}-display`,resourceType:c,searchParams:s,filter:e,onEdit:()=>o(t),onDelete:()=>r(Vr(i.current,t))}))),j.createElement(ua,{resourceType:c,searchParams:s,okText:"Add",onOk:function(e){r(Ir(i.current,e.code,e.operator,e.value))}})))),j.createElement(L,{position:"right",mt:"xl"},j.createElement(_,{onClick:()=>e.onOk(i.current)},"OK")))}function sa(e){const{filter:t}=e;return j.createElement("tr",null,j.createElement("td",null,na(t.code)),j.createElement("td",null,ta(t.operator)),j.createElement("td",null,j.createElement(la,{resourceType:e.resourceType,filter:t})),j.createElement("td",null,j.createElement(_,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),j.createElement(_,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function ua(e){var t;const[n,r]=A(null!==(t=e.defaultValue)&&void 0!==t?t:{}),a=I(n);a.current=n;const l=e.searchParams[n.code],o=l&&ea(l);return j.createElement("tr",null,j.createElement("td",null,j.createElement(z,{"data-testid":"filter-field",defaultValue:a.current.code,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},a.current),{code:t}));var t},data:Object.keys(e.searchParams).map((e=>({value:e,label:na(e)})))})),j.createElement("td",null,o&&j.createElement(z,{"data-testid":"filter-operation",defaultValue:n.operator,onChange:e=>{return t=e.currentTarget.value,void r(Object.assign(Object.assign({},a.current),{operator:t}));var t},data:["",...o.map((e=>({value:e,label:ta(e)})))]})),j.createElement("td",null,l&&n.operator&&j.createElement(oa,{resourceType:e.resourceType,searchParam:l,defaultValue:n.value,onChange:function(e){r(Object.assign(Object.assign({},a.current),{value:e}))}})),j.createElement("td",null,n.code&&n.operator&&n.value&&j.createElement(_,{compact:!0,variant:"outline",onClick:()=>{e.onOk(a.current),r({})}},e.okText),e.onCancel&&j.createElement(_,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}function da(e){var t;const[n,r]=A(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function a(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return j.createElement(ie,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},j.createElement("div",{style:{width:500}},j.createElement(xt,{onSubmit:a},j.createElement(oa,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:r}))),j.createElement(_,{onClick:a},"OK"))}function ma(e){if(!e.searchParams)return null;function t(t){e.onChange(t)}return 1===e.searchParams.length?j.createElement(pa,{search:e.search,searchParam:e.searchParams[0],onSort:function(n,r){t(Jr(e.search,n.code,r))},onPrompt:function(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})},onChange:t,onClear:function(n){t(Ar(e.search,n.code))}}):j.createElement(se.Dropdown,null,e.searchParams.map((e=>j.createElement(se.Item,{key:e.code},na(e.code)))))}function pa(e){switch(e.searchParam.type){case"date":return j.createElement(ga,Object.assign({},e));case"number":case"quantity":return j.createElement(ha,Object.assign({},e));case"reference":return j.createElement(va,Object.assign({},e));case"string":case"token":case"uri":return j.createElement(fa,Object.assign({},e));default:return j.createElement(j.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function ga(e){const{searchParam:t}=e,n=t.code;return j.createElement(se.Dropdown,null,j.createElement(se.Item,{icon:j.createElement(Ae,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),j.createElement(se.Item,{icon:j.createElement(Ie,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(De,{size:14}),onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),j.createElement(se.Item,{icon:j.createElement(Ve,{size:14}),onClick:()=>e.onPrompt(t,C.NOT_EQUALS)},"Does not equal..."),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(Re,{size:14}),onClick:()=>e.onPrompt(t,C.ENDS_BEFORE)},"Before..."),j.createElement(se.Item,{icon:j.createElement(Pe,{size:14}),onClick:()=>e.onPrompt(t,C.STARTS_AFTER)},"After..."),j.createElement(se.Item,{icon:j.createElement(Ne,{size:14}),onClick:()=>e.onPrompt(t,C.EQUALS)},"Between..."),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement($e,{size:14}),onClick:()=>e.onChange(Nr(e.search,n))},"Tomorrow"),j.createElement(se.Item,{icon:j.createElement($e,{size:14}),onClick:()=>e.onChange(Pr(e.search,n))},"Today"),j.createElement(se.Item,{icon:j.createElement($e,{size:14}),onClick:()=>e.onChange(Rr(e.search,n))},"Yesterday"),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement($e,{size:14}),onClick:()=>e.onChange(Fr(e.search,n))},"Next Month"),j.createElement(se.Item,{icon:j.createElement($e,{size:14}),onClick:()=>e.onChange(zr(e.search,n))},"This Month"),j.createElement(se.Item,{icon:j.createElement($e,{size:14}),onClick:()=>e.onChange(Lr(e.search,n))},"Last Month"),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement($e,{size:14}),onClick:()=>e.onChange(_r(e.search,n))},"Year to date"),j.createElement(Ea,Object.assign({},e)))}function ha(e){const{searchParam:t}=e;return j.createElement(se.Dropdown,null,j.createElement(se.Item,{icon:j.createElement(Ae,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),j.createElement(se.Item,{icon:j.createElement(Ie,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(De,{size:14}),onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),j.createElement(se.Item,{icon:j.createElement(Ve,{size:14}),onClick:()=>e.onPrompt(t,C.NOT_EQUALS)},"Does not equal..."),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(Pe,{size:14}),onClick:()=>e.onPrompt(t,C.GREATER_THAN)},"Greater than..."),j.createElement(se.Item,{icon:j.createElement(Le,{size:14}),onClick:()=>e.onPrompt(t,C.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),j.createElement(se.Item,{icon:j.createElement(Re,{size:14}),onClick:()=>e.onPrompt(t,C.LESS_THAN)},"Less than..."),j.createElement(se.Item,{icon:j.createElement(Le,{size:14}),onClick:()=>e.onPrompt(t,C.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),j.createElement(Ea,Object.assign({},e)))}function va(e){const{searchParam:t}=e;return j.createElement(se.Dropdown,null,j.createElement(se.Item,{icon:j.createElement(De,{size:14}),onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),j.createElement(se.Item,{icon:j.createElement(Ve,{size:14}),onClick:()=>e.onPrompt(t,C.NOT)},"Does not equal..."),j.createElement(Ea,Object.assign({},e)))}function fa(e){const{searchParam:t}=e;return j.createElement(se.Dropdown,null,j.createElement(se.Item,{icon:j.createElement(Ae,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort A to Z"),j.createElement(se.Item,{icon:j.createElement(Ie,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Z to A"),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(De,{size:14}),onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),j.createElement(se.Item,{icon:j.createElement(Ve,{size:14}),onClick:()=>e.onPrompt(t,C.NOT)},"Does not equal..."),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(ze,{size:14}),onClick:()=>e.onPrompt(t,C.CONTAINS)},"Contains..."),j.createElement(se.Item,{icon:j.createElement(Fe,{size:14}),onClick:()=>e.onPrompt(t,C.EQUALS)},"Does not contain..."),j.createElement(Ea,Object.assign({},e)))}function Ea(e){const{searchParam:t}=e,n=t.code;return j.createElement(j.Fragment,null,j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(Me,{size:14}),onClick:()=>e.onChange(Qr(e.search,n))},"Missing"),j.createElement(se.Item,{icon:j.createElement(_e,{size:14}),onClick:()=>e.onChange(Qr(e.search,n,!1))},"Not missing"),j.createElement(se.Divider,null),j.createElement(se.Item,{icon:j.createElement(Ue,{size:14}),onClick:()=>e.onClear(t)},"Clear filters"))}class ya extends Event{constructor(e){super("change"),this.definition=e}}class ba extends Event{constructor(e){super("load"),this.response=e}}class Ca extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}const Ta=ne((e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:"dark"===e.colorScheme?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs}px ${e.spacing.md}px`,"&:hover":{backgroundColor:"dark"===e.colorScheme?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}})));function xa(e){var t,r;const{classes:a}=Ta(),l=st(),[o,i]=A(!1),[c,s]=A(),{search:u,onLoad:d}=e,[m,p]=A({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),g=I(m);function h(t){e.onChange&&e.onChange(new ya(t))}function v(t,n){mt(t.target)||2!==t.button&&(dt(t),1!==t.button&&e.onClick&&e.onClick(new Ca(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Ca(n,t)))}g.current=m,V((()=>{s(void 0),l.search(u.resourceType,O(Object.assign(Object.assign({},u),{total:"accurate",fields:void 0}))).then((e=>{p(Object.assign(Object.assign({},g.current),{searchResponse:e})),d&&d(new ba(e))})).catch((e=>{p(Object.assign(Object.assign({},g.current),{searchResponse:void 0})),s(e)}))}),[l,u,d]),V((()=>{i(!1),l.requestSchema(e.search.resourceType).then((()=>i(!0))).catch(console.log)}),[l,e.search.resourceType]);if(!(o&&(null===(t=null==n?void 0:n.types)||void 0===t?void 0:t[e.search.resourceType])))return j.createElement(oe,null);const f=e.checkboxesEnabled,E=function(e){const t=e.resourceType,n=[];for(const r of e.fields||["id","_lastUpdated"])n.push(kr(t,r));return n}(u),y=u.resourceType,b=m.searchResponse,C=null==b?void 0:b.entry,x=null==C?void 0:C.map((e=>e.resource)),k="subtle",w="gray",S=16,D=window.innerWidth<768;return j.createElement("div",{className:a.root,"data-testid":"search-control"},!e.hideToolbar&&j.createElement(L,{position:"apart",mb:"xl"},j.createElement(L,{spacing:2},j.createElement(_,{compact:!0,variant:k,color:w,leftIcon:j.createElement(qe,{size:S}),onClick:()=>p(Object.assign(Object.assign({},g.current),{fieldEditorVisible:!0}))},"Fields"),j.createElement(_,{compact:!0,variant:k,color:w,leftIcon:j.createElement(We,{size:S}),onClick:()=>p(Object.assign(Object.assign({},g.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&j.createElement(_,{compact:!0,variant:k,color:w,leftIcon:j.createElement(Ke,{size:S}),onClick:e.onNew},"New..."),!D&&e.onExport&&j.createElement(_,{compact:!0,variant:k,color:w,leftIcon:j.createElement(Qe,{size:S}),onClick:e.onExport},"Export..."),!D&&e.onDelete&&j.createElement(_,{compact:!0,variant:k,color:w,leftIcon:j.createElement(je,{size:S}),onClick:()=>e.onDelete(Object.keys(m.selected))},"Delete..."),!D&&e.onBulk&&j.createElement(_,{compact:!0,variant:k,color:w,leftIcon:j.createElement(He,{size:S}),onClick:()=>e.onBulk(Object.keys(m.selected))},"Bulk...")),b&&j.createElement(H,{size:"xs",color:"dimmed"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(u,b.total),"-",function(e,t){var n,r;return Math.min(t,((null!==(n=e.offset)&&void 0!==n?n:0)+1)*(null!==(r=e.count)&&void 0!==r?r:T))}(u,b.total)," of"," ",null===(r=b.total)||void 0===r?void 0:r.toLocaleString())),j.createElement(de,{className:a.table},j.createElement("thead",null,j.createElement("tr",null,f&&j.createElement("th",null,j.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=g.current;if(!(null===(e=n.searchResponse)||void 0===e?void 0:e.entry)||0===n.searchResponse.entry.length)return!1;for(const e of n.searchResponse.entry)if((null===(t=e.resource)||void 0===t?void 0:t.id)&&!n.selected[e.resource.id])return!1;return!0}(),onChange:e=>function(e){var t;e.stopPropagation();const n=e.target.checked,r={},a=null===(t=g.current)||void 0===t?void 0:t.searchResponse;n&&(null==a?void 0:a.entry)&&a.entry.forEach((e=>{var t;(null===(t=e.resource)||void 0===t?void 0:t.id)&&(r[e.resource.id]=!0)})),p(Object.assign(Object.assign({},g.current),{selected:r}))}(e)})),E.map((t=>j.createElement("th",{key:t.name},j.createElement(se,{shadow:"md",width:240,position:"bottom-end"},j.createElement(se.Target,null,j.createElement(Z,{className:a.control},j.createElement(L,{position:"apart",noWrap:!0},j.createElement(H,{weight:500,size:"sm"},na(t.name)),j.createElement(W,{className:a.icon},j.createElement(Be,{size:14,stroke:1.5}))))),j.createElement(ma,{search:e.search,searchParams:t.searchParams,onPrompt:(e,t)=>{p(Object.assign(Object.assign({},g.current),{filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{h(e)}})))))),!e.hideFilters&&j.createElement("tr",null,f&&j.createElement("th",null),E.map((t=>j.createElement("th",{key:t.name},t.searchParams&&j.createElement(Oa,{resourceType:y,searchParams:t.searchParams,filters:e.search.filters})))))),j.createElement("tbody",null,null==x?void 0:x.map((e=>e&&j.createElement("tr",{key:e.id,className:a.tr,"data-testid":"search-control-row",onClick:t=>v(t,e),onAuxClick:t=>v(t,e)},f&&j.createElement("td",null,j.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!m.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,r=Object.assign({},g.current.selected);n?r[t]=!0:delete r[t],p(Object.assign(Object.assign({},g.current),{selected:r}))}(t,e.id)})),E.map((t=>j.createElement("td",{key:t.name},ra(e,t))))))))),0===(null==x?void 0:x.length)&&j.createElement(U,null,j.createElement(W,null,j.createElement(H,{size:"xl",color:"dimmed"},"No results"))),void 0!==(null==b?void 0:b.total)&&b.total>0&&j.createElement(W,{m:"md",p:"md"},j.createElement(me,{page:wa(u),total:Sa(u,b.total),onChange:e=>h(Gr(u,e)),getItemAriaLabel:e=>{switch(e){case"prev":return"Previous page";case"next":return"Next page";default:return}}})),c&&j.createElement("div",{"data-testid":"search-error"},j.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),j.createElement(aa,{search:e.search,visible:g.current.fieldEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},g.current),{fieldEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},g.current),{fieldEditorVisible:!1}))}}),j.createElement(ca,{search:e.search,visible:g.current.filterEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},g.current),{filterEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},g.current),{filterEditorVisible:!1}))}}),j.createElement(da,{visible:g.current.filterDialogVisible,title:"Input",resourceType:y,searchParam:m.filterDialogSearchParam,filter:m.filterDialogFilter,defaultValue:"",onOk:t=>{h(Ir(e.search,t.code,t.operator,t.value)),p(Object.assign(Object.assign({},g.current),{filterDialogVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},g.current),{filterDialogVisible:!1}))}}))}const ka=j.memo(xa);function Oa(e){var t;const n=(null!==(t=e.filters)&&void 0!==t?t:[]).filter((t=>e.searchParams.find((e=>e.code===t.code))));return 0===n.length?j.createElement("span",null,"no filters"):j.createElement(j.Fragment,null,n.map(((t,r)=>j.createElement("div",{key:`filter-${r}-${n.length}`},ta(t.operator)," ",j.createElement(la,{resourceType:e.resourceType,filter:t})))))}function wa(e){return Math.floor((e.offset||0)/(e.count||T))+1}function Sa(e,t){const n=e.count||T;return Math.ceil(t/n)}function ja(e){var t,n,r,a,l;const o=st(),[i,c]=A(),[s,u]=A(),{query:d,fields:m}=e,[p,g]=A(),[h,v]=A({}),f=I();f.current=p;const E=I({});function y(t,n){mt(t.target)||(dt(t),1!==t.button&&e.onClick&&e.onClick(new Ca(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Ca(n,t)))}E.current=h,V((()=>{u(void 0),o.graphql(d).then(g).catch(u)}),[o,d]),V((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))})).catch(console.log)}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return j.createElement(oe,null);const b=e.checkboxesEnabled;return j.createElement("div",{onContextMenu:e=>dt(e),"data-testid":"search-control"},j.createElement(de,null,j.createElement("thead",null,j.createElement("tr",null,b&&j.createElement("th",null,j.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=f.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!E.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const r=e.target.checked,a={},l=null===(n=null===(t=f.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;r&&l&&l.forEach((e=>{(null==e?void 0:e.id)&&(a[e.id]=!0)})),v(a)}(e)})),m.map((e=>j.createElement("th",{key:e.name},e.name))))),j.createElement("tbody",null,null===(r=null===(n=null==p?void 0:p.data)||void 0===n?void 0:n.ResourceList)||void 0===r?void 0:r.map((e=>e&&j.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&j.createElement("td",null,j.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!h[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,r=Object.assign({},E.current);n?r[t]=!0:delete r[t],v(r)}(t,e.id)})),m.map((t=>j.createElement("td",{key:t.name},j.createElement(xr,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(l=null===(a=null==p?void 0:p.data)||void 0===a?void 0:a.ResourceList)||void 0===l?void 0:l.length)&&j.createElement("div",{"data-testid":"empty-search"},"No results"),s&&j.createElement("div",{"data-testid":"search-error"},j.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(s,void 0,2))),e.onBulk&&j.createElement(_,{onClick:()=>e.onBulk(Object.keys(E.current))},"Bulk..."))}const Aa=j.memo(ja),Ia=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function Da(e){return j.createElement(mr,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Ia.map((t=>({request:{method:"GET",url:t.replaceAll("$",f(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",status:"completed",subject:m(e),sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",status:"completed",subject:m(e),operator:m(t),issued:(new Date).toISOString(),content:n})})}const Va=ne((e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}})));function Ra(e){const t=st(),n=qt(e.value),[r,a]=A(void 0),[l,o]=A(),[i,c]=A(),[s,u]=A();function d(){c(void 0)}function m(){o(void 0)}const p=I();if(p.current=s,V((()=>{t.requestSchema("PlanDefinition").then(a).catch(console.log)}),[t]),V((()=>{var e;return u((e=null!=n?n:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:Wa(e.action)}))),document.addEventListener("mouseover",d),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",m)}}),[n]),!r||!s)return null;function g(e,t){u(Object.assign(Object.assign({},p.current),{[e]:t}))}return j.createElement("div",null,j.createElement(xt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(s)},j.createElement(F,{label:"Plan Title",defaultValue:s.title,onChange:e=>g("title",e.currentTarget.value)}),j.createElement(Pa,{actions:s.action||[],selectedKey:l,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>g("action",e)}),j.createElement(_,{type:"submit"},"Save")))}function Pa(e){const{classes:t}=Va(),n=I();function r(t){e.onChange(n.current.map((e=>e.id===t.id?t:e)))}return n.current=e.actions,j.createElement("div",{className:t.section},e.actions.map((t=>j.createElement("div",{key:t.id},j.createElement(Na,{action:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>{return r=t,void e.onChange(n.current.filter((e=>e!==r)));var r}})))),j.createElement("div",{className:t.bottomActions},j.createElement("a",{href:"#",onClick:t=>{var r;dt(t),r={id:qa()},e.onChange([...n.current,r]),e.setSelectedKey(r.id)}},"Add action")))}function Na(e){const{classes:t,cx:n}=Va(),{action:r}=e,a=function(e){var t,n,r;if(null===(t=e.definitionCanonical)||void 0===t?void 0:t.startsWith("Schedule"))return"appointment";if(null===(n=e.definitionCanonical)||void 0===n?void 0:n.startsWith("Questionnaire/"))return"questionnaire";if(null===(r=e.definitionCanonical)||void 0===r?void 0:r.startsWith("ActivityDefinition/"))return"task";return}(r),l=e.selectedKey===e.action.id,o=e.hoverKey===e.action.id;const i=n(t.section,{[t.editing]:l,[t.hovering]:o&&!l});return j.createElement("div",{"data-testid":r.id,className:i,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){dt(t),e.setHoverKey(e.action.id)}},l?j.createElement(za,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):j.createElement(La,{action:r,actionType:a}),j.createElement("div",{className:t.bottomActions},j.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const $a={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function La(e){const{action:t,actionType:n}=e,[r,a]=_a(t);return j.createElement("div",null,j.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&j.createElement("div",null,j.createElement(sn,{value:{reference:t.definitionCanonical}})),r&&j.createElement("div",null,j.createElement(dn,{property:$a,propertyType:a,value:r})))}function za(e){const{action:t}=e,[n,r]=A(e.actionType);function a(n,r){e.onChange(Object.assign(Object.assign({},t),{[n]:r}))}return j.createElement(Q,{spacing:"xl"},j.createElement(F,{name:`actionTitle-${t.id}`,label:"Title",defaultValue:t.title,onChange:e=>a("title",e.currentTarget.value)}),j.createElement(F,{name:`actionDescription-${t.id}`,label:"Description",defaultValue:t.description,onChange:e=>a("description",e.currentTarget.value)}),j.createElement(z,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${t.id}`,defaultValue:n,onChange:e=>r(e.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),t.action&&t.action.length>0&&j.createElement(Pa,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>a("action",e)}),(()=>{switch(n){case"appointment":return j.createElement(Fa,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return j.createElement(Fa,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return j.createElement(Fa,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return j.createElement(Fa,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),j.createElement(_t,{title:"Timing",description:"When the action should take place."},j.createElement(Ma,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Fa(e){const{id:t,definitionCanonical:n}=e.action,r=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return j.createElement(Pn,{name:t,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:f(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}})}function Ma(e){const t=e.action,n="timing",[r,a]=_a(t);return j.createElement(_n,{property:$a,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(r,a)=>{e.onChange(Kt(t,n,null!=a?a:n,$a,r))}})}function _a(e){return mn({type:"PlanDefinitionAction",value:e},"timing")}let Ua=1;function qa(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Ua=Math.max(Ua,t+1))}return e}return"id-"+Ua++}function Wa(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:qa(e.id),action:Wa(e.action)})))}var Ka;function Qa(e){return"choice"===e.type||"open-choice"===e.type}function Ha(e){const t=st(),n=t.getProfile(),[r,a]=A(),l=qt(e.questionnaire),[o,i]=A(),[c,s]=A({});return V((()=>{t.requestSchema("Questionnaire").then((()=>t.requestSchema("QuestionnaireResponse"))).then(a).catch(console.log)}),[t]),V((()=>{i(l?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:f(e),item:Za(e.item)}}(l):void 0)}),[l]),r&&l?j.createElement(xt,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:f(l),subject:e.subject,source:m(n),authored:(new Date).toISOString()}))}},l.title&&j.createElement(K,null,l.title),l.item&&j.createElement(Ba,{items:l.item,answers:c,onChange:function(e){const t={resourceType:"QuestionnaireResponse",item:e};i(t),s(S(t))}}),j.createElement(L,{position:"right",mt:"xl"},j.createElement(_,{type:"submit"},e.submitButtonText||"OK"))):null}function Ba(e){const[t,n]=A(Za(e.items));function r(r,a){const l=t.slice();l[r]=a,n(l),e.onChange(l)}return j.createElement(Q,null,e.items.map(((t,n)=>{if(!nl(t,e.answers))return null;if(t.type===Ka.display)return j.createElement("p",{key:t.linkId},t.text);if(t.type===Ka.group)return j.createElement(Ga,{key:t.linkId,item:t,answers:e.answers,onChange:e=>r(n,e)});if(t.type===Ka.boolean){const e=t.initial&&t.initial.length>0?t.initial[0]:void 0;return j.createElement(Ft,{key:t.linkId,title:t.text,htmlFor:t.linkId},j.createElement(Y,{id:t.linkId,name:t.linkId,defaultChecked:null==e?void 0:e.valueBoolean,onChange:e=>r(n,{linkId:t.linkId,text:t.text,answer:[{valueBoolean:e.currentTarget.checked}]})}))}return j.createElement(_t,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},j.createElement(Ga,{item:t,answers:e.answers,onChange:e=>r(n,e)}))})))}function Ga(e){const t=e.item,n=t.type;if(!n)return null;const r=t.linkId;if(!r)return null;const a=t.initial&&t.initial.length>0?t.initial[0]:void 0;function l(n){e.onChange({linkId:t.linkId,text:t.text,answer:[n]})}switch(n){case Ka.group:return j.createElement("div",null,j.createElement("h3",null,t.text),t.item&&j.createElement(Ba,{items:t.item,answers:e.answers,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case Ka.boolean:return j.createElement(Y,{id:r,name:r,defaultChecked:null==a?void 0:a.valueBoolean,onChange:e=>l({valueBoolean:e.currentTarget.checked})});case Ka.decimal:return j.createElement(F,{type:"number",step:"any",id:r,name:r,defaultValue:null==a?void 0:a.valueDecimal,onChange:e=>l({valueDecimal:e.currentTarget.valueAsNumber})});case Ka.integer:return j.createElement(F,{type:"number",step:1,id:r,name:r,defaultValue:null==a?void 0:a.valueInteger,onChange:e=>l({valueInteger:e.currentTarget.valueAsNumber})});case Ka.date:return j.createElement(F,{type:"date",id:r,name:r,defaultValue:null==a?void 0:a.valueDate,onChange:e=>l({valueDate:e.currentTarget.value})});case Ka.dateTime:return j.createElement(Cn,{name:r,defaultValue:null==a?void 0:a.valueDateTime,onChange:e=>l({valueDateTime:e})});case Ka.time:return j.createElement(F,{type:"time",id:r,name:r,defaultValue:null==a?void 0:a.valueTime,onChange:e=>l({valueTime:e.currentTarget.value})});case Ka.string:case Ka.url:return j.createElement(F,{id:r,name:r,defaultValue:null==a?void 0:a.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case Ka.text:return j.createElement(ce,{id:r,name:r,defaultValue:null==a?void 0:a.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case Ka.attachment:return j.createElement(vt,{name:r,defaultValue:null==a?void 0:a.valueAttachment,onChange:e=>l({valueAttachment:e})});case Ka.reference:return j.createElement($n,{name:r,defaultValue:null==a?void 0:a.valueReference,onChange:e=>l({valueReference:e})});case Ka.quantity:return j.createElement(jn,{name:r,defaultValue:null==a?void 0:a.valueQuantity,onChange:e=>l({valueQuantity:e})});case Ka.choice:case Ka.openChoice:return function(e){var t;return!!(null===(t=e.extension)||void 0===t?void 0:t.some((e=>{var t,n,r;return"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===(null===(r=null===(n=null===(t=e.valueCodeableConcept)||void 0===t?void 0:t.coding)||void 0===n?void 0:n[0])||void 0===r?void 0:r.code)})))}(t)?j.createElement(Ja,{name:r,item:t,initial:a,onChangeAnswer:l}):j.createElement(Xa,{name:r,item:t,initial:a,onChangeAnswer:l})}return null}function Ja(e){const{name:n,item:r,initial:a}=e,l=d({type:"QuestionnaireItemInitial",value:a},"value"),o=[""];if(r.answerOption)for(const e of r.answerOption){const t=d({type:"QuestionnaireItemAnswerOption",value:e},"value");o.push(Ya(t))}return j.createElement(z,{id:n,name:n,onChange:n=>{const a=n.currentTarget.selectedIndex;if(0===a)return void e.onChangeAnswer({});const l=r.answerOption[a-1],o=d({type:"QuestionnaireItemAnswerOption",value:l},"value"),i="value"+t(o.type);e.onChangeAnswer({[i]:o.value})},defaultValue:Ya(l),data:o})}function Ya(e){if(e)return"CodeableConcept"===e.type?e.value.coding[0].display:"Coding"===e.type?e.value.display:e.value.toString()}function Xa(e){const{name:r,item:a,initial:o,onChangeAnswer:i}=e,c=n.types.QuestionnaireItemAnswerOption.properties["value[x]"],s=d({type:"QuestionnaireItemInitial",value:o},"value"),u=[];let m;if(a.answerOption)for(let e=0;e<a.answerOption.length;e++){const t=a.answerOption[e],n=`${r}-option-${e}`,o=d({type:"QuestionnaireItemAnswerOption",value:t},"value");s&&l(o)===l(s)&&(m=n),u.push([n,o])}return j.createElement(pe.Group,{name:r,orientation:"vertical",defaultValue:m,onChange:e=>{const n=u.find((t=>t[0]===e));if(n){const e=n[1],r="value"+t(e.type);i({[r]:e.value})}}},u.map((([e,t])=>j.createElement(pe,{key:e,id:e,value:e,label:j.createElement(dn,{property:c,propertyType:t.type,value:t.value})}))))}function Za(e){var t;return null!==(t=null==e?void 0:e.map(el))&&void 0!==t?t:[]}function el(e){var t,n;return{linkId:e.linkId,text:e.text,item:Za(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(tl))&&void 0!==n?n:[]}}function tl(e){return Object.assign({},e)}function nl(e,t){if(!e.enableWhen)return!0;const n=e.enableBehavior||"any";for(const r of e.enableWhen){const e=d({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),a=d({type:"QuestionnaireResponseItemAnswer",value:t[r.question]},"value[x]"),l=w(e,a);if("any"===n&&l)return!0;if("all"===n&&!l)return!1}return"any"!==n}!function(e){e.group="group",e.display="display",e.question="question",e.boolean="boolean",e.decimal="decimal",e.integer="integer",e.date="date",e.dateTime="dateTime",e.time="time",e.string="string",e.text="text",e.url="url",e.choice="choice",e.openChoice="open-choice",e.attachment="attachment",e.reference="reference",e.quantity="quantity"}(Ka||(Ka={}));const rl=ne((e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}})));function al(e){const t=st(),n=qt(e.questionnaire),[r,a]=A(),[l,o]=A(),[i,c]=A(),[s,u]=A();function d(){u(void 0)}function m(){c(void 0)}return V((()=>{t.requestSchema("Questionnaire").then(a).catch(console.log)}),[t]),V((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||ul(),item:dl(e.item)}))),document.addEventListener("mouseover",d),document.addEventListener("click",m),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",m)}}),[n]),r&&l?j.createElement("div",null,j.createElement(xt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(l)},j.createElement(ll,{item:l,selectedKey:i,setSelectedKey:c,hoverKey:s,setHoverKey:u,onChange:o}),j.createElement(_,{type:"submit"},"Save"))):null}function ll(e){var t;const{classes:n,cx:r}=rl(),a=e.item,l=e.item,o="resourceType"in e.item,i=o||l.type===Ka.group,c=null!==(t=l.linkId)&&void 0!==t?t:"[untitled]",s=e.selectedKey===e.item.id,u=e.hoverKey===e.item.id,d=I();function m(t){var n;const r=d.current;e.onChange(Object.assign(Object.assign({},r),{item:null===(n=r.item)||void 0===n?void 0:n.map((e=>e.id===t.id?t:e))}))}function p(t){var n,r;e.onChange(Object.assign(Object.assign({},e.item),{item:[...null!==(r=null===(n=e.item)||void 0===n?void 0:n.item)&&void 0!==r?r:[],t]}))}function g(t,n){e.onChange(Object.assign(Object.assign({},d.current),{[t]:n}))}d.current=e.item;const h=r(n.section,{[n.editing]:s,[n.hovering]:u&&!s});return j.createElement("div",{"data-testid":l.linkId,className:h,onClick:function(t){dt(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){dt(t),e.setHoverKey(e.item.id)}},j.createElement("div",{className:n.questionBody},s?j.createElement(j.Fragment,null,o&&j.createElement(F,{size:"xl",defaultValue:a.title,onChange:e=>g("title",e.currentTarget.value)}),!o&&j.createElement(ce,{autosize:!0,minRows:2,defaultValue:l.text,onChange:e=>g("text",e.currentTarget.value)}),Qa(l)&&j.createElement(ol,{options:l.answerOption,onChange:e=>g("answerOption",e)})):j.createElement(j.Fragment,null,a.title&&j.createElement(K,null,a.title),l.text&&j.createElement("div",null,l.text),!i&&j.createElement(Ga,{item:l,answers:{},onChange:()=>{}}))),l.item&&l.item.map((t=>j.createElement("div",{key:t.id},j.createElement(ll,{item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:m,onRemove:()=>function(t){var n,r;e.onChange(Object.assign(Object.assign({},e.item),{item:null===(r=null===(n=e.item)||void 0===n?void 0:n.item)||void 0===r?void 0:r.filter((e=>e!==t))}))}(t)})))),!i&&j.createElement("div",{className:n.topActions},s?j.createElement(j.Fragment,null,j.createElement(F,{size:"xs",className:n.linkIdInput,defaultValue:l.linkId,onChange:e=>g("linkId",e.currentTarget.value)}),!i&&j.createElement(z,{size:"xs",className:n.typeSelect,defaultValue:l.type,onChange:e=>g("type",e.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):j.createElement("div",null,c)),j.createElement("div",{className:n.bottomActions},i&&j.createElement(j.Fragment,null,j.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),p({id:ul(),linkId:sl("q"),type:"string",text:"Question"})}},"Add item"),j.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),p({id:ul(),linkId:sl("g"),type:"group",text:"Group"})}},"Add group")),s&&!o&&j.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function ol(e){var t;const r=n.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return j.createElement("div",null,a.map((t=>{const[n,l]=mn({type:"QuestionnaireItemAnswerOption",value:t},"value");return j.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},j.createElement("div",null,j.createElement(_n,{key:t.id,name:"value[x]",property:r,defaultPropertyType:l,defaultValue:n,onChange:(n,r)=>{const l=[...a],o=l.findIndex((e=>e.id===t.id));l[o]={id:t.id,[r]:n},e.onChange(l)}})),j.createElement("div",null,j.createElement("a",{href:"#",onClick:n=>{dt(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),j.createElement("a",{href:"#",onClick:t=>{dt(t),e.onChange([...a,{id:ul()}])}},"Add choice"))}let il=1,cl=1;function sl(e){return e+il++}function ul(){return"id-"+cl++}function dl(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&(cl=Math.max(cl,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&(il=Math.max(il,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||ul(),item:dl(e.item),answerOption:ml(e.answerOption)})))}function ml(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||ul()})))}const pl={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function gl(e){return j.createElement(ge,{color:pl[e.status]},e.status)}function hl(e){var t;const n=st(),r=qt(e.value),[a,l]=A(!1),[o,i]=A();return V((()=>{r&&!a&&(n.executeBatch(function(e){var t;const n=[];if(e.action)for(const r of e.action)(null===(t=r.resource)||void 0===t?void 0:t.reference)&&n.push({request:{method:"GET",url:r.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:n}}(r)).then(i).catch(console.log),l(!0))}),[n,r,a]),r&&o?j.createElement(he,null,null===(t=r.action)||void 0===t?void 0:t.map(((t,n)=>{var r,a,l,i,c,s;const d=t.resource&&function(e){for(const t of null==o?void 0:o.entry)if(t.resource&&e.reference===f(t.resource))return t.resource;return}(t.resource),m=null===(a=null===(r=null==d?void 0:d.input)||void 0===r?void 0:r[0])||void 0===a?void 0:a.valueReference,p=null===(i=null===(l=null==d?void 0:d.output)||void 0===l?void 0:l[0])||void 0===i?void 0:i.valueReference;return j.createElement(j.Fragment,{key:`action-${n}`},j.createElement(he.Col,{span:1,p:"md"},"completed"===(null==d?void 0:d.status)?j.createElement(Ge,null):j.createElement(Je,{color:"gray"})),j.createElement(he.Col,{span:9,p:"xs"},j.createElement(H,{weight:500},t.title),t.description&&j.createElement("div",null,t.description),j.createElement("div",null,"Last edited by ",j.createElement(Qn,{value:null===(c=null==d?void 0:d.meta)||void 0===c?void 0:c.author})," on ",u(null===(s=null==d?void 0:d.meta)||void 0===s?void 0:s.lastUpdated)),j.createElement("div",null,"Status: ",j.createElement(gl,{status:(null==d?void 0:d.status)||"unknown"}))),j.createElement(he.Col,{span:2,p:"md"},m&&!p&&j.createElement(_,{onClick:()=>e.onStart(d,m)},"Start"),m&&p&&j.createElement(_,{onClick:()=>e.onEdit(d,m,p)},"Edit")))}))):null}function vl(e,t){return function(e,t,n){const r=[];let a=e;a.snake&&(a=a.prev);for(;a&&a.prev&&a.prev.j>=0;){const e=a.i,l=a.j;a=a.prev;const o=a.i,i=a.j,c={position:o,lines:t.slice(o,e)},s={position:i,lines:n.slice(i,l)};let u;u=0===c.lines.length&&s.lines.length>0?"insert":c.lines.length>0&&0===s.lines.length?"delete":"change",r.push({original:c,revised:s,type:u}),a.snake&&(a=a.prev)}return r}(function(e,t){const n=e.length,r=t.length,a=n+r+1,l=1+2*a,o=l/2|0,i=new Array(l);i[o+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let a=-l;a<=l;a+=2){const c=o+a,s=c-1,u=i[c+1],d=i[s];let m,p=0;a===-l||a!==l&&d.i<u.i?(p=u.i,m=u):(p=d.i+1,m=d),i[s]=void 0;let g=p-a,h={i:p,j:g,prev:fl(m),snake:!1};for(;p<n&&g<r&&e[p]===t[g];)p++,g++;if(p>h.i&&(h={i:p,j:g,prev:h,snake:!0}),i[c]=h,p>=n&&g>=r)return i[c]}i[o+l-1]=void 0}return}(e,t),e,t)}function fl(e){return e&&!e.snake&&e.prev?e.prev:e}function El(e){const t=e.entry.filter((e=>!!e.resource)).map((e=>{var t;return{meta:null===(t=e.resource)||void 0===t?void 0:t.meta,lines:l(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),n=t[0].lines.map((e=>({id:t[0].meta.versionId,meta:t[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const r=vl(t[n-1].lines,t[n].lines);for(const a of r){const r=a.original.position,l=a.original.lines,o=a.revised.lines;if("delete"!==a.type&&"change"!==a.type||e.splice(r,l.length),"insert"===a.type||"change"===a.type)for(let l=0;l<a.revised.lines.length;l++)e.splice(r+l,0,{id:t[n].meta.versionId,meta:t[n].meta,value:o[l],span:1})}}}(n,t),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(n),n}const yl=ne((e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs}px ${e.spacing.sm}px`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs}px ${e.spacing.sm}px`},pre:{margin:0}})));function bl(e){var t,n;const{classes:r}=yl(),a=st(),[l,o]=A(e.history);if(V((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then(o).catch(console.log)}),[a,e.history,e.resourceType,e.id]),!l)return j.createElement("div",null,"Loading...");const i=null===(n=null===(t=l.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,c=El(l);return j.createElement("div",{className:r.container},j.createElement("table",{className:r.root},j.createElement("tbody",null,c.map(((e,t)=>j.createElement("tr",{key:"row-"+t,className:e.span>0?r.startRow:r.normalRow},e.span>0&&j.createElement(j.Fragment,null,j.createElement("td",{className:r.author,rowSpan:e.span},j.createElement(Hn,{value:e.meta.author,link:!0})),j.createElement("td",{className:r.dateTime,rowSpan:e.span},j.createElement(cn,{to:Cl(i,e.meta.versionId)},Tl(e.meta.lastUpdated)))),j.createElement("td",{className:r.lineNumber},t+1),j.createElement("td",{className:r.line},j.createElement("pre",{className:r.pre},e.value))))))))}function Cl(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function Tl(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return xl(n,"year");const r=Math.floor(t/2592e3);if(r>0)return xl(r,"month");const a=Math.floor(t/86400);if(a>0)return xl(a,"day");const l=Math.floor(t/3600);if(l>0)return xl(l,"hour");const o=Math.floor(t/60);return o>0?xl(o,"minute"):xl(t,"second")}function xl(e,t){return`${e} ${1===e?t:t+"s"} ago`}const kl=ne((e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}})));function Ol(e){let t=e.original,n=e.revised;e.ignoreMeta&&(t=Object.assign(Object.assign({},t),{meta:void 0}),n=Object.assign(Object.assign({},n),{meta:void 0}));const r=vl(l(t,!0).match(/[^\r\n]+/g),l(n,!0).match(/[^\r\n]+/g));return j.createElement("pre",{style:{color:"gray"}},r.map(((e,t)=>j.createElement(wl,{key:"delta"+t,delta:e}))))}function wl(e){const{classes:t}=kl();return j.createElement(j.Fragment,null,"...",j.createElement("br",null),e.delta.original.lines.length>0&&j.createElement("div",{className:t.removed},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&j.createElement("div",{className:t.added},e.delta.revised.lines.join("\n")),"...",j.createElement("br",null))}function Sl(e){var t;const n=st(),[r,a]=A(e.history);return V((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then(a).catch(console.log)}),[n,e.history,e.resourceType,e.id]),r?j.createElement(de,{withBorder:!0,withColumnBorders:!0},j.createElement("thead",null,j.createElement("tr",null,j.createElement("th",null,"Author"),j.createElement("th",null,"Date"),j.createElement("th",null,"Version"))),j.createElement("tbody",null,null===(t=r.entry)||void 0===t?void 0:t.map(((e,t)=>j.createElement(jl,{key:"entry-"+t,entry:e}))))):j.createElement("div",null,"Loading...")}function jl(e){var t,n,r;const{response:a,resource:l}=e.entry;return l?j.createElement("tr",null,j.createElement("td",null,j.createElement(Hn,{value:null===(t=l.meta)||void 0===t?void 0:t.author,link:!0})),j.createElement("td",null,u(null===(n=l.meta)||void 0===n?void 0:n.lastUpdated)),j.createElement("td",null,j.createElement(cn,{to:Al(l)},null===(r=l.meta)||void 0===r?void 0:r.versionId))):j.createElement("tr",null,j.createElement("td",{colSpan:3},E(null==a?void 0:a.outcome)))}function Al(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}const Il=ne((e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}})));function Dl(e){const{classes:t}=Il(),{onChangeMonth:n,onClick:r}=e,[a,l]=A(Vl);function o(e){l((t=>{const r=new Date(t.getTime());return r.setMonth(t.getMonth()+e),n(r),r}))}const i=$((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),r=[];let a=[];for(let e=0;e<n.getDay();e++)a.push(void 0);for(;n.getMonth()===e.getMonth();)a.push({date:new Date(n.getTime()),available:Rl(n,t)}),6===n.getDay()&&(r.push(a),a=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)a.push(void 0);r.push(a)}return r}(a,e.slots)),[a,e.slots]);return j.createElement("div",null,j.createElement(L,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},j.createElement("p",{style:{flex:1}},(c=a).toLocaleString("default",{month:"long"})+" "+c.getFullYear()),j.createElement(L,{position:"right",spacing:"xs"},j.createElement(_,{variant:"outline","aria-label":"Previous month",onClick:()=>o(-1)},"<"),j.createElement(_,{variant:"outline","aria-label":"Next month",onClick:()=>o(1)},">"))),j.createElement("table",{className:t.table},j.createElement("thead",null,j.createElement("tr",null,j.createElement("th",null,"SUN"),j.createElement("th",null,"MON"),j.createElement("th",null,"TUE"),j.createElement("th",null,"WED"),j.createElement("th",null,"THU"),j.createElement("th",null,"FRI"),j.createElement("th",null,"SAT"))),j.createElement("tbody",null,i.map(((e,t)=>j.createElement("tr",{key:"week-"+t},e.map(((e,t)=>j.createElement("td",{key:"day-"+t},e&&j.createElement(_,{disabled:!e.available,onClick:()=>r(e.date)},e.date.getDate()))))))))));var c}function Vl(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Rl(e,t){for(const n of t){const t=new Date(n.start);if(t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate())return!0}return!1}const Pl=ne((e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}})));function Nl(e){var t;const{classes:n}=Pl(),r=st(),a=qt(e.schedule),l=qt(e.questionnaire),[o,i]=A();I().current=o;const[c,s]=A(Vl()),[u,d]=A(),[m,p]=A(),[g,h]=A();if(V((()=>{a?(i([]),r.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",f(a)],["start","gt"+$l(c)],["start","lt"+Ll(c)]])).then(i).catch(console.log)):i(void 0)}),[r,a,c]),!a||!o||!l)return null;const v=null===(t=a.actor)||void 0===t?void 0:t[0];return j.createElement("div",{className:n.container,"data-testid":"scheduler"},j.createElement("div",{className:n.info},v&&j.createElement(Vn,{value:v,size:"xl"}),v&&j.createElement(H,{size:"xl",weight:500},j.createElement(Qn,{value:v})),j.createElement("p",null,"1 hour"),u&&j.createElement("p",null,u.toLocaleDateString()),m&&j.createElement("p",null,Fl(new Date(m.start)))),j.createElement("div",{className:n.selection},!u&&j.createElement("div",null,j.createElement("h3",null,"Select date"),j.createElement(Dl,{slots:o,onChangeMonth:s,onClick:d})),u&&!m&&j.createElement("div",null,j.createElement("h3",null,"Select time"),j.createElement(Q,null,o.map((e=>{const t=new Date(e.start);return t.getTime()>u.getTime()&&t.getTime()<u.getTime()+864e5&&j.createElement("div",{key:e.id},j.createElement(_,{variant:"outline",style:{width:150},onClick:()=>p(e)},Fl(t)))})))),u&&m&&!g&&j.createElement(Ha,{questionnaire:l,submitButtonText:"Next",onSubmit:h}),u&&m&&g&&j.createElement("div",null,j.createElement("h3",null,"You're all set!"),j.createElement("p",null,"Check your email for a calendar invite."))))}function $l(e){return zl(e.getTime())}function Ll(e){return zl(e.getTime()+26784e5)}function zl(e){return new Date(Math.max(Date.now(),e)).toISOString()}function Fl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function Ml(e){return j.createElement(mr,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${f(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${f(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${f(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${f(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",status:"completed",basedOn:[m(e)],subject:e.subject,sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",status:"completed",basedOn:[m(e)],subject:e.subject,operator:m(t),issued:(new Date).toISOString(),content:n})})}export{et as AddressDisplay,rt as AddressInput,lt as AttachmentArrayDisplay,ht as AttachmentArrayInput,gt as AttachmentButton,vt as AttachmentInput,Kn as BackboneElementInput,Ft as CheckboxFormSection,fn as CodeInput,Yt as CodeableConceptDisplay,vn as CodeableConceptInput,Zt as ContactDetailDisplay,bn as ContactDetailInput,Xt as ContactPointDisplay,yn as ContactPointInput,Cn as DateTimeInput,Cr as DefaultResourceTimeline,Ht as DescriptionList,Bt as DescriptionListEntry,Gn as DiagnosticReportDisplay,ft as Document,Un as ElementDefinitionInputSelector,qn as ElementDefinitionTypeInput,Tr as EncounterTimeline,ar as ErrorBoundary,ja as FhirPathTable,xt as Form,_t as FormSection,en as HumanNameDisplay,On as HumanNameInput,wn as IdentifierInput,kt as Logo,cn as MedplumLink,it as MedplumProvider,Aa as MemoizedFhirPathTable,ka as MemoizedSearchControl,Jn as ObservationTable,Da as PatientTimeline,Ra as PlanDefinitionBuilder,al as QuestionnaireBuilder,Ha as QuestionnaireForm,Ga as QuestionnaireFormItem,Ka as QuestionnaireItemType,an as RangeDisplay,In as RangeInput,$n as ReferenceInput,Nt as RegisterForm,hl as RequestGroupDisplay,un as ResourceArrayDisplay,Ln as ResourceArrayInput,Vn as ResourceAvatar,Hn as ResourceBadge,bl as ResourceBlame,Ol as ResourceDiff,Wt as ResourceForm,Sl as ResourceHistoryTable,Pn as ResourceInput,Qn as ResourceName,dn as ResourcePropertyDisplay,_n as ResourcePropertyInput,rr as ResourceTable,mr as ResourceTimeline,Nl as Scheduler,ya as SearchChangeEvent,Ca as SearchClickEvent,xa as SearchControl,aa as SearchFieldEditor,ca as SearchFilterEditor,ba as SearchLoadEvent,Ml as ServiceRequestTimeline,zt as SignInForm,gl as StatusBadge,lr as Timeline,or as TimelineItem,Ur as addDateEqualsFilter,qr as addDateFilter,Wr as addDateFilterBetween,Dr as addField,Ir as addFilter,Lr as addLastMonthFilter,Qr as addMissingFilter,Fr as addNextMonthFilter,zr as addThisMonthFilter,Pr as addTodayFilter,Nr as addTomorrowFilter,_r as addYearToDateFilter,Rr as addYesterdayFilter,na as buildFieldNameString,jr as clearFilters,Ar as clearFiltersOnField,Tn as convertIsoToLocal,xn as convertLocalToIso,At as createScriptTag,Vr as deleteFilter,ln as formatRangeString,Ot as getErrorsForInput,wt as getIssuesForExpression,ta as getOpString,Rt as getRecaptcha,ea as getSearchOperators,Xr as getSortField,Tl as getTimeString,mn as getValueAndType,Hr as hasFilterOnField,Vt as initRecaptcha,Qa as isChoiceQuestion,nl as isQuestionEnabled,Zr as isSortDescending,bt as parseForm,ra as renderValue,Sr as setFilters,Br as setOffset,Gr as setPage,Kt as setPropertyValue,Jr as setSort,ir as sortByDateAndPriority,Yr as toggleSort,st as useMedplum,ct as useMedplumContext,ut as useMedplumProfile,qt as useResource};
2
2
  //# sourceMappingURL=index.min.js.map