@medplum/react 0.9.37 → 0.10.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 (249) hide show
  1. package/dist/cjs/AttachmentButton.d.ts +9 -0
  2. package/dist/cjs/CodeInput.d.ts +2 -1
  3. package/dist/cjs/CodeableConceptInput.d.ts +1 -0
  4. package/dist/cjs/CodingInput.d.ts +1 -0
  5. package/dist/cjs/DateTimeInput.d.ts +9 -2
  6. package/dist/cjs/ReferenceInput.d.ts +1 -0
  7. package/dist/cjs/ResourceAvatar.d.ts +8 -0
  8. package/dist/cjs/ResourceBadge.d.ts +0 -1
  9. package/dist/cjs/ResourceInput.d.ts +2 -3
  10. package/dist/cjs/SearchPopupMenu.d.ts +0 -4
  11. package/dist/cjs/SearchUtils.d.ts +5 -5
  12. package/dist/cjs/ValueSetAutocomplete.d.ts +10 -0
  13. package/dist/cjs/auth/RegisterForm.d.ts +0 -1
  14. package/dist/cjs/auth/SignInForm.d.ts +0 -1
  15. package/dist/cjs/defaulttheme.css +0 -51
  16. package/dist/cjs/index.d.ts +3 -13
  17. package/dist/cjs/index.js +793 -1492
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/index.min.js +1 -1
  20. package/dist/cjs/index.min.js.map +1 -1
  21. package/dist/cjs/stories/{UploadButton.stories.d.ts → AttachmentButton.stories.d.ts} +1 -0
  22. package/dist/cjs/stories/{Input.stories.d.ts → PeriodInput.stories.d.ts} +1 -1
  23. package/dist/cjs/stories/{Avatar.stories.d.ts → ResourceAvatar.stories.d.ts} +0 -0
  24. package/dist/cjs/stories/ResourceForm.stories.d.ts +1 -0
  25. package/dist/cjs/stories/{Dialog.stories.d.ts → ResourceInput.stories.d.ts} +2 -1
  26. package/dist/cjs/stories/SearchControl.stories.d.ts +1 -0
  27. package/dist/cjs/styles.css +72 -1053
  28. package/dist/cjs/utils/outcomes.d.ts +1 -0
  29. package/dist/esm/AddressInput.js +9 -21
  30. package/dist/esm/AddressInput.js.map +1 -1
  31. package/dist/esm/AnnotationInput.js +2 -2
  32. package/dist/esm/AnnotationInput.js.map +1 -1
  33. package/dist/esm/AttachmentArrayInput.js +11 -8
  34. package/dist/esm/AttachmentArrayInput.js.map +1 -1
  35. package/dist/esm/AttachmentButton.d.ts +9 -0
  36. package/dist/esm/{UploadButton.js → AttachmentButton.js} +9 -9
  37. package/dist/esm/AttachmentButton.js.map +1 -0
  38. package/dist/esm/AttachmentInput.js +3 -3
  39. package/dist/esm/AttachmentInput.js.map +1 -1
  40. package/dist/esm/CalendarInput.js +6 -7
  41. package/dist/esm/CalendarInput.js.map +1 -1
  42. package/dist/esm/CodeInput.d.ts +2 -1
  43. package/dist/esm/CodeInput.js +16 -21
  44. package/dist/esm/CodeInput.js.map +1 -1
  45. package/dist/esm/CodeableConceptInput.d.ts +1 -0
  46. package/dist/esm/CodeableConceptInput.js +18 -33
  47. package/dist/esm/CodeableConceptInput.js.map +1 -1
  48. package/dist/esm/CodingInput.d.ts +1 -0
  49. package/dist/esm/CodingInput.js +24 -23
  50. package/dist/esm/CodingInput.js.map +1 -1
  51. package/dist/esm/ContactDetailInput.js +3 -4
  52. package/dist/esm/ContactDetailInput.js.map +1 -1
  53. package/dist/esm/ContactPointInput.js +5 -21
  54. package/dist/esm/ContactPointInput.js.map +1 -1
  55. package/dist/esm/DateTimeInput.d.ts +9 -2
  56. package/dist/esm/DateTimeInput.js +13 -3
  57. package/dist/esm/DateTimeInput.js.map +1 -1
  58. package/dist/esm/DiagnosticReportDisplay.js +16 -1
  59. package/dist/esm/DiagnosticReportDisplay.js.map +1 -1
  60. package/dist/esm/EncounterTimeline.js +2 -0
  61. package/dist/esm/EncounterTimeline.js.map +1 -1
  62. package/dist/esm/ExtensionInput.js +2 -2
  63. package/dist/esm/ExtensionInput.js.map +1 -1
  64. package/dist/esm/FhirPathTable.js +4 -5
  65. package/dist/esm/FhirPathTable.js.map +1 -1
  66. package/dist/esm/HumanNameInput.js +7 -17
  67. package/dist/esm/HumanNameInput.js.map +1 -1
  68. package/dist/esm/IdentifierInput.js +4 -5
  69. package/dist/esm/IdentifierInput.js.map +1 -1
  70. package/dist/esm/Logo.js +4 -4
  71. package/dist/esm/Logo.js.map +1 -1
  72. package/dist/esm/PatientTimeline.js +2 -0
  73. package/dist/esm/PatientTimeline.js.map +1 -1
  74. package/dist/esm/PeriodInput.js +5 -5
  75. package/dist/esm/PeriodInput.js.map +1 -1
  76. package/dist/esm/PlanDefinitionBuilder.js +17 -29
  77. package/dist/esm/PlanDefinitionBuilder.js.map +1 -1
  78. package/dist/esm/QuantityInput.js +5 -12
  79. package/dist/esm/QuantityInput.js.map +1 -1
  80. package/dist/esm/QuestionnaireBuilder.js +22 -25
  81. package/dist/esm/QuestionnaireBuilder.js.map +1 -1
  82. package/dist/esm/QuestionnaireForm.js +35 -29
  83. package/dist/esm/QuestionnaireForm.js.map +1 -1
  84. package/dist/esm/RangeInput.js +2 -2
  85. package/dist/esm/RangeInput.js.map +1 -1
  86. package/dist/esm/RatioInput.js +2 -2
  87. package/dist/esm/RatioInput.js.map +1 -1
  88. package/dist/esm/ReferenceInput.d.ts +1 -0
  89. package/dist/esm/ReferenceInput.js +4 -6
  90. package/dist/esm/ReferenceInput.js.map +1 -1
  91. package/dist/esm/RequestGroupDisplay.js +1 -1
  92. package/dist/esm/RequestGroupDisplay.js.map +1 -1
  93. package/dist/esm/ResourceArrayInput.js +10 -7
  94. package/dist/esm/ResourceArrayInput.js.map +1 -1
  95. package/dist/esm/ResourceAvatar.d.ts +8 -0
  96. package/dist/esm/ResourceAvatar.js +24 -0
  97. package/dist/esm/ResourceAvatar.js.map +1 -0
  98. package/dist/esm/ResourceBadge.d.ts +0 -1
  99. package/dist/esm/ResourceBadge.js +2 -3
  100. package/dist/esm/ResourceBadge.js.map +1 -1
  101. package/dist/esm/ResourceBlame.js +3 -3
  102. package/dist/esm/ResourceBlame.js.map +1 -1
  103. package/dist/esm/ResourceForm.js +10 -10
  104. package/dist/esm/ResourceForm.js.map +1 -1
  105. package/dist/esm/ResourceInput.d.ts +2 -3
  106. package/dist/esm/ResourceInput.js +37 -29
  107. package/dist/esm/ResourceInput.js.map +1 -1
  108. package/dist/esm/ResourcePropertyInput.js +30 -18
  109. package/dist/esm/ResourcePropertyInput.js.map +1 -1
  110. package/dist/esm/ResourceTimeline.js +19 -15
  111. package/dist/esm/ResourceTimeline.js.map +1 -1
  112. package/dist/esm/Scheduler.js +7 -7
  113. package/dist/esm/Scheduler.js.map +1 -1
  114. package/dist/esm/SearchControl.js +76 -58
  115. package/dist/esm/SearchControl.js.map +1 -1
  116. package/dist/esm/SearchControlField.js.map +1 -1
  117. package/dist/esm/SearchFieldEditor.js +7 -7
  118. package/dist/esm/SearchFieldEditor.js.map +1 -1
  119. package/dist/esm/SearchFilterEditor.js +10 -15
  120. package/dist/esm/SearchFilterEditor.js.map +1 -1
  121. package/dist/esm/SearchFilterValueDialog.js +4 -3
  122. package/dist/esm/SearchFilterValueDialog.js.map +1 -1
  123. package/dist/esm/SearchFilterValueInput.js +6 -7
  124. package/dist/esm/SearchFilterValueInput.js.map +1 -1
  125. package/dist/esm/SearchPopupMenu.d.ts +0 -4
  126. package/dist/esm/SearchPopupMenu.js +59 -73
  127. package/dist/esm/SearchPopupMenu.js.map +1 -1
  128. package/dist/esm/SearchUtils.d.ts +5 -5
  129. package/dist/esm/SearchUtils.js +11 -12
  130. package/dist/esm/SearchUtils.js.map +1 -1
  131. package/dist/esm/ServiceRequestTimeline.js +2 -0
  132. package/dist/esm/ServiceRequestTimeline.js.map +1 -1
  133. package/dist/esm/Timeline.js +12 -20
  134. package/dist/esm/Timeline.js.map +1 -1
  135. package/dist/esm/TimingInput.js +14 -17
  136. package/dist/esm/TimingInput.js.map +1 -1
  137. package/dist/esm/ValueSetAutocomplete.d.ts +10 -0
  138. package/dist/esm/ValueSetAutocomplete.js +57 -0
  139. package/dist/esm/ValueSetAutocomplete.js.map +1 -0
  140. package/dist/esm/auth/AuthenticationForm.js +12 -20
  141. package/dist/esm/auth/AuthenticationForm.js.map +1 -1
  142. package/dist/esm/auth/ChooseProfileForm.js +10 -10
  143. package/dist/esm/auth/ChooseProfileForm.js.map +1 -1
  144. package/dist/esm/auth/NewProjectForm.js +12 -15
  145. package/dist/esm/auth/NewProjectForm.js.map +1 -1
  146. package/dist/esm/auth/NewUserForm.js +25 -33
  147. package/dist/esm/auth/NewUserForm.js.map +1 -1
  148. package/dist/esm/auth/RegisterForm.d.ts +0 -1
  149. package/dist/esm/auth/RegisterForm.js.map +1 -1
  150. package/dist/esm/auth/SignInForm.d.ts +0 -1
  151. package/dist/esm/auth/SignInForm.js.map +1 -1
  152. package/dist/esm/defaulttheme.css +0 -51
  153. package/dist/esm/index.d.ts +3 -13
  154. package/dist/esm/index.js +4 -14
  155. package/dist/esm/index.js.map +1 -1
  156. package/dist/esm/index.min.js +1 -1
  157. package/dist/esm/index.min.js.map +1 -1
  158. package/dist/esm/node_modules/tslib/tslib.es6.js +13 -1
  159. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
  160. package/dist/esm/stories/{UploadButton.stories.d.ts → AttachmentButton.stories.d.ts} +1 -0
  161. package/dist/{cjs/stories/Select.stories.d.ts → esm/stories/PeriodInput.stories.d.ts} +1 -1
  162. package/dist/esm/stories/{Avatar.stories.d.ts → ResourceAvatar.stories.d.ts} +0 -0
  163. package/dist/esm/stories/ResourceForm.stories.d.ts +1 -0
  164. package/dist/{cjs/stories/FormSection.stories.d.ts → esm/stories/ResourceInput.stories.d.ts} +2 -2
  165. package/dist/esm/stories/SearchControl.stories.d.ts +1 -0
  166. package/dist/esm/styles.css +72 -1053
  167. package/dist/esm/utils/outcomes.d.ts +1 -0
  168. package/dist/esm/utils/outcomes.js +5 -1
  169. package/dist/esm/utils/outcomes.js.map +1 -1
  170. package/package.json +27 -19
  171. package/dist/cjs/Autocomplete.d.ts +0 -20
  172. package/dist/cjs/Avatar.d.ts +0 -12
  173. package/dist/cjs/Button.d.ts +0 -15
  174. package/dist/cjs/Checkbox.d.ts +0 -12
  175. package/dist/cjs/Dialog.d.ts +0 -10
  176. package/dist/cjs/Header.d.ts +0 -12
  177. package/dist/cjs/HeaderSearchInput.d.ts +0 -10
  178. package/dist/cjs/Input.d.ts +0 -22
  179. package/dist/cjs/InputRow.d.ts +0 -7
  180. package/dist/cjs/Loading.d.ts +0 -3
  181. package/dist/cjs/MenuItem.d.ts +0 -9
  182. package/dist/cjs/MenuSeparator.d.ts +0 -3
  183. package/dist/cjs/Popup.d.ts +0 -14
  184. package/dist/cjs/Select.d.ts +0 -16
  185. package/dist/cjs/SubMenu.d.ts +0 -7
  186. package/dist/cjs/TextArea.d.ts +0 -18
  187. package/dist/cjs/UploadButton.d.ts +0 -7
  188. package/dist/cjs/stories/Autocomplete.stories.d.ts +0 -9
  189. package/dist/cjs/stories/Button.stories.d.ts +0 -9
  190. package/dist/cjs/stories/Header.stories.d.ts +0 -8
  191. package/dist/cjs/stories/Loading.stories.d.ts +0 -5
  192. package/dist/esm/Autocomplete.d.ts +0 -20
  193. package/dist/esm/Autocomplete.js +0 -281
  194. package/dist/esm/Autocomplete.js.map +0 -1
  195. package/dist/esm/Avatar.d.ts +0 -12
  196. package/dist/esm/Avatar.js +0 -24
  197. package/dist/esm/Avatar.js.map +0 -1
  198. package/dist/esm/Button.d.ts +0 -15
  199. package/dist/esm/Button.js +0 -13
  200. package/dist/esm/Button.js.map +0 -1
  201. package/dist/esm/Checkbox.d.ts +0 -12
  202. package/dist/esm/Checkbox.js +0 -13
  203. package/dist/esm/Checkbox.js.map +0 -1
  204. package/dist/esm/Dialog.d.ts +0 -10
  205. package/dist/esm/Dialog.js +0 -43
  206. package/dist/esm/Dialog.js.map +0 -1
  207. package/dist/esm/Header.d.ts +0 -12
  208. package/dist/esm/Header.js +0 -99
  209. package/dist/esm/Header.js.map +0 -1
  210. package/dist/esm/HeaderSearchInput.d.ts +0 -10
  211. package/dist/esm/HeaderSearchInput.js +0 -181
  212. package/dist/esm/HeaderSearchInput.js.map +0 -1
  213. package/dist/esm/Input.d.ts +0 -22
  214. package/dist/esm/Input.js +0 -26
  215. package/dist/esm/Input.js.map +0 -1
  216. package/dist/esm/InputRow.d.ts +0 -7
  217. package/dist/esm/InputRow.js +0 -8
  218. package/dist/esm/InputRow.js.map +0 -1
  219. package/dist/esm/Loading.d.ts +0 -3
  220. package/dist/esm/Loading.js +0 -11
  221. package/dist/esm/Loading.js.map +0 -1
  222. package/dist/esm/MenuItem.d.ts +0 -9
  223. package/dist/esm/MenuItem.js +0 -8
  224. package/dist/esm/MenuItem.js.map +0 -1
  225. package/dist/esm/MenuSeparator.d.ts +0 -3
  226. package/dist/esm/MenuSeparator.js +0 -8
  227. package/dist/esm/MenuSeparator.js.map +0 -1
  228. package/dist/esm/Popup.d.ts +0 -14
  229. package/dist/esm/Popup.js +0 -78
  230. package/dist/esm/Popup.js.map +0 -1
  231. package/dist/esm/Select.d.ts +0 -16
  232. package/dist/esm/Select.js +0 -16
  233. package/dist/esm/Select.js.map +0 -1
  234. package/dist/esm/SubMenu.d.ts +0 -7
  235. package/dist/esm/SubMenu.js +0 -38
  236. package/dist/esm/SubMenu.js.map +0 -1
  237. package/dist/esm/TextArea.d.ts +0 -18
  238. package/dist/esm/TextArea.js +0 -16
  239. package/dist/esm/TextArea.js.map +0 -1
  240. package/dist/esm/UploadButton.d.ts +0 -7
  241. package/dist/esm/UploadButton.js.map +0 -1
  242. package/dist/esm/stories/Autocomplete.stories.d.ts +0 -9
  243. package/dist/esm/stories/Button.stories.d.ts +0 -9
  244. package/dist/esm/stories/Dialog.stories.d.ts +0 -5
  245. package/dist/esm/stories/FormSection.stories.d.ts +0 -6
  246. package/dist/esm/stories/Header.stories.d.ts +0 -8
  247. package/dist/esm/stories/Input.stories.d.ts +0 -6
  248. package/dist/esm/stories/Loading.stories.d.ts +0 -5
  249. package/dist/esm/stories/Select.stories.d.ts +0 -6
@@ -1,2 +1,2 @@
1
- import{formatAddress as e,getDisplayString as t,getImageSrc as n,capitalize as l,globalSchema as a,getPropertyDisplayName as r,formatHumanName as o,stringify as i,buildTypeName as c,PropertyType as u,formatTiming as s,formatPeriod as m,formatDateTime as d,getTypedPropertyValue as p,createReference as h,isValidDate as v,toTypedValue as E,getReferenceString as g,evalFhirPath as f,getSearchParameterDetails as y,Operator as C,evalFhirPathTyped as b,SearchParameterType as k,formatSearchQuery as O,parseSearchDefinition as T,DEFAULT_SEARCH_COUNT as w,isUUID as j,deepEquals as x,getQuestionnaireAnswers as S,normalizeErrorString as N}from"@medplum/core";import V,{useState as A,useRef as D,createContext as I,useEffect as P,useContext as R,useCallback as F,useMemo as L}from"react";import{useNavigate as M,useLocation as $}from"react-router-dom";function q(t){const n=t.value;return n?V.createElement(V.Fragment,null,e(n)):null}function _(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return function(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 l=t.indexOf(".");if(l>=0&&t.substring(l+1)===e)return!0;return!1}(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function U(e){const t=_(e.outcome,e.name),n=t&&t.length>0;return V.createElement("input",{id:e.name,name:e.name,type:Q(e.type),size:e.size,step:e.step,className:"medplum-input",style:e.style,defaultValue:e.defaultValue||"",required:e.required,autoCapitalize:e.autoCapitalize,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function Q(e){return e||"text"}function H(e){return V.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function K(e){const t=_(e.outcome,e.name),n=t&&t.length>0;return V.createElement("select",{id:e.name,name:e.name,className:"medplum-select",defaultValue:e.defaultValue||"",required:e.required,autoFocus:e.autoFocus,ref:e.inputRef,style:e.style,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"","data-testid":e.testid,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}},e.children)}function z(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function W(e,t,n){const l=e.line||[];for(;l.length<=t;)l.push("");return l[t]=n,Object.assign(Object.assign({},e),{line:l})}function B(e){const[t,n]=A(e.defaultValue||{}),l=D();function a(t){n(t),e.onChange&&e.onChange(t)}return l.current=t,V.createElement(H,null,V.createElement(K,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){a(Object.assign(Object.assign({},l.current),{use:e}))}},V.createElement("option",null),V.createElement("option",null,"home"),V.createElement("option",null,"mobile"),V.createElement("option",null,"old"),V.createElement("option",null,"temp"),V.createElement("option",null,"work")),V.createElement(K,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){a(Object.assign(Object.assign({},l.current),{type:e}))}},V.createElement("option",null),V.createElement("option",null,"postal"),V.createElement("option",null,"physical"),V.createElement("option",null,"both")),V.createElement(U,{placeholder:"Line 1",defaultValue:z(t,0),onChange:function(e){a(W(l.current||{},0,e))}}),V.createElement(U,{placeholder:"Line 2",defaultValue:z(t,1),onChange:function(e){a(W(l.current||{},1,e))}}),V.createElement(U,{placeholder:"City",defaultValue:t.city,onChange:function(e){a(Object.assign(Object.assign({},l.current),{city:e}))}}),V.createElement(U,{placeholder:"State",defaultValue:t.state,onChange:function(e){a(Object.assign(Object.assign({},l.current),{state:e}))}}),V.createElement(U,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){a(Object.assign(Object.assign({},l.current),{postalCode:e}))}}))}function G(e){const t=e.value,{contentType:n,url:l,title:a}=null!=t?t:{};return l?V.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&V.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:l,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&V.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},V.createElement("source",{type:n,src:l})),"application/pdf"===n&&!(null==a?void 0:a.endsWith(".pdf"))&&V.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},V.createElement("iframe",{width:"100%",height:"400",src:l+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),V.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},V.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 Y(e){return V.createElement("div",null,e.values&&e.values.map(((t,n)=>V.createElement("div",{key:"attatchment-"+n},V.createElement(G,{value:t,maxWidth:e.maxWidth})))))}function J(e){const t="medplum-button"+(e.primary||"submit"===e.type?" medplum-button-primary":"")+(e.danger?" medplum-button-danger":"")+(e.borderless?" medplum-button-borderless":"")+(e.size?" medplum-button-"+e.size:"");return V.createElement("button",{type:e.type||"button",className:t,style:e.style,onClick:e.onClick,"aria-label":e.label,"data-testid":e.testid},e.children)}const X=I(void 0);function Z(e){const t=e.medplum,[n,l]=A({profile:t.getProfile(),loading:!1});P((()=>{function e(){l(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 V.createElement(X.Provider,{value:a},e.children)}function ee(){return R(X)}function te(){return ee().medplum}function ne(){return ee().profile}function le(e){e.preventDefault(),e.stopPropagation()}function ae(e){if(re(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&re(t[0]))return!0}return!1}function re(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function oe(e){const t=te(),n=D(null);function l(n){if(!n)return;if(!n.name)return;const l=n.name,a=n.type||"application/octet-stream";t.createBinary(n,l,a).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:l})})).catch((e=>{var t,n,l;alert(null===(l=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===l?void 0:l.text)}))}return V.createElement(V.Fragment,null,V.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){le(e);const t=e.target.files;t&&Array.from(t).forEach(l)}(e)}),V.createElement(J,{testid:"upload-button",onClick:e=>{var t;le(e),null===(t=n.current)||void 0===t||t.click()}},e.children||"Upload..."))}function ie(e){var t;const[n,l]=A(null!==(t=e.defaultValue)&&void 0!==t?t:[]),a=D();function r(t){l(t),e.onChange&&e.onChange(t)}return a.current=n,V.createElement("table",{style:{width:"100%"}},V.createElement("colgroup",null,V.createElement("col",{width:"90%"}),V.createElement("col",{width:"10%"})),V.createElement("tbody",null,n.map(((e,t)=>V.createElement("tr",{key:`${t}-${n.length}`},V.createElement("td",null,V.createElement(G,{value:e,maxWidth:200})),V.createElement("td",{className:"medplum-right"},V.createElement(J,{onClick:e=>{le(e);const l=n.slice();l.splice(t,1),r(l)}},"Remove"))))),V.createElement("tr",null,V.createElement("td",null),V.createElement("td",{className:"medplum-right"},V.createElement(oe,{onUpload:e=>{r([...a.current,e])}})))))}function ce(e){const[t,n]=A(e.defaultValue);function l(t){n(t),e.onChange&&e.onChange(t)}return t?V.createElement(V.Fragment,null,V.createElement(G,{value:t,maxWidth:200}),V.createElement(J,{onClick:e=>{le(e),l(void 0)}},"Remove")):V.createElement(oe,{onUpload:l})}function ue(e){return V.createElement("main",{className:"medplum-document"},V.createElement("article",{style:{maxWidth:e.width}},e.children))}function se(e,t,n,l){return new(n||(n=Promise))((function(a,r){function o(e){try{c(l.next(e))}catch(e){r(e)}}function i(e){try{c(l.throw(e))}catch(e){r(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((l=l.apply(e,t||[])).next())}))}function me(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?de(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&pe(t,n);return t}function de(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function pe(e,t){e[t.name]=t.value}function he(e){return V.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=me(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function ve(e){const t=_(e.outcome,e.htmlFor),n=t&&t.length>0;return V.createElement("fieldset",{className:"medplum-form-section"},e.title&&V.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&V.createElement("p",null,e.description),e.children,n&&V.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return V.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)}))))}function Ee(e){return V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},V.createElement("title",null,"Medplum Logo"),V.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),V.createElement("path",{fill:e.fill||"#654b87",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"}),V.createElement("path",{fill:e.fill||"#463068",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),V.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),V.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function ge(e){const t=te(),[n,l]=A();return V.createElement(he,{style:{maxWidth:400},onSubmit:n=>se(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){l(e)}}))},V.createElement("div",{className:"medplum-center"},V.createElement(Ee,{size:32}),V.createElement("h1",null,"Create project")),V.createElement(ve,{title:"Project Name",htmlFor:"projectName",outcome:n},V.createElement(U,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:n})),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),V.createElement("div",{className:"medplum-signin-buttons"},V.createElement("div",null),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Create project"))))}function fe(e,t){const n=document.getElementsByTagName("head")[0],l=document.createElement("script");l.async=!0,l.src=e,l.onload=t||null,n.appendChild(l)}function ye(e){const t=te(),{googleClientId:n,handleGoogleCredential:l}=e,a=D(null),[r,o]=A("undefined"!=typeof google),[i,c]=A(!1),[u,s]=A(!1);return P((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:n,callback:l}),c(!0)),a.current&&!u&&(google.accounts.id.renderButton(a.current,{}),s(!0))):fe("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,r,a,u,l]),n?V.createElement("div",{ref:a}):null}function Ce(e){var t,n;if(e)return e;const l=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(l)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function be(e){"undefined"==typeof grecaptcha&&fe("https://www.google.com/recaptcha/api.js?render="+e)}function ke(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>se(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function Oe(e){const t=Ce(e.googleClientId),n=e.recaptchaSiteKey,l=te(),[a,r]=A(),o=_(a,void 0);return P((()=>be(n)),[n]),V.createElement(he,{style:{maxWidth:400},onSubmit:t=>se(this,void 0,void 0,(function*(){try{const a=yield ke(n);e.handleAuthResponse(yield l.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){r(e)}}))},V.createElement("div",{className:"medplum-center"},e.children),o&&V.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return V.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&&V.createElement(V.Fragment,null,V.createElement("div",{className:"medplum-signin-google-container"},V.createElement(ye,{googleClientId:t,handleGoogleCredential:t=>se(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield l.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){r(e)}}))})),V.createElement("div",{className:"medplum-signin-separator"},"or")),V.createElement(ve,{title:"First Name",htmlFor:"firstName",outcome:a},V.createElement(U,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:a})),V.createElement(ve,{title:"Last Name",htmlFor:"lastName",outcome:a},V.createElement(U,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:a})),V.createElement(ve,{title:"Email",htmlFor:"email",outcome:a},V.createElement(U,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:a})),V.createElement(ve,{title:"Password",htmlFor:"password",outcome:a},V.createElement(U,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),V.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",V.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",V.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),V.createElement("div",{className:"medplum-signin-buttons"},V.createElement("div",null,V.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),V.createElement("label",{htmlFor:"remember"},"Remember me")),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Create account"))))}function Te(e){const{type:t,projectId:n,googleClientId:l,recaptchaSiteKey:a,onSuccess:r}=e,o=te(),[i,c]=A(void 0),[u,s]=A();function m(e){e.code?o.processCode(e.code).then((()=>r())).catch(console.log):e.login&&c(e.login)}return P((()=>{"patient"===t&&i&&o.startNewPatient({login:i,projectId:n}).then((e=>o.processCode(e.code))).then((()=>r())).catch((e=>s(e)))}),[o,t,n,i,r]),V.createElement(ue,{width:450},u&&V.createElement("pre",null,JSON.stringify(u,null,2)),!i&&V.createElement(Oe,{projectId:n,googleClientId:l,recaptchaSiteKey:a,handleAuthResponse:m},e.children),i&&"project"===t&&V.createElement(ge,{login:i,handleAuthResponse:m}))}function we(e){const t=M();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),V.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:l=>{le(l),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function je(e){const t=te(),n=Ce(e.googleClientId),[l,a]=A(),r=_(l,void 0);function o(){return se(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return V.createElement(he,{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(a)}},V.createElement("div",{className:"medplum-center"},e.children),r&&V.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return V.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&&V.createElement(V.Fragment,null,V.createElement("div",{className:"medplum-signin-google-container"},V.createElement(ye,{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(a)}})),V.createElement("div",{className:"medplum-signin-separator"},"or")),V.createElement(ve,{title:"Email",htmlFor:"email",outcome:l},V.createElement(U,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:l})),V.createElement(ve,{title:"Password",htmlFor:"password",outcome:l},V.createElement(U,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),V.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&V.createElement("div",null,e.onForgotPassword&&V.createElement(we,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&V.createElement(we,{testid:"register",onClick:e.onRegister},"Register")),V.createElement("div",null,V.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),V.createElement("label",{htmlFor:"remember"},"Remember me")),V.createElement("div",null,V.createElement(J,{type:"submit",testid:"submit"},"Sign in"))))}const xe={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function Se(e){const t=te(),[n,l]=A(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?xe:e.getCachedReference(t);return}(t,e));return P((()=>{let a=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{a&&l(e)})).catch((()=>l(void 0))),()=>a=!1}),[t,n,e]),n}function Ne(e){var l,a;const r=Se(e.value),o=e.size?"medplum-avatar "+e.size:"medplum-avatar",i=r?t(r):null!==(l=e.alt)&&void 0!==l?l:"",c=i&&function(e){return e.split(" ").map((e=>e[0])).join("")}(i),u=null!==(a=r&&n(r))&&void 0!==a?a:e.src,s=u?V.createElement("img",{src:u,alt:i}):c;return V.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?V.createElement(we,{to:r},s):s)}function Ve(e){const t=te();return V.createElement("div",null,V.createElement("div",{className:"medplum-center"},V.createElement(Ee,{size:32}),V.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var l,a,r;return V.createElement("div",{className:"medplum-nav-menu-profile",key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},V.createElement("div",{className:"medplum-nav-menu-profile-icon"},V.createElement(Ne,{alt:null===(l=n.profile)||void 0===l?void 0:l.display})),V.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=n.profile)||void 0===a?void 0:a.display,V.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function Ae(e){const t=te(),[n,l]=A(void 0),[a,r]=A(void 0);function o(n){n.login&&l(n.login),n.memberships&&r(n.memberships),n.code&&(e.onCode?e.onCode(n.code):t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log))}return V.createElement(ue,{width:450},n?a?V.createElement(Ve,{login:n,memberships:a,handleAuthResponse:o}):"new"===e.projectId?V.createElement(ge,{login:n,handleAuthResponse:o}):V.createElement("div",null,"Success"):V.createElement(je,{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 De(e){var t,n;const l=D(null),[a,r]=A(!1),[o,i]=A(void 0),[c,u]=A(),[s,m]=A(!1),[d,p]=A(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[h,v]=A([]),[E,g]=A(-1),[f,y]=A(),[C,b]=A(),k=D();k.current=o;const O=D();O.current=c;const T=D();T.current=f;const w=D();function j(t){p(t),e.onChange&&e.onChange(t)}function x(t){l.current.value="";const n=e.multiple?[...d,t]:[t];r(!0),m(!1),i(""),v([]),g(-1),j(n)}function S(){var e;null===(e=l.current)||void 0===e||e.focus()}function N(){F(),r(!1),window.setTimeout((()=>{m(!1)}),200)}function I(){T.current&&(T.current.abort(),y(void 0)),void 0!==O.current&&window.clearTimeout(O.current);const t=window.setTimeout((()=>function(){var t,n;u(void 0);const a=(null===(n=null===(t=l.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(a===k.current)return;i(a);const r=new AbortController;y(r),e.loadOptions(a,r.signal).then((e=>{r.signal.aborted||(m(e.length>0),v(e),y(void 0),w.current&&(x(e[0]),b(!1)))})).catch(console.log)}()),100);u(t)}function R(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;O.current||T.current||!F()?b(!0):(le(e),null===(t=l.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":L(-1),le(e);break;case"ArrowDown":L(1),le(e);break;case"Backspace":!function(e){var t;if(null===(t=l.current)||void 0===t?void 0:t.value)return;d.length>0&&(le(e),j(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;F(),le(e),null===(t=l.current)||void 0===t||t.focus()}(e)}}function F(){var t;let n;return E>=0&&E<h.length?n=h[E]:-1===E&&h.length>0?n=h[0]:e.buildUnstructured&&(null===(t=l.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(l.current.value)),!!n&&(x(n),!0)}function L(e){let t=E+e;t<0?t=0:t>=h.length&&(t=h.length-1),g(t)}w.current=C,P((()=>()=>{T.current&&T.current.abort()}),[]),P((()=>{var t;p(null!==(t=e.defaultValue)&&void 0!==t?t:[])}),[e.defaultValue]);const M=null!==(n=e.className)&&void 0!==n?n:"medplum-autocomplete-container";return V.createElement("div",{"data-testid":"autocomplete",className:M+(a?" focused":""),onClick:()=>S()},V.createElement("ul",{onClick:()=>S()},d.map((t=>V.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),V.createElement("li",{className:"medplum-autocomplete-item"},V.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===d.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>(r(!0),void(e.loadOnFocus&&I())),onBlur:()=>N(),onChange:()=>I(),onInput:()=>I(),onKeyDown:e=>R(e),ref:l,"data-testid":"input-element"}))),s&&V.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},h.map(((t,n)=>V.createElement("div",{key:e.getId(t),className:n===E?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){g(t)}(0,n),onClick:e=>function(e,t){le(e),x(t)}(e,t)},e.getIcon&&V.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),V.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&V.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&V.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},V.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Ie(e){return V.createElement("div",{className:"medplum-checkbox-form-section"},V.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),V.createElement("div",{className:"medplum-checkbox-form-section-details-container"},V.createElement("label",{htmlFor:e.htmlFor},e.title),V.createElement("p",null,e.description)))}const Pe=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function Re(e){const t=te(),n=Se(e.defaultValue),[l,a]=A(),[r,o]=A();return P((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(a).catch(console.log))}),[t,n]),l&&r?V.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(r)}},V.createElement(ve,{title:"Resource Type"},V.createElement(U,{name:"resourceType",defaultValue:r.resourceType,disabled:!0})),V.createElement(ve,{title:"ID"},V.createElement(U,{name:"id",defaultValue:r.id,disabled:!0})),V.createElement(Lt,{typeName:r.resourceType,defaultValue:r,outcome:e.outcome,onChange:o}),V.createElement(J,{type:"submit",size:"large"},"OK"),e.onDelete&&V.createElement(J,{type:"button",size:"large",onClick:()=>{e.onDelete(r)}},"Delete")):V.createElement("div",null,"Loading...")}function Fe(e,t,n,a,r){const o=a.type;if(o.length>1)for(const n of o){const a=t.replace("[x]",l(n.code));a in e&&delete e[a]}return e[n]=r,e}function Le(e){return V.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function Me(e){return V.createElement(V.Fragment,null,V.createElement("dt",null,e.term),V.createElement("dd",null,e.children))}function $e(e){const t=e.value,n=t.value;if(!n)return null;const l=t.type,o=a.types[l];return o?"object"==typeof n&&"name"in n&&1===Object.keys(n).length?V.createElement("div",null,n.name):V.createElement(Le,{compact:e.compact},Object.entries(o.properties).map((n=>{const l=n[0];if(Pe.indexOf(l)>=0)return null;const a=n[1],[o,i]=et(t,l);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:V.createElement(Me,{key:l,term:r(l)},V.createElement(Ze,{property:a,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):V.createElement("div",null,l," not implemented")}function qe(e){var t,n;return V.createElement(V.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 _e(e){const t=e.value;return t?t.text?V.createElement(V.Fragment,null,t.text):t.coding?V.createElement(V.Fragment,null,t.coding.map(((e,t)=>V.createElement(V.Fragment,{key:"coding-"+t},t>0&&V.createElement(V.Fragment,null,", "),V.createElement(qe,{value:e}))))):null:null}function Ue(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("]")),V.createElement(V.Fragment,null,n.join("").trim())}function Qe(e){var t;const n=e.value;return n?V.createElement(V.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>V.createElement(Ue,{key:"telecom-"+t,value:e})))):null}function He(e){const t=e.value;return t?V.createElement(V.Fragment,null,o(t,e.options)):null}function Ke(e){var t,n;return V.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 ze(e){return V.createElement(V.Fragment,null,We(e.value))}function We(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 Be(e){return V.createElement(V.Fragment,null,Ge(e.value))}function Ge(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${We(e.low)}`:!e.low&&e.high?`<= ${We(e.high)}`:`${We(e.low)} - ${We(e.high)}`:""}function Ye(e){const t=e.value;return t?V.createElement(V.Fragment,null,V.createElement(ze,{value:t.numerator})," / ",V.createElement(ze,{value:t.denominator})):null}function Je(e){if(!e.value)return null;const t=e.value.display||e.value.reference||i(e.value);return!1!==e.link&&e.value.reference?V.createElement(we,{to:e.value},t):V.createElement(V.Fragment,null,t)}function Xe(e){var t,n,l;const a=e.property,r=null!==(t=e.values)&&void 0!==t?t:[],o=null===(l=null===(n=a.type)||void 0===n?void 0:n[0])||void 0===l?void 0:l.code;return V.createElement(V.Fragment,null,r.map(((t,n)=>V.createElement("div",{key:`${n}-${r.length}`},V.createElement(Ze,{arrayElement:!0,property:a,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function Ze(e){var t;const{property:n,propertyType:l,value:a}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===l?V.createElement(Y,{values:a,maxWidth:e.maxWidth}):V.createElement(Xe,{property:n,values:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(l){case u.boolean:return V.createElement("div",null,void 0===a?"":Boolean(a).toString());case u.SystemString:case u.code:case u.date:case u.integer:case u.positiveInt:case u.string:case u.unsignedInt:case u.uri:case u.url:return V.createElement("div",null,a);case u.canonical:return V.createElement(Je,{value:{reference:a},link:e.link});case u.dateTime:case u.instant:return V.createElement("div",null,d(a));case u.markdown:return V.createElement("pre",null,a);case u.Address:return V.createElement(q,{value:a});case u.Annotation:return V.createElement("div",null,null==a?void 0:a.text);case u.Attachment:return V.createElement(G,{value:a,maxWidth:e.maxWidth});case u.CodeableConcept:return V.createElement(_e,{value:a});case u.Coding:return V.createElement(qe,{value:a});case u.ContactDetail:return V.createElement(Qe,{value:a});case u.ContactPoint:return V.createElement(Ue,{value:a});case u.HumanName:return V.createElement(He,{value:a});case u.Identifier:return V.createElement(Ke,{value:a});case u.Period:return V.createElement("div",null,m(a));case u.Quantity:return V.createElement(ze,{value:a});case u.Range:return V.createElement(Be,{value:a});case u.Ratio:return V.createElement(Ye,{value:a});case u.Reference:return V.createElement(Je,{value:a,link:e.link});case u.Timing:return V.createElement("div",null,s(a));default:if(!(null==n?void 0:n.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return V.createElement($e,{value:{type:c(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:a},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function et(e,t){const n=p(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function tt(e){const t=ne(),[n,l]=A(e.defaultValue||{});return D().current=n,V.createElement(U,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const a=n?{text:n,authorReference:t&&h(t),time:(new Date).toISOString()}:{};l(a),e.onChange&&e.onChange(a)}})}function nt(e){return V.createElement("input",{id:e.name,name:e.name,className:"medplum-checkbox",type:"checkbox",value:"true",defaultChecked:!!e.defaultValue,required:e.required,ref:e.inputRef,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}})}function lt(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{loadOptions:n=>{var l;const a=null===(l=e.property.binding)||void 0===l?void 0:l.valueSet;return t.searchValueSet(a,n).then((e=>e.expansion.contains.map(at)))},buildUnstructured:rt,getId:ot,getDisplay:it,name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function at(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function rt(e){return{text:e}}function ot(e){return e.coding&&e.coding.length>0?e.coding[0].code:i(e)}function it(e){var t,n,l,a,r,o;const i=null!==(o=null!==(l=null===(n=null===(t=e.coding)||void 0===t?void 0:t[0])||void 0===n?void 0:n.display)&&void 0!==l?l:null===(r=null===(a=e.coding)||void 0===a?void 0:a[0])||void 0===r?void 0:r.code)&&void 0!==o?o:e.text;return V.createElement(V.Fragment,null,i)}const ct={};function ut(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{loadOptions:n=>{var l;const a=null===(l=e.property.binding)||void 0===l?void 0:l.valueSet;return t.searchValueSet(a,n).then((e=>{const t=e.expansion.contains;return t.forEach((e=>ct[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>V.createElement(V.Fragment,null,ct[e]||e),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function st(e){const t=te();let n;return e.defaultValue&&(n=[e.defaultValue]),V.createElement(De,{loadOptions:n=>{var l;const a=null===(l=e.property.binding)||void 0===l?void 0:l.valueSet;return t.searchValueSet(a,n).then((e=>e.expansion.contains.map((e=>({system:e.system,code:e.code,display:e.display})))))},buildUnstructured:e=>({code:e}),getId:e=>e.code,getDisplay:e=>V.createElement(qe,{value:e}),name:e.name,defaultValue:n,loadOnFocus:!0,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function mt(e){const[t,n]=A(e.defaultValue),l=D();function a(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return l.current=t,V.createElement(H,null,V.createElement(K,{defaultValue:null==t?void 0:t.system,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{system:e});e||delete t.system,a(t)},testid:"system"},V.createElement("option",null),V.createElement("option",null,"email"),V.createElement("option",null,"fax"),V.createElement("option",null,"pager"),V.createElement("option",null,"phone"),V.createElement("option",null,"other"),V.createElement("option",null,"sms"),V.createElement("option",null,"url")),V.createElement(K,{defaultValue:null==t?void 0:t.use,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{use:e});e||delete t.use,a(t)},testid:"use"},V.createElement("option",null),V.createElement("option",null,"home"),V.createElement("option",null,"mobile"),V.createElement("option",null,"old"),V.createElement("option",null,"temp"),V.createElement("option",null,"work")),V.createElement(U,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){const t=Object.assign(Object.assign({},l.current),{value:e});e||delete t.value,a(t)}}))}function dt(e){var t;const[n,l]=A(e.defaultValue),a=D();function r(t){l(t),e.onChange&&e.onChange(t)}return a.current=n,V.createElement(H,null,V.createElement(U,{name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:null==n?void 0:n.name,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{name:e});e||delete t.name,r(t)}}),V.createElement(mt,{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,r(t)}}))}function pt(e){return V.createElement(U,Object.assign({},e,{type:"datetime-local",defaultValue:ht(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(vt(t))}}))}function ht(e){if(!e)return"";const t=new Date(e);return v(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function vt(e){if(!e)return"";const t=new Date(e);return v(t)?t.toISOString():""}function Et(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=_(e.outcome,e.name),l=n&&n.length>0;return V.createElement("textarea",{id:e.name,name:e.name,className:t,defaultValue:e.defaultValue||"",required:e.required,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":l,"aria-describedby":l?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,style:e.style,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function gt(e){return V.createElement(Et,{testid:"extension-input",name:e.name,defaultValue:i(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function ft(e){var t,n,l;const[a,r]=A(e.defaultValue),o=D();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=a,V.createElement(H,null,V.createElement(K,{defaultValue:null==a?void 0:a.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},V.createElement("option",null),V.createElement("option",null,"usual"),V.createElement("option",null,"official"),V.createElement("option",null,"temp"),V.createElement("option",null,"nickname"),V.createElement("option",null,"anonymous"),V.createElement("option",null,"old"),V.createElement("option",null,"maiden")),V.createElement(U,{placeholder:"Prefix",defaultValue:null===(t=null==a?void 0:a.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{prefix:e?e.split(" "):void 0}))}}),V.createElement(U,{placeholder:"Given",defaultValue:null===(n=null==a?void 0:a.given)||void 0===n?void 0:n.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{given:e?e.split(" "):void 0}))}}),V.createElement(U,{placeholder:"Family",defaultValue:null==a?void 0:a.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),V.createElement(U,{placeholder:"Suffix",defaultValue:null===(l=null==a?void 0:a.suffix)||void 0===l?void 0:l.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{suffix:e?e.split(" "):void 0}))}}))}function yt(e){const[t,n]=A(e.defaultValue);function l(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(U,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>l(Object.assign(Object.assign({},t),{system:e}))}),V.createElement(U,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>l(Object.assign(Object.assign({},t),{value:e}))}))}function Ct(e){const[t,n]=A(e.defaultValue);function l(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(U,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>l(Object.assign(Object.assign({},t),{start:e}))}),V.createElement(U,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>l(Object.assign(Object.assign({},t),{end:e}))}))}function bt(e){var t;const[n,l]=A(e.defaultValue);function a(t){l(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(K,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>a(Object.assign(Object.assign({},n),{comparator:e}))},V.createElement("option",null),V.createElement("option",null,"<"),V.createElement("option",null,"<="),V.createElement("option",null,">="),V.createElement("option",null,">")),V.createElement(U,{name: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:kt(e)}))}),V.createElement(U,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>a(Object.assign(Object.assign({},n),{unit:e}))}))}function kt(e){if(e)return parseFloat(e)}function Ot(e){const[t,n]=A(e.defaultValue);function l(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(bt,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>l(Object.assign(Object.assign({},t),{low:e}))}),V.createElement(bt,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>l(Object.assign(Object.assign({},t),{high:e}))}))}function Tt(e){const[t,n]=A(e.defaultValue);function l(t){n(t),e.onChange&&e.onChange(t)}return V.createElement(H,null,V.createElement(bt,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>l(Object.assign(Object.assign({},t),{numerator:e}))}),V.createElement(bt,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>l(Object.assign(Object.assign({},t),{denominator:e}))}))}function wt(e){const n=Se(e.value);if(!n)return null;const l=t(n);return e.link?V.createElement(we,{to:n},l):V.createElement("span",null,l)}function jt(e){const t=te(),n=Se(e.defaultValue),[l,a]=A(),r=D(e.resourceType);return r.current=e.resourceType,P((()=>{a(n)}),[n]),V.createElement(De,{loadOptions:e=>se(this,void 0,void 0,(function*(){return t.search(r.current,"name="+encodeURIComponent(e)+"&_count=10").then((e=>e.entry.map((e=>e.resource))))})),getId:e=>e.id,getIcon:e=>V.createElement(Ne,{value:e}),getDisplay:e=>V.createElement(wt,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:l?[l]:void 0,className:e.className,placeholder:e.placeholder,loadOnFocus:e.loadOnFocus,onChange:t=>{var n;n=t.length>0?t[0]:void 0,a(n),e.onChange&&e.onChange(n)}})}function xt(e){const t=e.targetTypes,n=function(e,t){var n;const l=null===(n=null==e?void 0:e.reference)||void 0===n?void 0:n.split("/")[0];if(l)return l;if(t&&t.length>0)return t[0];return}(e.defaultValue,t),[l,a]=A(e.defaultValue),[r,o]=A(n);D().current=l;return D().current=r,V.createElement(H,null,t?V.createElement(K,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>V.createElement("option",{key:e,value:e},e)))):V.createElement(U,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),V.createElement(jt,{resourceType:r,name:e.name+"-id",defaultValue:l,onChange:t=>{var n;n=t?h(t):void 0,a(n),e.onChange&&e.onChange(n)}}))}function St(e){const[t,n]=A(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),l=D();function a(t){n(t),e.onChange&&e.onChange(t)}return l.current=t,V.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},V.createElement("colgroup",null,V.createElement("col",{width:"90%"}),V.createElement("col",{width:"10%"})),V.createElement("tbody",null,t.map(((n,r)=>V.createElement("tr",{key:`${r}-${t.length}`},V.createElement("td",null,V.createElement(It,{arrayElement:!0,property:e.property,name:e.name+"."+r,defaultValue:n,onChange:e=>{const t=[...l.current];t[r]=e,a(t)}})),V.createElement("td",{style:{textAlign:"right"}},V.createElement(J,{onClick:e=>{le(e);const t=[...l.current];t.splice(r,1),a(t)}},"Remove"))))),V.createElement("tr",null,V.createElement("td",null),V.createElement("td",{style:{textAlign:"right"}},V.createElement(J,{onClick:e=>{le(e);const t=[...l.current];t.push(void 0),a(t)}},"Add")))))}function Nt(e){const[t,n]=A(100),[l,a]=A(100);if(!e.visible)return null;return V.createElement(V.Fragment,null,V.createElement("div",{className:"modal-dialog-bg"}),V.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:l+"px"}},V.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){le(e);const r=e.clientX-t,o=e.clientY-l;function i(e){le(e),n(e.clientX-r),a(e.clientY-o)}document.addEventListener("mouseup",(function e(t){le(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},V.createElement("span",{className:"modal-dialog-title-text"},e.title),V.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},V.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),V.createElement("div",{className:"modal-dialog-content"},e.children),V.createElement("div",{className:"modal-dialog-buttons"},V.createElement(J,{testid:"dialog-ok",onClick:e.onOk},"OK"),V.createElement(J,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Vt=["sun","mon","tue","wed","thu","fri","sat"];function At(e){const[t,n]=A(e.defaultValue||{}),[l,a]=A(!1),r=D();return r.current=t,V.createElement(V.Fragment,null,V.createElement(H,null,V.createElement("span",null,s(r.current)||"No repeat"),V.createElement(J,{onClick:()=>a(!0)},"Edit")),V.createElement(Dt,{visible:l,defaultValue:r.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),a(!1)},onCancel:()=>a(!1)}))}function Dt(e){var t,n;const[l,a]=A(e.defaultValue||{}),r=D();function o(e){a(Object.assign(Object.assign({},r.current),{repeat:e}))}function i(e,t){t?function(e){var t,n,l;const a=(null===(n=null===(t=r.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];a.includes(e)||o(Object.assign(Object.assign({},null===(l=r.current)||void 0===l?void 0:l.repeat),{dayOfWeek:[...a,e]}))}(e):function(e){var t,n,l;const a=(null===(n=null===(t=r.current)||void 0===t?void 0:t.repeat)||void 0===n?void 0:n.dayOfWeek)||[];a.includes(e)&&o(Object.assign(Object.assign({},null===(l=r.current)||void 0===l?void 0:l.repeat),{dayOfWeek:a.filter((t=>t!==e))}))}(e)}return r.current=l,V.createElement(Nt,{title:"Timing",visible:e.visible,onOk:()=>e.onOk(l),onCancel:()=>e.onCancel()},V.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},V.createElement(ve,{title:"Starts on",htmlFor:"timing-dialog-start"},V.createElement(pt,{name:"timing-dialog-start",onChange:e=>{return t=e,void a(Object.assign(Object.assign({},r.current),{event:[t]}));var t}})),V.createElement(ve,{title:"Repeat every",htmlFor:"timing-dialog-period"},V.createElement(H,null,V.createElement(U,{type:"number",step:1,name:"timing-dialog-period",defaultValue:null===(t=null==l?void 0:l.repeat)||void 0===t?void 0:t.period,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=r.current)||void 0===t?void 0:t.repeat),{period:e}))}(parseInt(e))}),V.createElement(K,{name:"timing-dialog-periodUnit",defaultValue:null===(n=null==l?void 0:l.repeat)||void 0===n?void 0:n.periodUnit,onChange:e=>function(e){var t;o(Object.assign(Object.assign({},null===(t=r.current)||void 0===t?void 0:t.repeat),{periodUnit:e}))}(e)},V.createElement("option",{value:"d"},"day"),V.createElement("option",{value:"wk"},"week"),V.createElement("option",{value:"mo"},"month"),V.createElement("option",{value:"a"},"year")))),V.createElement(ve,{title:"Repeat on"},V.createElement(H,null,Vt.map((e=>V.createElement(V.Fragment,{key:e},V.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),V.createElement(nt,{name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t)}))))))))}function It(e){var t,n,l;const a=e.property,r=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(l=null===(n=a.type)||void 0===n?void 0:n[0])||void 0===l?void 0:l.code,o=e.name,i=e.defaultValue;if("*"===a.max&&!e.arrayElement)return"Attachment"===r?V.createElement(ie,{name:o,defaultValue:i,onChange:e.onChange}):V.createElement(St,{property:a,name:o,defaultValue:i,onChange:e.onChange});const c=a.type;return c.length>1?V.createElement(Pt,Object.assign({elementDefinitionTypes:c},e)):V.createElement(Rt,Object.assign({elementDefinitionType:c[0]},e))}function Pt(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[a,r]=A(n);return V.createElement(H,null,V.createElement(K,{style:{width:"200px"},defaultValue:null==a?void 0:a.code,onChange:e=>{r(t.find((t=>t.code===e)))}},t.map((e=>V.createElement("option",{key:e.code,value:e.code},e.code)))),V.createElement(Rt,Object.assign({},e,{elementDefinitionType:a,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",l(a.code)))}})))}function Rt(e){var t;const n=e.property,l=e.elementDefinitionType.code,a=e.name,r=e.defaultValue;switch(l){case u.SystemString:case u.canonical:case u.string:case u.time:case u.uri:case u.url:return V.createElement(U,{type:"text",name:a,testid:a,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.date:return V.createElement(U,{type:"date",name:a,testid:a,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.dateTime:case u.instant:return V.createElement(pt,{type:"datetime-local",name:a,testid:a,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.decimal:case u.integer:case u.positiveInt:case u.unsignedInt:return V.createElement(U,{type:"number",step:l===u.decimal?"any":1,name:a,testid:a,defaultValue:r,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case u.code:return V.createElement(ut,{property:n,name:a,defaultValue:r,onChange:e.onChange});case u.boolean:return V.createElement(nt,{name:a,testid:a,defaultValue:!!r,onChange:t=>{e.onChange&&e.onChange(t)}});case u.markdown:return V.createElement(Et,{name:a,testid:a,defaultValue:r,onChange:e.onChange});case u.Address:return V.createElement(B,{name:a,defaultValue:r,onChange:e.onChange});case u.Annotation:return V.createElement(tt,{name:a,defaultValue:r,onChange:e.onChange});case u.Attachment:return V.createElement(ce,{name:a,defaultValue:r,onChange:e.onChange});case u.CodeableConcept:return V.createElement(lt,{property:n,name:a,defaultValue:r,onChange:e.onChange});case u.Coding:return V.createElement(st,{property:n,name:a,defaultValue:r,onChange:e.onChange});case u.ContactDetail:return V.createElement(dt,{name:a,defaultValue:r,onChange:e.onChange});case u.ContactPoint:return V.createElement(mt,{name:a,defaultValue:r,onChange:e.onChange});case u.Extension:return V.createElement(gt,{name:a,defaultValue:r,onChange:e.onChange});case u.HumanName:return V.createElement(ft,{name:a,defaultValue:r,onChange:e.onChange});case u.Identifier:return V.createElement(yt,{name:a,defaultValue:r,onChange:e.onChange});case u.Period:return V.createElement(Ct,{name:a,defaultValue:r,onChange:e.onChange});case u.Quantity:return V.createElement(bt,{name:a,defaultValue:r,onChange:e.onChange});case u.Range:return V.createElement(Ot,{name:a,defaultValue:r,onChange:e.onChange});case u.Ratio:return V.createElement(Tt,{name:a,defaultValue:r,onChange:e.onChange});case u.Reference:return V.createElement(xt,{name:a,defaultValue:r,targetTypes:Ft(n),onChange:e.onChange});case u.Timing:return V.createElement(At,{name:a,defaultValue:r,onChange:e.onChange});default:return V.createElement(Lt,{typeName:c(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:r,onChange:e.onChange,outcome:e.outcome})}}function Ft(e){var t,n,l;return null===(l=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===l?void 0:l.map((e=>e.split("/").pop()))}function Lt(e){var t;const[n,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=a.types[i];if(!c)return V.createElement("div",null,i," not implemented");const u={type:i,value:n};return V.createElement(V.Fragment,null,Object.entries(c.properties).map((t=>{const l=t[0];if("id"===l||Pe.indexOf(l)>=0)return null;const a=t[1];if(!a.type)return null;const[i,c]=et(u,l);return 1===a.type.length&&"boolean"===a.type[0].code?V.createElement(Ie,{key:l,title:r(l),description:a.definition,htmlFor:l},V.createElement(It,{property:a,name:l,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,a)=>{o(Fe(n,l,null!=a?a:l,t[1],e))}})):V.createElement(ve,{key:l,title:r(l),description:a.definition,htmlFor:l,outcome:e.outcome},V.createElement(It,{property:a,name:l,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,a)=>{o(Fe(n,l,null!=a?a:l,t[1],e))}}))})))}function Mt(e){var t;return V.createElement("div",{className:"medplum-resource-badge"},V.createElement(Ne,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),V.createElement(wt,{value:e.value,link:e.link}))}function $t(e){var t,n;const a=Se(e.value),r=Se(null===(t=null==a?void 0:a.specimen)||void 0===t?void 0:t[0]);if(!a)return null;let o="";if(a.presentedForm&&a.presentedForm.length>0){const e=a.presentedForm[0];(null===(n=e.contentType)||void 0===n?void 0:n.startsWith("text/plain"))&&e.data&&(o=window.atob(e.data))}if(null==r?void 0:r.note)for(const e of r.note)o+=e.text+"\n\n";return V.createElement("div",{className:"medplum-diagnostic-report"},V.createElement("h1",null,"Diagnostic Report"),V.createElement("div",{className:"medplum-diagnostic-report-header"},a.subject&&V.createElement("dl",null,V.createElement("dt",null,"Subject"),V.createElement("dd",null,V.createElement(Mt,{value:a.subject,link:!0}))),a.resultsInterpreter&&a.resultsInterpreter.map((e=>V.createElement("dl",{key:e.reference},V.createElement("dt",null,"Interpreter"),V.createElement("dd",null,V.createElement(Mt,{value:e,link:!0}))))),a.issued&&V.createElement("dl",null,V.createElement("dt",null,"Issued"),V.createElement("dd",null,d(a.issued))),a.status&&V.createElement("dl",null,V.createElement("dt",null,"Status"),V.createElement("dd",null,l(a.status)))),a.result&&V.createElement(qt,{value:a.result}),o&&V.createElement("pre",null,o.trim()))}function qt(e){var t;return V.createElement("table",{className:"medplum-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Test"),V.createElement("th",null,"Value"),V.createElement("th",null,"Reference Range"),V.createElement("th",null,"Interpretation"))),V.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>V.createElement(_t,{key:"obs-"+t,value:e})))))}function _t(e){const t=Se(e.value);return t?V.createElement("tr",null,V.createElement("td",null,V.createElement(we,{to:t},V.createElement(_e,{value:t.code}))),V.createElement("td",null,V.createElement(Ut,{value:t})),V.createElement("td",null,V.createElement(Qt,{value:t.referenceRange})),V.createElement("td",null,t.interpretation&&t.interpretation.length>0&&V.createElement(_e,{value:t.interpretation[0]}))):null}function Ut(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?V.createElement(ze,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?V.createElement(V.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?V.createElement(V.Fragment,null,n.component.map(((e,t)=>V.createElement(Ut,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Qt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?V.createElement(Be,{value:t}):null}function Ht(){return V.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},V.createElement("div",{className:"medplum-loading-container"},V.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},V.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function Kt(e){return V.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function zt(e){const t=te(),[n,l]=A();if(P((()=>{t.requestSchema(e.original.resourceType).then(l).catch(console.log)}),[t,e.original.resourceType]),!n)return null;const a=n.types[e.original.resourceType];return a?V.createElement("table",{className:"medplum-diff-table"},V.createElement("colgroup",null,V.createElement("col",{style:{width:"30%"}}),V.createElement("col",{style:{width:"35%"}}),V.createElement("col",{style:{width:"35%"}})),V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Property"),V.createElement("th",null,"Before"),V.createElement("th",null,"After"))),V.createElement("tbody",null,Object.entries(a.properties).map((t=>{const n=t[0];if("id"===n||"meta"===n)return null;const l=t[1],[a,o]=et(E(e.original),n),[c,u]=et(E(e.revised),n);return Wt(a)&&Wt(c)||i(a)===i(c)?null:V.createElement("tr",{key:n},V.createElement("td",null,r(n)),V.createElement("td",{className:"medplum-diff-removed"},V.createElement(Ze,{property:l,propertyType:o,value:a,ignoreMissingValues:!0})),V.createElement("td",{className:"medplum-diff-added"},V.createElement(Ze,{property:l,propertyType:u,value:c,ignoreMissingValues:!0})))})))):null}function Wt(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function Bt(e){const t=te(),n=Se(e.value),[l,a]=A();return P((()=>{n&&t.requestSchema(n.resourceType).then(a).catch(console.log)}),[t,n]),l&&n?V.createElement($e,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function Gt(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",l="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return V.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},V.createElement("div",{className:l,role:e.role,style:{height:n}},e.children))}class Yt extends V.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?V.createElement("h1",null,"Something went wrong."):this.props.children}}function Jt(e){const t=D(null),n=$(),l=D();e.visible?void 0===l.current&&(l.current=n):l.current=void 0;const a=D();a.current=e,P((()=>{function n(n){var l,r;(null===(l=a.current)||void 0===l?void 0:l.visible)&&(null===(r=a.current)||void 0===r?void 0:r.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&(le(n),e.onClose())}function l(e){var t;(null===(t=a.current)||void 0===t?void 0:t.visible)&&le(e)}return document.addEventListener("click",n,!0),window.addEventListener("wheel",l,{passive:!1}),window.addEventListener("touchmove",l,!0),()=>{document.removeEventListener("click",n,!0),window.removeEventListener("wheel",l),window.removeEventListener("touchmove",l,!0)}}),[e]),P((()=>{e.visible&&n!==l.current&&e.onClose()}),[n,e]);const r={display:e.visible?"block":"none"};return e.anchor&&(e.anchor.right+250<document.body.clientWidth?r.left=e.anchor.right+"px":r.right=document.body.clientWidth-e.anchor.left+"px",e.anchor.top+300<document.body.clientHeight?r.top=e.anchor.top+"px":r.bottom=document.body.clientHeight-e.anchor.top+"px"),V.createElement(V.Fragment,null,e.modal&&V.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),V.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function Xt(e){return V.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function Zt(e){var t,n,l;const[a,r]=A(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return V.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},V.createElement("div",{className:"medplum-timeline-item-header"},V.createElement("div",{className:"medplum-timeline-item-avatar"},V.createElement(Ne,{value:o,link:!0,size:"medium"})),V.createElement("div",{className:"medplum-timeline-item-title"},V.createElement(wt,{value:o,link:!0}),V.createElement("div",{className:"medplum-timeline-item-subtitle"},V.createElement(we,{to:e.resource},d(null===(l=e.resource.meta)||void 0===l?void 0:l.lastUpdated)),V.createElement("span",null,"·"),V.createElement(we,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&V.createElement("div",{className:"medplum-timeline-item-actions"},V.createElement("a",{href:"#","aria-label":`Actions for ${g(e.resource)}`,onClick:e=>{le(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},V.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},V.createElement("g",{transform:"translate(-446 -350)"},V.createElement("path",{d:"M458 360a2 2 0 1 1-4 0 2 2 0 0 1 4 0m6 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0m-12 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0"})))))),V.createElement(Yt,null,e.padding&&V.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&V.createElement(V.Fragment,null,e.children)),e.socialEnabled&&V.createElement("div",{className:"medplum-timeline-item-footer"},V.createElement(J,{borderless:!0},"Like"),V.createElement(J,{borderless:!0},"Comment")),e.popupMenuItems&&V.createElement(Jt,{visible:!!a,anchor:a,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function en(e){e.sort(tn)}function tn(e,t){const n=nn(e),l=nn(t);return n>l?1:n<l?-1:ln(e)-ln(t)}function nn(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function ln(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 an(e){const t=M(),n=te(),l=n.getProfile(),a=D(null),r=Se(e.value),[o,i]=A(),[c,u]=A([]),s=e.buildSearchRequests,m=D(c);m.current=c;const d=F((()=>{if(!r)return u([]),void i({});n.executeBatch(s(r)).then(p).catch(console.log)}),[n,r,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)}en(t),t.reverse()}u(t)}function h(e){const t=[...m.current,...e];en(t),t.reverse(),u(t)}function v(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function E(e){v(e,"stat").then(d).catch(console.log)}function g(e){v(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 C(e){t(`/${e.resourceType}/${e.id}/delete`)}function b(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return P((()=>{d()}),[d]),r&&o?V.createElement(Xt,null,e.createCommunication&&V.createElement("article",{className:"medplum-timeline-item"},V.createElement("div",{className:"medplum-timeline-item-header"},V.createElement(he,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,l,o)).then((e=>{h([e])})).catch(console.log);const i=a.current;i&&(i.value="",i.focus())}},V.createElement(U,{name:"text",testid:"timeline-input",inputRef:a}),V.createElement(J,{type:"submit"},"Comment"),V.createElement(oe,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,l,t)).then((e=>{h([e])})).catch(console.log)}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return V.createElement(on,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:o,resource:e,onDetails:b});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return V.createElement(sn,{key:n,resource:e,onDetails:f});case"Communication":return V.createElement(cn,{key:n,resource:e,onPin:"stat"!==e.priority?E:void 0,onUnpin:"stat"===e.priority?g:void 0,onDetails:f,onEdit:y,onDelete:C});case"DiagnosticReport":return V.createElement(mn,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:C});case"Media":return V.createElement(un,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:C});default:return V.createElement(Zt,{key:n,resource:e,padding:!0},V.createElement(Bt,{value:e,ignoreMissingValues:!0}))}}))):V.createElement(Ht,null)}function rn(e){return V.createElement(V.Fragment,null,e.onPin&&V.createElement(Kt,{onClick:()=>e.onPin(e.resource),label:`Pin ${g(e.resource)}`},"Pin"),e.onUnpin&&V.createElement(Kt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${g(e.resource)}`},"Unpin"),e.onDetails&&V.createElement(Kt,{onClick:()=>e.onDetails(e.resource),label:`Details ${g(e.resource)}`},"Details"),e.onEdit&&V.createElement(Kt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${g(e.resource)}`},"Edit"),e.onDelete&&V.createElement(Kt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${g(e.resource)}`},"Delete"))}function on(e){const t=function(e,t){const n=e.entry,l=n.findIndex((e=>{var n,l,a;return(null===(l=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===l?void 0:l.versionId)===(null===(a=t.meta)||void 0===a?void 0:a.versionId)}));if(l>=n.length-1)return;return n[l+1].resource}(e.history,e.resource);return t?V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(zt,{original:t,revised:e.resource})):V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement("h3",null,"Created"),V.createElement(Bt,{value:e.resource,ignoreMissingValues:!0}))}function cn(e){var t,n;const l=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return V.createElement(Zt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:l,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.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 un(e){var t;const n=null===(t=e.resource.content)||void 0===t?void 0:t.contentType,l=n&&!n.startsWith("image/")&&!n.startsWith("video/")&&"application/pdf"!==n;return V.createElement(Zt,{resource:e.resource,padding:!!l,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(G,{value:e.resource.content}))}function sn(e){return V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement(Gt,null,V.createElement("pre",null,e.resource.outcomeDesc)))}function mn(e){return V.createElement(Zt,{resource:e.resource,padding:!0,popupMenuItems:V.createElement(rn,Object.assign({},e))},V.createElement($t,{value:e.resource}))}function dn(e){return V.createElement(an,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${g(e)}&_sort=-_lastUpdated`}}]})})}function pn(e){return V.createElement(an,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${g(e)}`}},{request:{method:"GET",url:`Media?encounter=${g(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:h(e),subject:e.subject,sender:h(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:h(e),subject:e.subject,operator:h(t),issued:(new Date).toISOString(),content:n})})}function hn(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 V.createElement(Ze,{value:t[0]||"",propertyType:e.propertyType})}function vn(e,t){var n;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 l=a.types[e],r=l.properties[t],o=null===(n=l.searchParams)||void 0===n?void 0:n[t.toLowerCase()];if(r&&o)return{name:t,elementDefinition:r,searchParams:[o]};if(r){let n;if(l.searchParams){const a=`${e}.${t.replaceAll("[x]","")}`;n=Object.values(l.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:r,searchParams:n}}if(o){return{name:t,elementDefinition:y(e,o).elementDefinition,searchParams:[o]}}return{name:t}}const En={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]},gn={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 fn(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function yn(e){return fn(e,[])}function Cn(e,t){return fn(e,(e.filters||[]).filter((e=>e.code!==t)))}function bn(e,t,n,l,a){a&&(e=Cn(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:l||""}),fn(e,r)}function kn(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 On(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 Tn(e,t){return xn(e,t,-1)}function wn(e,t){return xn(e,t,0)}function jn(e,t){return xn(e,t,1)}function xn(e,t,n){const l=new Date;l.setDate(l.getDate()+n),l.setHours(0,0,0,0);const a=new Date(l.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Rn(e,t,l,a)}function Sn(e,t){return An(e,t,-1)}function Nn(e,t){return An(e,t,0)}function Vn(e,t){return An(e,t,1)}function An(e,t,n){const l=new Date;l.setMonth(l.getMonth()+n),l.setDate(1),l.setHours(0,0,0,0);const a=new Date(l.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Rn(e,t,l,a)}function Dn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return Rn(e,t,n,new Date)}function In(e,t,n){return Rn(e,t,n,n)}function Pn(e,t,n,l){return Fn(e=Cn(e,t),t,n,l)}function Rn(e,t,n,l){return e=Fn(e=Cn(e,t),t,C.GREATER_THAN_OR_EQUALS,n),e=Fn(e,t,C.LESS_THAN_OR_EQUALS,l)}function Fn(e,t,n,l){return bn(e,t,n,l.toISOString())}function Ln(e,t,n=!0){return bn(e,t,C.MISSING,n.toString())}function Mn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function $n(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function qn(e,t){var n,l;const a=null!==(n=e.count)&&void 0!==n?n:20,r=(null!==(l=e.offset)&&void 0!==l?l:0)+t*a;return $n(e,Math.max(r,0))}function _n(e,t,n){return t===Qn(e)&&void 0!==n&&n===Hn(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Un(e,t){let n=!1;return Qn(e)===t&&(n=!Hn(e)),_n(e,t,n)}function Qn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Hn(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Kn(e){return En[e.type]}function zn(e){var t;return null!==(t=gn[e])&&void 0!==t?t:""}function Wn(e){let t=e;return t.includes(".")&&(t=t.split(".").pop()),"id"===t?"ID":"versionId"===t?"Version ID":(t=t.replace("[x]",""),t=t.replace(/([A-Z])/g," $1"),t=t.replace(/[-_]/g," "),t=t.replace(/\s+/g," "),t=t.trim(),t.split(/\s/).map(l).join(" "))}function Bn(e,t){var n,l;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?d(null===(l=e.meta)||void 0===l?void 0:l.lastUpdated):t.elementDefinition&&`${e.resourceType}.${t.name}`===t.elementDefinition.path?function(e,t){var n,l,a;const r=(null===(a=null===(l=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===l?void 0:l.pop())||void 0===a?void 0:a.replaceAll("[x]",""))||"",[o,i]=et({type:e.resourceType,value:e},r);if(!o)return null;return V.createElement(Ze,{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 l=b(t.expression,[{type:e.resourceType,value:e}]);if(!l||0===l.length)return null;if(n)return V.createElement(Ze,{propertyType:l[0].type,value:l[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return V.createElement(V.Fragment,null,l.map(((e,t)=>V.createElement("span",{key:`${t}-${l.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Gn(e){var t;const[n,l]=A({search:JSON.parse(i(e.search))}),r=D(null),o=D(null);function c(){var e,t;const a=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=r.current)||void 0===t?void 0:t.value;if(o){const e=[...a,o];l({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(){var e,t;const a=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...a];e.splice(e.indexOf(r),1),l({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function s(e,t,n){const l=e[t];e[t]=e[n],e[n]=l}if(P((()=>{l({search:e.search})}),[e.search]),!e.visible)return null;const m=e.search.resourceType,d=a.types[m],p=null!==(t=n.search.fields)&&void 0!==t?t:[],h=function(e){const t=[],n=new Set,l=new Set;for(const a of Object.keys(e.properties))t.push(a),n.add(a.toLowerCase()),l.add(Wn(a));if(e.searchParams)for(const a of Object.keys(e.searchParams)){const e=Wn(a);n.has(a)||l.has(e)||(t.push(a),n.add(a),l.add(Wn(a)))}return t}(d).filter((e=>!(null==p?void 0:p.includes(e)))).sort();return V.createElement(Nt,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},V.createElement("div",null,V.createElement("table",{style:{margin:"auto"}},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",{colSpan:2,align:"center"},"Available"),V.createElement("th",{colSpan:2,align:"center"},"Selected"))),V.createElement("tbody",null,V.createElement("tr",null,V.createElement("td",{colSpan:2,align:"center"},V.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"available"},h.map((e=>V.createElement("option",{key:e,value:e},Wn(e)))))),V.createElement("td",{colSpan:2,align:"center"},V.createElement("select",{ref:o,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&u()}(e),onDoubleClick:()=>{u()},"data-testid":"selected"},p.map((e=>V.createElement("option",{key:e,value:e},Wn(e)))))))),V.createElement("tfoot",null,V.createElement("tr",null,V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:c},"Add")),V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:u},"Remove")),V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:function(){var e,t;const a=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...a],t=e.indexOf(r);s(e,t,t-1),l({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),V.createElement("td",{align:"center"},V.createElement(J,{size:"small",onClick:function(){var e,t;const a=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...a],t=e.indexOf(r);s(e,t,t+1),l({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function Yn(e){var t,n;const{resourceType:l,filter:r}=e,o=null===(n=null===(t=a.types[l])||void 0===t?void 0:t.searchParams)||void 0===n?void 0:n[r.code];if(o){if("reference"===o.type)return V.createElement(wt,{value:{reference:r.value}});const e=y(l,o);if("_lastUpdated"===r.code||e.type===k.DATETIME)return V.createElement(V.Fragment,null,d(r.value))}return V.createElement(V.Fragment,null,r.value)}function Jn(e){var t;const n="filter-value";switch(y(e.resourceType,e.searchParam).type){case k.REFERENCE:return V.createElement(xt,{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 V.createElement(nt,{name:n,testid:n,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case k.DATE:return V.createElement(U,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.DATETIME:return V.createElement(pt,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return V.createElement(U,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case k.QUANTITY:return V.createElement(bt,{name:n,defaultValue:Xn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return V.createElement(U,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function Xn(e){if(e){const[t,n,l]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:l}}}function Zn(e){const[t,n]=A(JSON.parse(i(e.search))),[l,r]=A(-1),o=D(t);if(o.current=t,P((()=>{n(JSON.parse(i(e.search)))}),[e.search]),!e.visible)return null;const c=e.search.resourceType,u=a.types[c].searchParams,s=t.filters||[];return V.createElement(Nt,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(o.current),onCancel:e.onCancel},V.createElement("div",{className:"medplum-filter-editor"},V.createElement("table",{className:"medplum-filter-editor-table"},V.createElement("colgroup",null,V.createElement("col",{style:{width:200}}),V.createElement("col",{style:{width:200}}),V.createElement("col",{style:{width:380}}),V.createElement("col",{style:{width:120}})),V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Field"),V.createElement("th",null,"Operation"),V.createElement("th",null,"Value"),V.createElement("th",null,"Actions"))),V.createElement("tbody",null,s.map(((e,t)=>t===l?V.createElement(tl,{key:`filter-${t}-${s.length}-input`,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const l=[...s];l[t]=e,n(fn(o.current,l)),r(-1)},onCancel:()=>r(-1)}):V.createElement(el,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>r(t),onDelete:()=>n(On(o.current,t))}))),V.createElement(tl,{resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(bn(o.current,e.code,e.operator,e.value))}})))))}function el(e){const{filter:t}=e;return V.createElement("tr",null,V.createElement("td",null,Wn(t.code)),V.createElement("td",null,zn(t.operator)),V.createElement("td",null,V.createElement(Yn,{resourceType:e.resourceType,filter:t})),V.createElement("td",null,V.createElement(J,{size:"small",onClick:e.onEdit},"Edit"),V.createElement(J,{size:"small",onClick:e.onDelete},"Delete")))}function tl(e){var t;const[n,l]=A(null!==(t=e.defaultValue)&&void 0!==t?t:{}),a=D(n);a.current=n;const r=e.searchParams[n.code],o=r&&Kn(r);return V.createElement("tr",null,V.createElement("td",null,V.createElement(K,{testid:"filter-field",defaultValue:a.current.code,onChange:function(e){l(Object.assign(Object.assign({},a.current),{code:e}))}},V.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>V.createElement("option",{key:e,value:e},Wn(e)))))),V.createElement("td",null,o&&V.createElement(K,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){l(Object.assign(Object.assign({},a.current),{operator:e}))}},V.createElement("option",{value:""}),o.map((e=>V.createElement("option",{key:e,value:e},zn(e)))))),V.createElement("td",null,r&&n.operator&&V.createElement(Jn,{resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){l(Object.assign(Object.assign({},a.current),{value:e}))}})),V.createElement("td",null,n.code&&n.operator&&n.value&&V.createElement(J,{size:"small",onClick:()=>{e.onOk(a.current),l({})}},e.okText),e.onCancel&&V.createElement(J,{size:"small",onClick:e.onCancel},"Cancel")))}function nl(e){var t;const[n,l]=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 V.createElement(Nt,{title:e.title,visible:e.visible,onOk:a,onCancel:e.onCancel},V.createElement("div",{style:{width:500}},V.createElement(he,{onSubmit:a},V.createElement(Jn,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:l}))))}function ll(){return V.createElement("div",{className:"medplum-menu-separator"})}function al(e){const[t,n]=A(!1),[l,a]=A(!1),[r,o]=A(void 0),i=D(null),c=D(!1);c.current=t;const u=D(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),a(!0))}return u.current=l,P((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&a(!1)}),150);return()=>window.clearInterval(e)}),[]),V.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,V.createElement("span",{className:"medplum-submenu-arrow"},"►"),V.createElement(Jt,{visible:l,anchor:r,autoClose:!0,onClose:()=>a(!1)},e.children))}function rl(e){if(!e.searchParams)return null;function t(t,n){a(_n(e.search,t.code,n))}function n(t){a(Cn(e.search,t.code))}function l(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})}function a(t){e.onChange(t)}const r={left:e.x,right:e.x,top:e.y,bottom:e.y};return 1===e.searchParams.length?V.createElement(Jt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},V.createElement(ol,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:l,onChange:a,onClear:n})):V.createElement(Jt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},e.searchParams.map((r=>V.createElement(al,{key:r.code,title:Wn(r.code)},V.createElement(ol,{search:e.search,searchParam:r,onSort:t,onPrompt:l,onChange:a,onClear:n})))))}function ol(e){switch(e.searchParam.type){case"date":return V.createElement(il,Object.assign({},e));case"number":case"quantity":return V.createElement(cl,Object.assign({},e));case"reference":return V.createElement(ul,Object.assign({},e));case"string":case"token":case"uri":return V.createElement(sl,Object.assign({},e));default:return V.createElement(V.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function il(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.NOT_EQUALS)},"Does not equal..."),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.ENDS_BEFORE)},"Before..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.STARTS_AFTER)},"After..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.EQUALS)},"Between..."),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onChange(jn(e.search,n))},"Tomorrow"),V.createElement(Kt,{onClick:()=>e.onChange(wn(e.search,n))},"Today"),V.createElement(Kt,{onClick:()=>e.onChange(Tn(e.search,n))},"Yesterday"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onChange(Vn(e.search,n))},"Next Month"),V.createElement(Kt,{onClick:()=>e.onChange(Nn(e.search,n))},"This Month"),V.createElement(Kt,{onClick:()=>e.onChange(Sn(e.search,n))},"Last Month"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onChange(Dn(e.search,n))},"Year to date"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function cl(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.NOT_EQUALS)},"Does not equal..."),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.GREATER_THAN)},"Greater than..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.LESS_THAN)},"Less than..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ul(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.NOT)},"Does not equal..."),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function sl(e){const{searchParam:t}=e,n=t.code;return V.createElement(V.Fragment,null,V.createElement(Kt,{onClick:()=>e.onSort(t,!1)},"Sort A to Z"),V.createElement(Kt,{onClick:()=>e.onSort(t,!0)},"Sort Z to A"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.EQUALS)},"Equals..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.NOT)},"Does not equal..."),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.CONTAINS)},"Contains..."),V.createElement(Kt,{onClick:()=>e.onPrompt(t,C.EQUALS)},"Does not contain..."),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n))},"Missing"),V.createElement(Kt,{onClick:()=>e.onChange(Ln(e.search,n,!1))},"Not missing"),V.createElement(ll,null),V.createElement(Kt,{onClick:()=>e.onClear(t)},"Clear filters"))}function ml(e){return V.createElement("div",{className:"medplum-title-bar"},e.children)}class dl extends Event{constructor(e){super("change"),this.definition=e}}class pl extends Event{constructor(e){super("load"),this.response=e}}class hl extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function vl(e){var t,n,l,r;const o=te(),[i,c]=A(!1),[u,s]=A(),{search:m,onLoad:d}=e,[p,h]=A({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=D(p);function E(t){e.onChange&&e.onChange(new dl(t))}function g(t,n){ae(t.target)||(le(t),1!==t.button&&e.onClick&&e.onClick(new hl(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new hl(n,t)))}v.current=p,P((()=>{s(void 0),o.search(m.resourceType,O(Object.assign(Object.assign({},m),{total:"accurate",fields:void 0}))).then((e=>{h(Object.assign(Object.assign({},v.current),{searchResponse:e})),d&&d(new pl(e))})).catch((e=>{h(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),s(e)}))}),[o,m,d]),P((()=>{c(!1),o.requestSchema(e.search.resourceType).then((()=>c(!0))).catch(console.log)}),[o,e.search.resourceType]);if(!(i&&(null===(t=null==a?void 0:a.types)||void 0===t?void 0:t[e.search.resourceType])))return V.createElement(Ht,null);const f=e.checkboxesEnabled,y=function(e){const t=e.resourceType,n=[];for(const l of e.fields||["id","_lastUpdated"])n.push(vn(t,l));return n}(m),C=m.resourceType,b=p.searchResponse,k=null==b?void 0:b.entry,j=null==k?void 0:k.map((e=>e.resource)),x=null===(l=null===(n=e.userConfig)||void 0===n?void 0:n.search)||void 0===l?void 0:l.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(C)}));return V.createElement("div",{className:"medplum-search-control",onContextMenu:e=>le(e),"data-testid":"search-control"},!e.hideToolbar&&V.createElement(ml,null,V.createElement("div",null,V.createElement("h1",null,V.createElement("a",{href:`https://www.hl7.org/fhir/${C.toLowerCase()}.html`,target:"_blank",rel:"noopener"},C)),x&&V.createElement(K,{testid:"saved-search-select",style:{width:80},onChange:e=>{E(T(e))}},V.createElement("option",null),x.map(((e,t)=>V.createElement("option",{key:`${t}-${x.length}`,value:e.criteria},e.name)))),V.createElement(J,{testid:"fields-button",size:"small",onClick:()=>h(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),V.createElement(J,{testid:"filters-button",size:"small",onClick:()=>h(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&V.createElement(J,{size:"small",onClick:e.onNew},"New..."),e.onExport&&V.createElement(J,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&V.createElement(J,{size:"small",onClick:()=>e.onDelete(Object.keys(p.selected))},"Delete..."),e.onBulk&&V.createElement(J,{size:"small",onClick:()=>e.onBulk(Object.keys(p.selected))},"Bulk...")),b&&V.createElement("div",null,V.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)}(m,b.total),"-",function(e,t){var n,l;return Math.min(t,((null!==(n=e.offset)&&void 0!==n?n:0)+1)*(null!==(l=e.count)&&void 0!==l?l:w))}(m,b.total)," of"," ",null===(r=b.total)||void 0===r?void 0:r.toLocaleString()),V.createElement(J,{testid:"prev-page-button",size:"small",onClick:()=>E(qn(m,-1))},"<<"),V.createElement(J,{testid:"next-page-button",size:"small",onClick:()=>E(qn(m,1))},">>"))),V.createElement("table",null,V.createElement("thead",null,V.createElement("tr",null,f&&V.createElement("th",{className:"medplum-search-icon-cell"},V.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,l={},a=null===(t=v.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)&&(l[e.resource.id]=!0)})),h(Object.assign(Object.assign({},v.current),{selected:l}))}(e)})),y.map((e=>V.createElement("th",{key:e.name,onClick:t=>function(e,t){h(Object.assign(Object.assign({},v.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},Wn(e.name),e.searchParams&&V.createElement(fl,null))))),!e.hideFilters&&V.createElement("tr",null,f&&V.createElement("th",{className:"filters medplum-search-icon-cell"}),y.map((t=>V.createElement("th",{key:t.name,className:"filters"},t.searchParams&&V.createElement(gl,{resourceType:C,searchParams:t.searchParams,filters:e.search.filters})))))),V.createElement("tbody",null,null==j?void 0:j.map((e=>e&&V.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>g(t,e),onAuxClick:t=>g(t,e)},f&&V.createElement("td",{className:"medplum-search-icon-cell"},V.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!p.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,l=Object.assign({},v.current.selected);n?l[t]=!0:delete l[t],h(Object.assign(Object.assign({},v.current),{selected:l}))}(t,e.id)})),y.map((t=>V.createElement("td",{key:t.name},Bn(e,t))))))))),0===(null==j?void 0:j.length)&&V.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&V.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},V.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),V.createElement(rl,{search:e.search,visible:p.popupVisible,x:p.popupX,y:p.popupY,searchParams:p.popupSearchParams,onPrompt:(e,t)=>{h(Object.assign(Object.assign({},v.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{E(e),h(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{h(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))}}),V.createElement(Gn,{search:e.search,visible:v.current.fieldEditorVisible,onOk:e=>{E(e),h(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))},onCancel:()=>{h(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))}}),V.createElement(Zn,{search:e.search,visible:v.current.filterEditorVisible,onOk:e=>{E(e),h(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))},onCancel:()=>{h(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))}}),V.createElement(nl,{visible:v.current.filterDialogVisible,title:"Input",resourceType:C,searchParam:p.filterDialogSearchParam,filter:p.filterDialogFilter,defaultValue:"",onOk:t=>{E(bn(e.search,t.code,t.operator,t.value)),h(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))},onCancel:()=>{h(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))}}))}const El=V.memo(vl);function gl(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?V.createElement("span",null,"no filters"):V.createElement(V.Fragment,null,n.map(((t,l)=>V.createElement("div",{key:`filter-${l}-${n.length}`},zn(t.operator)," ",V.createElement(Yn,{resourceType:e.resourceType,filter:t})))))}function fl(){return V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"rgba(0, 0, 0, 0.3)",strokeWidth:2},V.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function yl(e){var t,n,l,a,r;const o=te(),[i,c]=A(),[u,s]=A(),{query:m,fields:d}=e,[p,h]=A(),[v,E]=A({}),g=D();g.current=p;const f=D({});function y(t,n){ae(t.target)||(le(t),1!==t.button&&e.onClick&&e.onClick(new hl(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new hl(n,t)))}f.current=v,P((()=>{s(void 0),o.graphql(m).then(h).catch(s)}),[o,m]),P((()=>{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 V.createElement(Ht,null);const C=e.checkboxesEnabled;return V.createElement("div",{className:"medplum-search-control",onContextMenu:e=>le(e),"data-testid":"search-control"},V.createElement("table",null,V.createElement("thead",null,V.createElement("tr",null,C&&V.createElement("th",{className:"medplum-search-icon-cell"},V.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=g.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 l=e.target.checked,a={},r=null===(n=null===(t=g.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;l&&r&&r.forEach((e=>{(null==e?void 0:e.id)&&(a[e.id]=!0)})),E(a)}(e)})),d.map((e=>V.createElement("th",{key:e.name},e.name))))),V.createElement("tbody",null,null===(l=null===(n=null==p?void 0:p.data)||void 0===n?void 0:n.ResourceList)||void 0===l?void 0:l.map((e=>e&&V.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},C&&V.createElement("td",{className:"medplum-search-icon-cell"},V.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!v[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,l=Object.assign({},f.current);n?l[t]=!0:delete l[t],E(l)}(t,e.id)})),d.map((t=>V.createElement("td",{key:t.name},V.createElement(hn,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(r=null===(a=null==p?void 0:p.data)||void 0===a?void 0:a.ResourceList)||void 0===r?void 0:r.length)&&V.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&V.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},V.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&V.createElement(J,{size:"small",onClick:()=>e.onBulk(Object.keys(f.current))},"Bulk..."))}const Cl=V.memo(yl);function bl(e){return V.createElement("div",{className:"medplum-footer"},e.children)}function kl(e){const t=te();return V.createElement(De,{loadOptions:(e,n)=>se(this,void 0,void 0,(function*(){return function(e,t){const n=[];e.data.Patients1&&n.push(...e.data.Patients1);e.data.Patients2&&n.push(...e.data.Patients2);e.data.ServiceRequestList&&n.push(...e.data.ServiceRequestList);return function(e,t){return e.sort(((e,n)=>Ol(n,t)-Ol(e,t)))}(function(e){const t=new Set,n=[];for(const l of e)t.has(l.id)||(t.add(l.id),n.push(l));return n}(n),t).slice(0,5)}(yield t.graphql(function(e){const t=JSON.stringify(e);if(j(e))return`{\n Patients1: PatientList(_id: ${t}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(_id: ${t}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ");return`{\n Patients1: PatientList(name: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n Patients2: PatientList(identifier: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(identifier: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ")}(e),void 0,void 0,{signal:n}),e)})),getId:e=>e.id,getIcon:e=>V.createElement(Ne,{value:e}),getDisplay:e=>V.createElement(wt,{value:e}),getHelpText:e=>{var t;return"Patient"===e.resourceType&&e.birthDate?"DoB: "+e.birthDate:null===(t=e.subject)||void 0===t?void 0:t.display},name:e.name,className:e.className,placeholder:e.placeholder,onChange:t=>e.onChange(t[0])})}function Ol(e,t){let n=0;if(e.identifier)for(const l of e.identifier)n=Math.max(n,Tl(l.value,t));if("Patient"===e.resourceType&&e.name)for(const l of e.name)n=Math.max(n,Tl(o(l),t));return n}function Tl(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function wl(e){var t,n,l,a,r,o;const i=M(),c=$(),u=ee(),s=u.medplum,m=s.getLogins(),[d,p]=A(!1),[h,v]=A(!1);return V.createElement(V.Fragment,null,V.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},V.createElement("div",null,V.createElement(we,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>v(!h)},V.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},V.createElement("path",{fillRule:"evenodd",d:"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z",clipRule:"evenodd"}))),V.createElement(we,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),u.profile&&V.createElement(kl,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&V.createElement("div",{className:"medplum-nav-menu-container"},V.createElement(we,{testid:"header-profile-menu-button",onClick:()=>p(!0)},V.createElement(Ne,{size:"small",color:"#f68d42",value:u.profile})),V.createElement(Jt,{visible:d,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>p(!1)},V.createElement("div",{className:"medplum-nav-menu"},V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(Ne,{size:"large",value:u.profile})),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},V.createElement(He,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),V.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(a=null===(l=s.getActiveLogin())||void 0===l?void 0:l.project)||void 0===a?void 0:a.display),V.createElement(J,{testid:"header-profile-link",onClick:()=>{p(!1),e.onProfile&&e.onProfile()}},"Manage your account")),m.length>1&&V.createElement("div",null,V.createElement("hr",null),m.map((e=>{var t,n,l,a;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==g(u.profile)&&V.createElement("div",{className:"medplum-nav-menu-profile",key:null===(n=e.profile)||void 0===n?void 0:n.reference,onClick:()=>{s.setActiveLogin(e).then((()=>{p(!1),window.location.reload()})).catch(console.log)}},V.createElement("div",{className:"medplum-nav-menu-profile-icon"},V.createElement(Ne,null)),V.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=e.profile)||void 0===l?void 0:l.display,V.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(a=e.project)||void 0===a?void 0:a.display)))}))),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(J,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px"}},V.createElement(J,{testid:"header-signout-button",onClick:()=>{p(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),V.createElement("hr",null),V.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},V.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),V.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),V.createElement(Jt,{modal:!0,autoClose:!0,visible:h,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>v(!1)},null===(o=null===(r=e.config)||void 0===r?void 0:r.menu)||void 0===o?void 0:o.map(((t,n)=>{var l,a,r;return V.createElement(V.Fragment,{key:`menu-${n}-${null===(a=null===(l=e.config)||void 0===l?void 0:l.menu)||void 0===a?void 0:a.length}`},V.createElement("h5",null,t.title),V.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>V.createElement("li",{key:e.target},V.createElement(we,{to:e.target},e.name))))))})),V.createElement("h5",null,"Settings"),V.createElement("ul",null,V.createElement("li",null,V.createElement(we,{to:u.profile},"Profile")),V.createElement("li",null,V.createElement(we,{to:"/changepassword"},"Change password")))))}const jl=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function xl(e){return V.createElement(an,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:jl.map((t=>({request:{method:"GET",url:t.replaceAll("$",g(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:h(e),sender:h(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:h(e),operator:h(t),issued:(new Date).toISOString(),content:n})})}function Sl(e){const t=te(),n=Se(e.value),[l,a]=A(void 0),[r,o]=A(),[i,c]=A(),[u,s]=A();function m(){c(void 0)}function d(){o(void 0)}const p=D();if(p.current=u,P((()=>{t.requestSchema("PlanDefinition").then(a).catch(console.log)}),[t]),P((()=>{var e;return s((e=null!=n?n:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:$l(e.action)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),!l||!u)return null;function h(e,t){s(Object.assign(Object.assign({},p.current),{[e]:t}))}return V.createElement("div",{className:"medplum-questionnaire-builder"},V.createElement(he,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},V.createElement(ve,{title:"Plan Title",htmlFor:"title"},V.createElement(U,{defaultValue:u.title,onChange:e=>h("title",e)})),V.createElement(Nl,{actions:u.action||[],selectedKey:r,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>h("action",e)}),V.createElement(J,{type:"submit",size:"large"},"Save")))}function Nl(e){const t=D();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,V.createElement("div",{className:"section"},e.actions.map((l=>V.createElement("div",{key:l.id},V.createElement(Vl,{action:l,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n,onRemove:()=>{return n=l,void e.onChange(t.current.filter((e=>e!==n)));var n}})))),V.createElement("div",{className:"bottom-actions"},V.createElement("a",{href:"#",onClick:n=>{var l;le(n),l={id:Ml()},e.onChange([...t.current,l]),e.setSelectedKey(l.id)}},"Add action")))}function Vl(e){const{action:t}=e,n=function(e){var t,n,l;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===(l=e.definitionCanonical)||void 0===l?void 0:l.startsWith("ActivityDefinition/"))return"task";return}(t),l=e.selectedKey===e.action.id,a=e.hoverKey===e.action.id;const r=l?"section editing":a?"section hovering":"section";return V.createElement("div",{"data-testid":t.id,className:r,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){le(t),e.setHoverKey(e.action.id)}},l?V.createElement(Il,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):V.createElement(Dl,{action:t,actionType:n}),V.createElement("div",{className:"bottom-actions"},V.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const Al={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Dl(e){const{action:t,actionType:n}=e,[l,a]=Fl(t);return V.createElement("div",null,V.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&V.createElement("div",null,V.createElement(Je,{value:{reference:t.definitionCanonical}})),l&&V.createElement("div",null,V.createElement(Ze,{property:Al,propertyType:a,value:l})))}function Il(e){const{action:t}=e,[n,l]=A(e.actionType);function a(n,l){e.onChange(Object.assign(Object.assign({},t),{[n]:l}))}return V.createElement(V.Fragment,null,V.createElement(ve,{title:"Title",htmlFor:`actionTitle-${t.id}`},V.createElement(U,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>a("title",e)})),V.createElement(ve,{title:"Description",htmlFor:`actionDescription-${t.id}`},V.createElement(U,{name:`actionDescription-${t.id}`,defaultValue:t.description,onChange:e=>a("description",e)})),V.createElement(ve,{title:"Type of Action",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},V.createElement(K,{name:`actionType-${t.id}`,defaultValue:n,onChange:l},V.createElement("option",null),V.createElement("option",{value:"appointment"},"Appointment"),V.createElement("option",{value:"lab"},"Lab"),V.createElement("option",{value:"questionnaire"},"Questionnaire"),V.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&V.createElement(Nl,{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 V.createElement(Pl,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return V.createElement(Pl,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return V.createElement(Pl,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return V.createElement(Pl,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),V.createElement(ve,{title:"Timing",description:"When the action should take place.",htmlFor:"timing-"+t.id},V.createElement(Rl,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Pl(e){const{id:t,definitionCanonical:n}=e.action,l=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return V.createElement(ve,{title:e.title,description:e.description,htmlFor:t},V.createElement(jt,{name:t,resourceType:e.resourceType,defaultValue:l,loadOnFocus:!0,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:g(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}function Rl(e){const t=e.action,n="timing",[l,a]=Fl(t);return V.createElement(It,{property:Al,name:"timing[x]",defaultValue:l,defaultPropertyType:a,onChange:(l,a)=>{e.onChange(Fe(t,n,null!=a?a:n,Al,l))}})}function Fl(e){return et({type:"PlanDefinitionAction",value:e},"timing")}let Ll=1;function Ml(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Ll=Math.max(Ll,t+1))}return e}return"id-"+Ll++}function $l(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:Ml(e.id),action:$l(e.action)})))}var ql;function _l(e){return"choice"===e.type||"open-choice"===e.type}function Ul(e){const t=te(),n=t.getProfile(),[l,a]=A(),r=Se(e.questionnaire),[o,i]=A(),[c,u]=A({});return P((()=>{t.requestSchema("Questionnaire").then((()=>t.requestSchema("QuestionnaireResponse"))).then(a).catch(console.log)}),[t]),P((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:g(e),item:Wl(e.item)}}(r):void 0)}),[r]),l&&r?V.createElement(he,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:g(r),subject:e.subject,source:h(n),authored:(new Date).toISOString()}))}},r.title&&V.createElement("h1",null,r.title),r.item&&V.createElement(Ql,{items:r.item,answers:c,onChange:function(e){const t={resourceType:"QuestionnaireResponse",item:e};i(t),u(S(t))}}),V.createElement(J,{type:"submit",size:"large"},e.submitButtonText||"OK")):null}function Ql(e){const[t,n]=A(Wl(e.items));function l(l,a){const r=t.slice();r[l]=a,n(r),e.onChange(r)}return V.createElement(V.Fragment,null,e.items.map(((t,n)=>{if(!Yl(t,e.answers))return null;if(t.type===ql.display)return V.createElement("p",{key:t.linkId},t.text);if(t.type===ql.group)return V.createElement(Hl,{key:t.linkId,item:t,answers:e.answers,onChange:e=>l(n,e)});if(t.type===ql.boolean){const e=t.initial&&t.initial.length>0?t.initial[0]:void 0;return V.createElement(Ie,{key:t.linkId,title:t.text,htmlFor:t.linkId},V.createElement(nt,{name:t.linkId,defaultValue:null==e?void 0:e.valueBoolean,onChange:e=>l(n,{linkId:t.linkId,text:t.text,answer:[{valueBoolean:e}]})}))}return V.createElement(ve,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},V.createElement(Hl,{item:t,answers:e.answers,onChange:e=>l(n,e)}))})))}function Hl(e){const t=e.item,n=t.type;if(!n)return null;const l=t.linkId;if(!l)return null;const a=t.initial&&t.initial.length>0?t.initial[0]:void 0;function r(n){e.onChange({linkId:t.linkId,text:t.text,answer:[n]})}switch(n){case ql.group:return V.createElement("div",null,V.createElement("h3",null,t.text),t.item&&V.createElement(Ql,{items:t.item,answers:e.answers,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case ql.boolean:return V.createElement(nt,{name:l,defaultValue:null==a?void 0:a.valueBoolean,onChange:e=>r({valueBoolean:e})});case ql.decimal:return V.createElement(U,{type:"number",step:"any",name:l,defaultValue:null==a?void 0:a.valueDecimal,onChange:e=>r({valueDecimal:parseFloat(e)})});case ql.integer:return V.createElement(U,{type:"number",step:1,name:l,defaultValue:null==a?void 0:a.valueInteger,onChange:e=>r({valueInteger:parseInt(e)})});case ql.date:return V.createElement(U,{type:"date",name:l,defaultValue:null==a?void 0:a.valueDate,onChange:e=>r({valueDate:e})});case ql.dateTime:return V.createElement(pt,{type:"datetime-local",name:l,defaultValue:null==a?void 0:a.valueDateTime,onChange:e=>r({valueDateTime:e})});case ql.time:return V.createElement(U,{type:"time",name:l,defaultValue:null==a?void 0:a.valueTime,onChange:e=>r({valueTime:e})});case ql.string:return V.createElement(U,{type:"text",name:l,defaultValue:null==a?void 0:a.valueString,onChange:e=>r({valueString:e})});case ql.text:return V.createElement(Et,{name:l,defaultValue:null==a?void 0:a.valueString,onChange:e=>r({valueString:e})});case ql.url:return V.createElement(U,{type:"url",name:l,defaultValue:null==a?void 0:a.valueUri,onChange:e=>r({valueUri:e})});case ql.attachment:return V.createElement(ce,{name:l,defaultValue:null==a?void 0:a.valueAttachment,onChange:e=>r({valueAttachment:e})});case ql.reference:return V.createElement(xt,{name:l,defaultValue:null==a?void 0:a.valueReference,onChange:e=>r({valueReference:e})});case ql.quantity:return V.createElement(bt,{name:l,defaultValue:null==a?void 0:a.valueQuantity,onChange:e=>r({valueQuantity:e})});case ql.choice:case ql.openChoice:return function(e){var t;return!!(null===(t=e.extension)||void 0===t?void 0:t.some((e=>{var t,n,l;return"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===(null===(l=null===(n=null===(t=e.valueCodeableConcept)||void 0===t?void 0:t.coding)||void 0===n?void 0:n[0])||void 0===l?void 0:l.code)})))}(t)?V.createElement(Kl,{name:l,item:t,initial:a,onChangeAnswer:r}):V.createElement(zl,{name:l,item:t,initial:a,onChangeAnswer:r})}return null}function Kl(e){const{name:t,item:n,initial:r}=e,o=a.types.QuestionnaireItemAnswerOption.properties["value[x]"],c=p({type:"QuestionnaireItemInitial",value:r},"value");return V.createElement("select",{id:t,name:t,className:"medplum-select",onChange:t=>{const a=t.currentTarget.selectedIndex;if(0===a)return void e.onChangeAnswer({});const r=n.answerOption[a-1],o=p({type:"QuestionnaireItemAnswerOption",value:r},"value"),i="value"+l(o.type);e.onChangeAnswer({[i]:o.value})}},V.createElement("option",null),n.answerOption&&n.answerOption.map(((e,n)=>{const l=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),a=`${t}-option-${n}`;return V.createElement("option",{key:a,value:l.value,selected:c&&i(l)===i(c)},V.createElement(Ze,{property:o,propertyType:l.type,value:l.value}))})))}function zl(e){const{name:t,item:n,initial:r,onChangeAnswer:o}=e,c=a.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=p({type:"QuestionnaireItemInitial",value:r},"value");return V.createElement(V.Fragment,null,n.answerOption&&n.answerOption.map(((e,n)=>{const a=p({type:"QuestionnaireItemAnswerOption",value:e},"value"),r="value"+l(a.type),s=`${t}-option-${n}`;return V.createElement("div",{key:s,className:"medplum-questionnaire-option-row"},V.createElement("div",{className:"medplum-questionnaire-option-checkbox"},V.createElement("input",{type:"radio",id:s,name:t,value:a.value,defaultChecked:u&&i(a)===i(u),onChange:()=>o({[r]:a.value})})),V.createElement("div",null,V.createElement("label",{htmlFor:s},V.createElement(Ze,{property:c,propertyType:a.type,value:a.value}))))})))}function Wl(e){var t;return null!==(t=null==e?void 0:e.map(Bl))&&void 0!==t?t:[]}function Bl(e){var t,n;return{linkId:e.linkId,text:e.text,item:Wl(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Gl))&&void 0!==n?n:[]}}function Gl(e){return Object.assign({},e)}function Yl(e,t){if(!e.enableWhen)return!0;const n=e.enableBehavior||"any";for(const l of e.enableWhen){const e=p({type:"QuestionnaireItemEnableWhen",value:l},"answer[x]"),a=p({type:"QuestionnaireResponseItemAnswer",value:t[l.question]},"value[x]"),r=x(e,a);if("any"===n&&r)return!0;if("all"===n&&!r)return!1}return"any"!==n}function Jl(e){const t=te(),n=Se(e.questionnaire),[l,a]=A(),[r,o]=A(),[i,c]=A(),[u,s]=A();function m(){s(void 0)}function d(){c(void 0)}return P((()=>{t.requestSchema("Questionnaire").then(a).catch(console.log)}),[t]),P((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||la(),item:aa(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),l&&r?V.createElement("div",{className:"medplum-questionnaire-builder"},V.createElement(he,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},V.createElement(Xl,{item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),V.createElement(J,{type:"submit",size:"large"},"Save"))):null}function Xl(e){var t;const n=e.item,l=e.item,a="resourceType"in e.item,r=a||l.type===ql.group,o=null!==(t=l.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=D();function s(t){var n;const l=u.current;e.onChange(Object.assign(Object.assign({},l),{item:null===(n=l.item)||void 0===n?void 0:n.map((e=>e.id===t.id?t:e))}))}function m(t){var n,l;e.onChange(Object.assign(Object.assign({},e.item),{item:[...null!==(l=null===(n=e.item)||void 0===n?void 0:n.item)&&void 0!==l?l:[],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 V.createElement("div",{"data-testid":l.linkId,className:p,onClick:function(t){le(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){le(t),e.setHoverKey(e.item.id)}},i?V.createElement(V.Fragment,null,a&&V.createElement("div",null,V.createElement(U,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&V.createElement("div",null,V.createElement(K,{defaultValue:l.type,onChange:e=>d("type",e)},V.createElement("option",{value:"display"},"Display"),V.createElement("optgroup",{label:"Question"},V.createElement("option",{value:"boolean"},"Boolean"),V.createElement("option",{value:"decimal"},"Decimal"),V.createElement("option",{value:"integer"},"Integer"),V.createElement("option",{value:"date"},"Date"),V.createElement("option",{value:"dateTime"},"Date/Time"),V.createElement("option",{value:"time"},"Time"),V.createElement("option",{value:"string"},"String"),V.createElement("option",{value:"text"},"Text"),V.createElement("option",{value:"url"},"URL"),V.createElement("option",{value:"choice"},"Choice"),V.createElement("option",{value:"open-choice"},"Open Choice"),V.createElement("option",{value:"attachment"},"Attachment"),V.createElement("option",{value:"reference"},"Reference"),V.createElement("option",{value:"quantity"},"Quantity")))),!a&&V.createElement(Et,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:l.text,onChange:e=>d("text",e)}),_l(l)&&V.createElement(Zl,{options:l.answerOption,onChange:e=>d("answerOption",e)})):V.createElement(V.Fragment,null,n.title&&V.createElement("h1",null,n.title),l.text&&V.createElement("p",null,l.text),!r&&V.createElement(Hl,{item:l,answers:{},onChange:()=>{}})),l.item&&l.item.map((t=>V.createElement("div",{key:t.id},V.createElement(Xl,{item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:s,onRemove:()=>function(t){var n,l;e.onChange(Object.assign(Object.assign({},e.item),{item:null===(l=null===(n=e.item)||void 0===n?void 0:n.item)||void 0===l?void 0:l.filter((e=>e!==t))}))}(t)})))),!r&&V.createElement("div",{className:"top-actions"},i?V.createElement(U,{defaultValue:l.linkId,onChange:e=>d("linkId",e),size:4}):V.createElement("div",null,o)),V.createElement("div",{className:"bottom-actions"},r&&V.createElement(V.Fragment,null,V.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:la(),linkId:na("q"),type:"string",text:"Question"})}},"Add item"),V.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:la(),linkId:na("g"),type:"group",text:"Group"})}},"Add group")),!a&&V.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Zl(e){var t;const n=a.types.QuestionnaireItemAnswerOption.properties["value[x]"],l=null!==(t=e.options)&&void 0!==t?t:[];return V.createElement("div",null,l.map((t=>{const[a,r]=et({type:"QuestionnaireItemAnswerOption",value:t},"value");return V.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},V.createElement("div",null,V.createElement(It,{key:t.id,name:"value[x]",property:n,defaultPropertyType:r,defaultValue:a,onChange:(n,a)=>{const r=[...l],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[a]:n},e.onChange(r)}})),V.createElement("div",null,V.createElement("a",{href:"#",onClick:n=>{le(n),e.onChange(l.filter((e=>e.id!==t.id)))}},"Remove")))})),V.createElement("a",{href:"#",onClick:t=>{le(t),e.onChange([...l,{id:la()}])}},"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"}(ql||(ql={}));let ea=1,ta=1;function na(e){return e+ea++}function la(){return"id-"+ta++}function aa(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&(ta=Math.max(ta,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&(ea=Math.max(ea,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||la(),item:aa(e.item),answerOption:ra(e.answerOption)})))}function ra(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||la()})))}function oa(e){return V.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function ia(e){var t;const n=te(),l=Se(e.value),[a,r]=A(!1),[o,i]=A();return P((()=>{l&&!a&&(n.executeBatch(function(e){var t;const n=[];if(e.action)for(const l of e.action)(null===(t=l.resource)||void 0===t?void 0:t.reference)&&n.push({request:{method:"GET",url:l.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:n}}(l)).then(i).catch(console.log),r(!0))}),[n,l,a]),l&&o?V.createElement("div",{className:"medplum-request-group"},null===(t=l.action)||void 0===t?void 0:t.map(((t,n)=>{var l,a,r,i,c,u;const s=t.resource&&function(e){for(const t of null==o?void 0:o.entry)if(t.resource&&e.reference===g(t.resource))return t.resource;return}(t.resource),m=null===(a=null===(l=null==s?void 0:s.input)||void 0===l?void 0:l[0])||void 0===a?void 0:a.valueReference,p=null===(i=null===(r=null==s?void 0:s.output)||void 0===r?void 0:r[0])||void 0===i?void 0:i.valueReference;return V.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},V.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==s?void 0:s.status)?"🗹":"☐"),V.createElement("div",{className:"medplum-request-group-task-details"},V.createElement("div",{className:"medplum-request-group-task-title"},t.title),t.description&&V.createElement("div",null,t.description),V.createElement("div",null,"Last edited by ",V.createElement(wt,{value:null===(c=null==s?void 0:s.meta)||void 0===c?void 0:c.author})," on ",d(null===(u=null==s?void 0:s.meta)||void 0===u?void 0:u.lastUpdated)),V.createElement("div",null,"Status: ",V.createElement(oa,{status:(null==s?void 0:s.status)||"unknown"}))),V.createElement("div",{className:"medplum-request-group-task-actions"},m&&!p&&V.createElement(J,{onClick:()=>e.onStart(s,m)},"Start"),m&&p&&V.createElement(J,{onClick:()=>e.onEdit(s,m,p)},"Edit")))}))):null}function ca(e,t){return function(e,t,n){const l=[];let a=e;a.snake&&(a=a.prev);for(;a&&a.prev&&a.prev.j>=0;){const e=a.i,r=a.j;a=a.prev;const o=a.i,i=a.j,c={position:o,lines:t.slice(o,e)},u={position:i,lines:n.slice(i,r)};let s;s=0===c.lines.length&&u.lines.length>0?"insert":c.lines.length>0&&0===u.lines.length?"delete":"change",l.push({original:c,revised:u,type:s}),a.snake&&(a=a.prev)}return l}(function(e,t){const n=e.length,l=t.length,a=n+l+1,r=1+2*a,o=r/2|0,i=new Array(r);i[o+1]={i:0,j:-1,prev:void 0,snake:!0};for(let r=0;r<a;r++){for(let a=-r;a<=r;a+=2){const c=o+a,u=c-1,s=i[c+1],m=i[u];let d,p=0;a===-r||a!==r&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let h=p-a,v={i:p,j:h,prev:ua(d),snake:!1};for(;p<n&&h<l&&e[p]===t[h];)p++,h++;if(p>v.i&&(v={i:p,j:h,prev:v,snake:!0}),i[c]=v,p>=n&&h>=l)return i[c]}i[o+r-1]=void 0}return}(e,t),e,t)}function ua(e){return e&&!e.snake&&e.prev?e.prev:e}function sa(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:i(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 l=ca(t[n-1].lines,t[n].lines);for(const a of l){const l=a.original.position,r=a.original.lines,o=a.revised.lines;if("delete"!==a.type&&"change"!==a.type||e.splice(l,r.length),"insert"===a.type||"change"===a.type)for(let r=0;r<a.revised.lines.length;r++)e.splice(l+r,0,{id:t[n].meta.versionId,meta:t[n].meta,value:o[r],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 ma(e){var t,n;const l=te(),[a,r]=A(e.history);if(P((()=>{!e.history&&e.resourceType&&e.id&&l.readHistory(e.resourceType,e.id).then(r).catch(console.log)}),[l,e.history,e.resourceType,e.id]),!a)return V.createElement("div",null,"Loading...");const o=null===(n=null===(t=a.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=sa(a);return V.createElement("div",{className:"medplum-blame-container"},V.createElement("table",{className:"medplum-blame"},V.createElement("tbody",null,i.map(((e,t)=>V.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&V.createElement("td",{className:"details",rowSpan:e.span},V.createElement(H,{justifyContent:"space-between"},V.createElement(Mt,{value:e.meta.author,size:"xsmall",link:!0}),V.createElement(we,{to:da(o,e.meta.versionId)},pa(e.meta.lastUpdated)))),V.createElement("td",{className:"line-number"},t+1),V.createElement("td",{className:"line"},V.createElement("pre",{className:"line-pre"},e.value))))))))}function da(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function pa(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return ha(n,"year");const l=Math.floor(t/2592e3);if(l>0)return ha(l,"month");const a=Math.floor(t/86400);if(a>0)return ha(a,"day");const r=Math.floor(t/3600);if(r>0)return ha(r,"hour");const o=Math.floor(t/60);return o>0?ha(o,"minute"):ha(t,"second")}function ha(e,t){return`${e} ${1===e?t:t+"s"} ago`}function va(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 l=ca(i(t,!0).match(/[^\r\n]+/g),i(n,!0).match(/[^\r\n]+/g));return V.createElement("pre",{style:{color:"gray"}},l.map(((e,t)=>V.createElement(Ea,{key:"delta"+t,delta:e}))))}function Ea(e){return V.createElement(V.Fragment,null,"...",V.createElement("br",null),e.delta.original.lines.length>0&&V.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&V.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",V.createElement("br",null))}function ga(e){var t;const n=te(),[l,a]=A(e.history);return P((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then(a).catch(console.log)}),[n,e.history,e.resourceType,e.id]),l?V.createElement("table",{className:"medplum-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"Author"),V.createElement("th",null,"Date"),V.createElement("th",null,"Version"))),V.createElement("tbody",null,null===(t=l.entry)||void 0===t?void 0:t.map(((e,t)=>V.createElement(fa,{key:"entry-"+t,entry:e}))))):V.createElement("div",null,"Loading...")}function fa(e){var t,n,l;const{response:a,resource:r}=e.entry;return r?V.createElement("tr",null,V.createElement("td",null,V.createElement(Mt,{value:null===(t=r.meta)||void 0===t?void 0:t.author,link:!0})),V.createElement("td",null,d(null===(n=r.meta)||void 0===n?void 0:n.lastUpdated)),V.createElement("td",null,V.createElement(we,{to:ya(r)},null===(l=r.meta)||void 0===l?void 0:l.versionId))):V.createElement("tr",null,V.createElement("td",{colSpan:3},N(null==a?void 0:a.outcome)))}function ya(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function Ca(e){const{onChangeMonth:t,onClick:n}=e,[l,a]=A(ba);function r(e){a((n=>{const l=new Date(n.getTime());return l.setMonth(n.getMonth()+e),t(l),l}))}const o=L((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),l=[];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:ka(n,t)}),6===n.getDay()&&(l.push(a),a=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)a.push(void 0);l.push(a)}return l}(l,e.slots)),[l,e.slots]);return V.createElement("div",null,V.createElement(H,null,V.createElement("p",{style:{flex:1}},(i=l).toLocaleString("default",{month:"long"})+" "+i.getFullYear()),V.createElement("p",null,V.createElement(J,{label:"Previous month",onClick:()=>r(-1)},"<"),V.createElement(J,{label:"Next month",onClick:()=>r(1)},">"))),V.createElement("table",{className:"medplum-calendar-table"},V.createElement("thead",null,V.createElement("tr",null,V.createElement("th",null,"SUN"),V.createElement("th",null,"MON"),V.createElement("th",null,"TUE"),V.createElement("th",null,"WED"),V.createElement("th",null,"THU"),V.createElement("th",null,"FRI"),V.createElement("th",null,"SAT"))),V.createElement("tbody",null,o.map(((e,t)=>V.createElement("tr",{key:"week-"+t},e.map(((e,t)=>V.createElement("td",{key:"day-"+t},e&&V.createElement("button",{disabled:!e.available,onClick:()=>n(e.date)},e.date.getDate()))))))))));var i}function ba(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function ka(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 Oa(e){var t;const n=te(),l=Se(e.schedule),a=Se(e.questionnaire),[r,o]=A();D().current=r;const[i,c]=A(ba()),[u,s]=A(),[m,d]=A(),[p,h]=A();if(P((()=>{l?(o([]),n.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",g(l)],["start","gt"+Ta(i)],["start","lt"+wa(i)]])).then(o).catch(console.log)):o(void 0)}),[n,l,i]),!l||!r||!a)return null;const v=null===(t=l.actor)||void 0===t?void 0:t[0];return V.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},V.createElement("div",{className:"medplum-calendar-info-pane"},v&&V.createElement(Ne,{value:v,size:"large"}),v&&V.createElement("h1",null,V.createElement(wt,{value:v})),V.createElement("p",null,"1 hour"),u&&V.createElement("p",null,u.toLocaleDateString()),m&&V.createElement("p",null,xa(new Date(m.start)))),V.createElement("div",{className:"medplum-calendar-selection-pane"},!u&&V.createElement("div",null,V.createElement("h3",null,"Select date"),V.createElement(Ca,{slots:r,onChangeMonth:c,onClick:s})),u&&!m&&V.createElement("div",null,V.createElement("h3",null,"Select time"),r.map((e=>{const t=new Date(e.start);return t.getTime()>u.getTime()&&t.getTime()<u.getTime()+864e5&&V.createElement("div",{key:e.id},V.createElement(J,{style:{width:150},onClick:()=>d(e)},xa(t)))}))),u&&m&&!p&&V.createElement(Ul,{questionnaire:a,submitButtonText:"Next",onSubmit:h}),u&&m&&p&&V.createElement("div",null,V.createElement("h3",null,"You're all set!"),V.createElement("p",null,"Check your email for a calendar invite."))))}function Ta(e){return ja(e.getTime())}function wa(e){return ja(e.getTime()+26784e5)}function ja(e){return new Date(Math.max(Date.now(),e)).toISOString()}function xa(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function Sa(e){return V.createElement(an,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${g(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${g(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${g(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${g(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[h(e)],subject:e.subject,sender:h(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[h(e)],subject:e.subject,operator:h(t),issued:(new Date).toISOString(),content:n})})}function Na(e){let t="medplum-tab";function n(t){le(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),V.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function Va(e){return V.createElement(Gt,{className:"medplum-surface",height:50},V.createElement("div",{role:"tablist",className:"medplum-tablist"},V.createElement("div",{className:"medplum-tablist-foreground"},V.Children.map(e.children,((t,n)=>V.isValidElement(t)&&t.type===Na?V.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function Aa(e){return V.createElement("div",{role:"tabpanel"},e.children)}function Da(e){return V.createElement(V.Fragment,null,V.Children.map(e.children,(t=>V.isValidElement(t)&&t.type===Aa&&t.props.name===e.value?t:null)))}export{q as AddressDisplay,B as AddressInput,Y as AttachmentArrayDisplay,ie as AttachmentArrayInput,ce as AttachmentInput,De as Autocomplete,Ne as Avatar,Lt as BackboneElementInput,J as Button,nt as Checkbox,Ie as CheckboxFormSection,ut as CodeInput,_e as CodeableConceptDisplay,lt as CodeableConceptInput,Qe as ContactDetailDisplay,dt as ContactDetailInput,Ue as ContactPointDisplay,mt as ContactPointInput,pt as DateTimeInput,dn as DefaultResourceTimeline,Le as DescriptionList,Me as DescriptionListEntry,$t as DiagnosticReportDisplay,ue as Document,Pt as ElementDefinitionInputSelector,Rt as ElementDefinitionTypeInput,pn as EncounterTimeline,Yt as ErrorBoundary,yl as FhirPathTable,bl as FooterLinks,he as Form,ve as FormSection,wl as Header,He as HumanNameDisplay,ft as HumanNameInput,yt as IdentifierInput,U as Input,H as InputRow,Ht as Loading,Ee as Logo,we as MedplumLink,Z as MedplumProvider,Cl as MemoizedFhirPathTable,El as MemoizedSearchControl,Kt as MenuItem,qt as ObservationTable,xl as PatientTimeline,Sl as PlanDefinitionBuilder,Jt as Popup,Jl as QuestionnaireBuilder,Ul as QuestionnaireForm,Hl as QuestionnaireFormItem,ql as QuestionnaireItemType,Be as RangeDisplay,Ot as RangeInput,xt as ReferenceInput,Te as RegisterForm,ia as RequestGroupDisplay,Xe as ResourceArrayDisplay,St as ResourceArrayInput,Mt as ResourceBadge,ma as ResourceBlame,va as ResourceDiff,Re as ResourceForm,ga as ResourceHistoryTable,jt as ResourceInput,wt as ResourceName,Ze as ResourcePropertyDisplay,It as ResourcePropertyInput,Bt as ResourceTable,an as ResourceTimeline,Oa as Scheduler,Gt as Scrollable,dl as SearchChangeEvent,hl as SearchClickEvent,vl as SearchControl,Gn as SearchFieldEditor,Zn as SearchFilterEditor,pl as SearchLoadEvent,K as Select,Sa as ServiceRequestTimeline,Ae as SignInForm,oa as StatusBadge,Na as Tab,Va as TabList,Aa as TabPanel,Da as TabSwitch,Et as TextArea,Xt as Timeline,Zt as TimelineItem,ml as TitleBar,oe as UploadButton,In as addDateEqualsFilter,Pn as addDateFilter,Rn as addDateFilterBetween,kn as addField,bn as addFilter,Sn as addLastMonthFilter,Ln as addMissingFilter,Vn as addNextMonthFilter,Nn as addThisMonthFilter,wn as addTodayFilter,jn as addTomorrowFilter,Dn as addYearToDateFilter,Tn as addYesterdayFilter,Wn as buildFieldNameString,yn as clearFilters,Cn as clearFiltersOnField,ht as convertIsoToLocal,vt as convertLocalToIso,fe as createScriptTag,On as deleteFilter,Ge as formatRangeString,zn as getOpString,ke as getRecaptcha,Kn as getSearchOperators,Qn as getSortField,pa as getTimeString,et as getValueAndType,Mn as hasFilterOnField,be as initRecaptcha,_l as isChoiceQuestion,Yl as isQuestionEnabled,Hn as isSortDescending,qn as movePage,me as parseForm,Bn as renderValue,fn as setFilters,$n as setOffset,Fe as setPropertyValue,_n as setSort,en as sortByDateAndPriority,Un as toggleSort,te as useMedplum,ee as useMedplumContext,ne as useMedplumProfile,Se as useResource};
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 x,normalizeErrorString as S}from"@medplum/core";import w,{useState as N,useRef as I,createContext as V,useEffect as A,useContext as D,forwardRef as R,useCallback 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,Autocomplete as J,Loader as Y,JsonInput as X,Modal as Z,Textarea as ee,Menu as te,createStyles as ne,Table as ae,Center as re,Pagination as le}from"@mantine/core";import{IconCircleMinus as oe,IconCloudUpload as ie,IconCirclePlus as ce,IconDots as ue,IconPin as se,IconPinnedOff as me,IconListDetails as de,IconEdit as pe,IconTrash as ve,IconSortAscending as he,IconSortDescending as ge,IconEqual as Ee,IconEqualNot as fe,IconMathLower as ye,IconMathGreater as be,IconBracketsContain as Ce,IconCalendar as Te,IconSettings as ke,IconBucket as Oe,IconBucketOff as je,IconBleach as xe,IconBleachOff as Se,IconX as we,IconFilter as Ne,IconColumns as Ie,IconFilePlus as Ve,IconTableExport as Ae,IconBoxMultiple as De,IconAdjustmentsHorizontal as Re}from"@tabler/icons";import{useNavigate as Pe}from"react-router-dom";function Le(t){const n=t.value;return n?w.createElement(w.Fragment,null,e(n)):null}function Fe(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function Me(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 qe(e){const[t,n]=N(e.defaultValue||{}),a=I();function r(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.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"]}),w.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"]}),w.createElement(q,{placeholder:"Line 1",defaultValue:Fe(t,0),onChange:e=>{return t=e.currentTarget.value,void r(Me(a.current||{},0,t));var t}}),w.createElement(q,{placeholder:"Line 2",defaultValue:Fe(t,1),onChange:e=>{return t=e.currentTarget.value,void r(Me(a.current||{},1,t));var t}}),w.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}}),w.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}}),w.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 $e(e){const t=e.value,{contentType:n,url:a,title:r}=null!=t?t:{};return a?w.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&w.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/"))&&w.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},w.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==r?void 0:r.endsWith(".pdf"))&&w.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},w.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),w.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},w.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 _e(e){return w.createElement("div",null,e.values&&e.values.map(((t,n)=>w.createElement("div",{key:"attatchment-"+n},w.createElement($e,{value:t,maxWidth:e.maxWidth})))))}const ze=V(void 0);function Ue(e){const t=e.medplum,[n,a]=N({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 w.createElement(ze.Provider,{value:r},e.children)}function We(){return D(ze)}function Ke(){return We().medplum}function Qe(){return We().profile}function He(e){e.preventDefault(),e.stopPropagation()}function Be(e){if(Ge(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&Ge(t[0]))return!0}return!1}function Ge(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function Je(e){const t=Ke(),n=I(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 w.createElement(w.Fragment,null,w.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){He(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),e.children({onClick:function(e){var t;He(e),null===(t=n.current)||void 0===t||t.click()}}))}function Ye(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:[]),r=I();function l(t){a(t),e.onChange&&e.onChange(t)}return r.current=n,w.createElement("table",{style:{width:"100%"}},w.createElement("colgroup",null,w.createElement("col",{width:"97%"}),w.createElement("col",{width:"3%"})),w.createElement("tbody",null,n.map(((e,t)=>w.createElement("tr",{key:`${t}-${n.length}`},w.createElement("td",null,w.createElement($e,{value:e,maxWidth:200})),w.createElement("td",{className:"medplum-right"},w.createElement($,{title:"Remove",size:"sm",onClick:e=>{He(e);const a=n.slice();a.splice(t,1),l(a)}},w.createElement(oe,null)))))),w.createElement("tr",null,w.createElement("td",null),w.createElement("td",{className:"medplum-right"},w.createElement(Je,{onUpload:e=>{l([...r.current,e])}},(e=>w.createElement($,Object.assign({},e,{title:"Add",size:"sm",color:"green"}),w.createElement(ie,{size:16}))))))))}function Xe(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?w.createElement(w.Fragment,null,w.createElement($e,{value:t,maxWidth:200}),w.createElement(_,{onClick:e=>{He(e),a(void 0)}},"Remove")):w.createElement(Je,{onUpload:a},(e=>w.createElement(_,Object.assign({},e),"Upload...")))}function Ze(e){return w.createElement("main",{className:"medplum-document"},w.createElement("article",{style:{maxWidth:e.width}},e.children))}function et(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 tt(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?nt(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&at(t,n);return t}function nt(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function at(e,t){e[t.name]=t.value}function rt(e){return w.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=tt(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function lt(e){return w.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},w.createElement("title",null,"Medplum Logo"),w.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),w.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"}),w.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"}),w.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),w.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,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 ct(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 it(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return ct(null===(n=e.expression)||void 0===n?void 0:n[0],t)}))}function ct(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 ut(e){const t=Ke(),[n,a]=N();return w.createElement(rt,{style:{maxWidth:400},onSubmit:n=>et(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){a(e)}}))},w.createElement("div",{className:"medplum-center"},w.createElement(lt,{size:32}),w.createElement("h1",null,"Create project")),w.createElement(z,{spacing:"xl"},w.createElement(q,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:ot(n,"firstName")}),w.createElement(U,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",w.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",w.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),".")),w.createElement(F,{position:"right",mt:"xl",noWrap:!0},w.createElement(_,{type:"submit"},"Create project")))}function st(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 mt(e){const t=Ke(),{googleClientId:n,handleGoogleCredential:a}=e,r=I(null),[l,o]=N("undefined"!=typeof google),[i,c]=N(!1),[u,s]=N(!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))):st("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,l,r,u,a]),n?w.createElement("div",{ref:r}):null}function dt(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 pt(e){"undefined"==typeof grecaptcha&&st("https://www.google.com/recaptcha/api.js?render="+e)}function vt(e){return new Promise(((t,n)=>{grecaptcha.ready((()=>et(this,void 0,void 0,(function*(){try{t(yield grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))))}))}function ht(e){const t=dt(e.googleClientId),n=e.recaptchaSiteKey,a=Ke(),[r,l]=N(),o=it(r,void 0);return A((()=>pt(n)),[n]),w.createElement(rt,{style:{maxWidth:400},onSubmit:t=>et(this,void 0,void 0,(function*(){try{const r=yield vt(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)}}))},w.createElement("div",{className:"medplum-center"},e.children),o&&w.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return w.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&&w.createElement(w.Fragment,null,w.createElement(F,{position:"center",p:"xl",style:{height:70}},w.createElement(mt,{googleClientId:t,handleGoogleCredential:t=>et(this,void 0,void 0,(function*(){try{e.handleAuthResponse(yield a.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){l(e)}}))})),w.createElement(W,{label:"or",labelPosition:"center",my:"lg"})),w.createElement(z,{spacing:"xl"},w.createElement(q,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:ot(r,"firstName")}),w.createElement(q,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:ot(r,"lastName")}),w.createElement(q,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:ot(r,"email")}),w.createElement(K,{name:"password",label:"Password",autoComplete:"off",required:!0,error:ot(r,"password")}),w.createElement(U,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum ",w.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",w.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),w.createElement(U,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",w.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",w.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply.")),w.createElement(F,{position:"apart",mt:"xl",noWrap:!0},w.createElement(Q,{name:"remember",label:"Remember me",size:"xs"}),w.createElement(_,{type:"submit"},"Create account")))}function gt(e){const{type:t,projectId:n,googleClientId:a,recaptchaSiteKey:r,onSuccess:l}=e,o=Ke(),[i,c]=N(void 0),[u,s]=N();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]),w.createElement(Ze,{width:450},u&&w.createElement("pre",null,JSON.stringify(u,null,2)),!i&&w.createElement(ht,{projectId:n,googleClientId:a,recaptchaSiteKey:r,handleAuthResponse:m},e.children),i&&"project"===t&&w.createElement(ut,{login:i,handleAuthResponse:m}))}function Et(e){const t=Ke(),n=dt(e.googleClientId),[a,r]=N(),l=it(a,void 0);function o(){return et(this,void 0,void 0,(function*(){e.generatePkce&&(yield t.startPkce())}))}return w.createElement(rt,{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)}},w.createElement("div",{className:"medplum-center"},e.children),l&&w.createElement("div",{className:"medplum-input-error"},l.map((e=>{var t,n;return w.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&&w.createElement(w.Fragment,null,w.createElement(F,{position:"center",p:"xl",style:{height:70}},w.createElement(mt,{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)}})),w.createElement(W,{label:"or",labelPosition:"center",my:"lg"})),w.createElement(z,{spacing:"xl"},w.createElement(q,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:ot(a,"email")}),w.createElement(K,{name:"password",type:"password",label:"Password",autoComplete:"off",required:!0,error:ot(a,"password")})),w.createElement(F,{position:"apart",mt:"xl",noWrap:!0},e.onForgotPassword&&w.createElement(H,{component:"button",type:"button",color:"dimmed",onClick:e.onForgotPassword,size:"xs"},"Forgot password"),e.onRegister&&w.createElement(H,{component:"button",type:"button",color:"dimmed",onClick:e.onRegister,size:"xs"},"Register"),w.createElement(Q,{name:"remember",label:"Remember me",size:"xs"}),w.createElement(_,{type:"submit"},"Sign in")))}function ft(e){const t=Ke();return w.createElement(z,null,w.createElement("div",{className:"medplum-center"},w.createElement(lt,{size:32}),w.createElement(U,{size:"lg",weight:500},"Choose profile")),e.memberships.map((n=>{var a,r;return w.createElement(B,{key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},w.createElement(F,null,w.createElement(G,{radius:"xl"}),w.createElement("div",{style:{flex:1}},w.createElement(U,{size:"sm",weight:500},null===(a=n.profile)||void 0===a?void 0:a.display),w.createElement(U,{color:"dimmed",size:"xs"},null===(r=n.project)||void 0===r?void 0:r.display))))})))}function yt(e){const t=Ke(),[n,a]=N(void 0),[r,l]=N(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 w.createElement(Ze,{width:450},n?r?w.createElement(ft,{login:n,memberships:r,handleAuthResponse:o}):"new"===e.projectId?w.createElement(ut,{login:n,handleAuthResponse:o}):w.createElement("div",null,"Success"):w.createElement(Et,{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 bt(e){return w.createElement("div",{className:"medplum-checkbox-form-section"},w.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),w.createElement("div",{className:"medplum-checkbox-form-section-details-container"},w.createElement("label",{htmlFor:e.htmlFor},e.title),w.createElement("p",null,e.description)))}const Ct=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function Tt(e){const t=it(e.outcome,e.htmlFor),n=t&&t.length>0;return w.createElement("fieldset",{className:"medplum-form-section"},e.title&&w.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&w.createElement("p",null,e.description),e.children,n&&w.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return w.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 kt={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function Ot(e){const t=Ke(),[n,a]=N(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?kt: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 jt(e){const t=Ke(),n=Ot(e.defaultValue),[a,r]=N(),[l,o]=N();return A((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(r).catch(console.log))}),[t,n]),a&&l?w.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(l)}},w.createElement(Tt,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},w.createElement(q,{name:"resourceType",defaultValue:l.resourceType,disabled:!0})),w.createElement(Tt,{title:"ID",htmlFor:"id",outcome:e.outcome},w.createElement(q,{name:"id",defaultValue:l.id,disabled:!0})),w.createElement(On,{typeName:l.resourceType,defaultValue:l,outcome:e.outcome,onChange:o}),w.createElement(F,null,w.createElement(_,{type:"submit"},"OK"),e.onDelete&&w.createElement(_,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(l)}},"Delete"))):w.createElement("div",null,"Loading...")}function xt(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 St(e){return w.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function wt(e){return w.createElement(w.Fragment,null,w.createElement("dt",null,e.term),w.createElement("dd",null,e.children))}function Nt(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?w.createElement("div",null,r.name):w.createElement(St,{compact:e.compact},Object.entries(o.properties).map((n=>{const r=n[0];if(Ct.indexOf(r)>=0)return null;const l=n[1],[o,i]=Kt(t,r);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:w.createElement(wt,{key:r,term:a(r)},w.createElement(Wt,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):w.createElement("div",null,l," not implemented")}function It(e){var t,n;return w.createElement(w.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 Vt(e){const t=e.value;return t?t.text?w.createElement(w.Fragment,null,t.text):t.coding?w.createElement(w.Fragment,null,t.coding.map(((e,t)=>w.createElement(w.Fragment,{key:"coding-"+t},t>0&&w.createElement(w.Fragment,null,", "),w.createElement(It,{value:e}))))):null:null}function At(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("]")),w.createElement(w.Fragment,null,n.join("").trim())}function Dt(e){var t;const n=e.value;return n?w.createElement(w.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>w.createElement(At,{key:"telecom-"+t,value:e})))):null}function Rt(e){const t=e.value;return t?w.createElement(w.Fragment,null,r(t,e.options)):null}function Pt(e){var t,n;return w.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 Lt(e){return w.createElement(w.Fragment,null,Ft(e.value))}function Ft(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 Mt(e){return w.createElement(w.Fragment,null,qt(e.value))}function qt(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${Ft(e.low)}`:!e.low&&e.high?`<= ${Ft(e.high)}`:`${Ft(e.low)} - ${Ft(e.high)}`:""}function $t(e){const t=e.value;return t?w.createElement(w.Fragment,null,w.createElement(Lt,{value:t.numerator})," / ",w.createElement(Lt,{value:t.denominator})):null}function _t(e){const t=Pe();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),w.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{He(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}function zt(e){if(!e.value)return null;const t=e.value.display||e.value.reference||l(e.value);return!1!==e.link&&e.value.reference?w.createElement(_t,{to:e.value},t):w.createElement(w.Fragment,null,t)}function Ut(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 w.createElement(w.Fragment,null,l.map(((t,n)=>w.createElement("div",{key:`${n}-${l.length}`},w.createElement(Wt,{arrayElement:!0,property:r,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function Wt(e){var t;const{property:n,propertyType:a,value:r}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?w.createElement(_e,{values:r,maxWidth:e.maxWidth}):w.createElement(Ut,{property:n,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case i.boolean:return w.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 w.createElement("div",null,r);case i.canonical:return w.createElement(zt,{value:{reference:r},link:e.link});case i.dateTime:case i.instant:return w.createElement("div",null,s(r));case i.markdown:return w.createElement("pre",null,r);case i.Address:return w.createElement(Le,{value:r});case i.Annotation:return w.createElement("div",null,null==r?void 0:r.text);case i.Attachment:return w.createElement($e,{value:r,maxWidth:e.maxWidth});case i.CodeableConcept:return w.createElement(Vt,{value:r});case i.Coding:return w.createElement(It,{value:r});case i.ContactDetail:return w.createElement(Dt,{value:r});case i.ContactPoint:return w.createElement(At,{value:r});case i.HumanName:return w.createElement(Rt,{value:r});case i.Identifier:return w.createElement(Pt,{value:r});case i.Period:return w.createElement("div",null,u(r));case i.Quantity:return w.createElement(Lt,{value:r});case i.Range:return w.createElement(Mt,{value:r});case i.Ratio:return w.createElement($t,{value:r});case i.Reference:return w.createElement(zt,{value:r,link:e.link});case i.Timing:return w.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 w.createElement(Nt,{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 Kt(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 Qt(e){const t=Qe(),[n,a]=N(e.defaultValue||{});return I().current=n,w.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 Ht(e){const t=Ke(),n=e.defaultValue,[a,r]=N(n),[l,o]=N(n?Bt(n):""),[i,c]=N(!1),[u,s]=N([]);function m(n){var a,r;return et(this,void 0,void 0,(function*(){c(!0);const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet,o=yield t.searchValueSet(l,n),i=null===(r=o.expansion)||void 0===r?void 0:r.contains;s(i.map((e=>({value:Bt(e),element:e})))),c(!1)}))}return w.createElement(J,{value:l,data:u,placeholder:e.placeholder,onFocus:()=>m(l),onBlur:()=>function(t){if(!a){const n={display:t,code:t};r(n),e.onChange&&e.onChange(n)}}(l),onChange:function(e){return et(this,void 0,void 0,(function*(){return o(e),m(e)}))},onItemSubmit:function(t){r(t.element),o(t.value),s([]),e.onChange&&e.onChange(t.element)},rightSection:i?w.createElement(Y,{size:16}):null})}function Bt(e){return e.display||e.code||""}function Gt(e){const[t,n]=N(e.defaultValue);return w.createElement(Ht,{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={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 Jt(e){const[t,n]=N(e.defaultValue);return w.createElement(Ht,{property:e.property,name:e.name,placeholder:e.placeholder,defaultValue:(a=t,{code:a}),onChange:function(t){const a=t.code;n(a),e.onChange&&e.onChange(a)}});var a}function Yt(e){const[t,n]=N(e.defaultValue);return w.createElement(Ht,{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={system:(r=t).system,code:r.code,display:r.display};var r;n(a),e.onChange&&e.onChange(a)}});var a}function Xt(e){const[t,n]=N(e.defaultValue),a=I();function r(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.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"]}),w.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"]}),w.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 Zt(e){var t;const[n,a]=N(e.defaultValue),r=I();function l(t){a(t),e.onChange&&e.onChange(t)}return r.current=n,w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.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)}),w.createElement(Xt,{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 en(e){return w.createElement(q,{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(nn(n))}}})}function tn(e){if(!e)return"";const t=new Date(e);return p(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function nn(e){if(!e)return"";const t=new Date(e);return p(t)?t.toISOString():""}function an(e){return w.createElement(X,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:l(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function rn(e){var t,n,a;const[r,l]=N(e.defaultValue),o=I();function i(t){l(t),e.onChange&&e.onChange(t)}return o.current=r,w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.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"]}),w.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}}),w.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}}),w.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}}),w.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 ln(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.createElement(q,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e.currentTarget.value}))}),w.createElement(q,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e.currentTarget.value}))}))}function on(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.createElement(en,{name:e.name+".start",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),w.createElement(en,{name:e.name+".end",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function cn(e){var t;const[n,a]=N(e.defaultValue);function r(t){a(t),e.onChange&&e.onChange(t)}return w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.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}))}),w.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:un(e.currentTarget.value)}))}),w.createElement(q,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>r(Object.assign(Object.assign({},n),{unit:e.currentTarget.value}))}))}function un(e){if(e)return parseFloat(e)}function sn(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.createElement(cn,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),w.createElement(cn,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function mn(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.createElement(cn,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),w.createElement(cn,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function dn(e){var t,n,a;const r=Ot(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?w.createElement(_t,{to:r},w.createElement(G,Object.assign({src:o,alt:l,radius:i},c))):w.createElement(G,Object.assign({src:o,alt:l,radius:i},c))}function pn(e){const t=Ke(),n=Ot(e.defaultValue),[a,r]=N(n?v(n):""),[l,o]=N(!1),[i,c]=N([]);function u(n){return et(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 w.createElement(J,{itemComponent:vn,value:a,data:i,placeholder:e.placeholder,onFocus:()=>u(a),onChange:function(e){return et(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?w.createElement(Y,{size:16}):null})}const vn=R(((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 w.createElement("div",Object.assign({ref:t},r),w.createElement(F,{noWrap:!0},w.createElement(dn,{value:a}),w.createElement("div",null,w.createElement(U,null,n),w.createElement(U,{size:"xs",color:"dimmed"},a.birthDate))))}));function hn(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]=N(e.defaultValue),[l,o]=N(n);I().current=a;return I().current=l,w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},t?w.createElement(M,{"data-testid":"reference-input-resource-type-select",defaultValue:l,onChange:e=>o(e.currentTarget.value),data:t}):w.createElement(q,{"data-testid":"reference-input-resource-type-input",defaultValue:l,onChange:e=>o(e.currentTarget.value)}),w.createElement(pn,{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 gn(e){const[t,n]=N(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),a=I();function r(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,w.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},w.createElement("colgroup",null,w.createElement("col",{width:"97%"}),w.createElement("col",{width:"3%"})),w.createElement("tbody",null,t.map(((n,l)=>w.createElement("tr",{key:`${l}-${t.length}`},w.createElement("td",null,w.createElement(bn,{arrayElement:!0,property:e.property,name:e.name+"."+l,defaultValue:n,onChange:e=>{const t=[...a.current];t[l]=e,r(t)}})),w.createElement("td",{style:{textAlign:"right"}},w.createElement($,{title:"Remove",size:"sm",onClick:e=>{He(e);const t=[...a.current];t.splice(l,1),r(t)}},w.createElement(oe,null)))))),w.createElement("tr",null,w.createElement("td",null),w.createElement("td",{style:{textAlign:"right"}},w.createElement($,{title:"Add",size:"sm",color:"green",onClick:e=>{He(e);const t=[...a.current];t.push(void 0),r(t)}},w.createElement(ce,null))))))}const En=["sun","mon","tue","wed","thu","fri","sat"];function fn(e){const[t,n]=N(e.defaultValue||{}),[a,r]=N(!1),l=I();return l.current=t,w.createElement(w.Fragment,null,w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.createElement("span",null,c(l.current)||"No repeat"),w.createElement(_,{onClick:()=>r(!0)},"Edit")),w.createElement(yn,{visible:a,defaultValue:l.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),r(!1)},onCancel:()=>r(!1)}))}function yn(e){var t,n;const[a,r]=N(e.defaultValue||{}),l=I();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,w.createElement(Z,{title:"Timing",closeButtonLabel:"Close",opened:e.visible,onClose:()=>e.onCancel()},w.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},w.createElement(Tt,{title:"Starts on",htmlFor:"timing-dialog-start"},w.createElement(en,{name:"timing-dialog-start",onChange:e=>{return t=e,void r(Object.assign(Object.assign({},l.current),{event:[t]}));var t}})),w.createElement(Tt,{title:"Repeat every",htmlFor:"timing-dialog-period"},w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.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))}),w.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"}]}))),w.createElement(Tt,{title:"Repeat on"},w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},En.map((e=>w.createElement(w.Fragment,{key:e},w.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),w.createElement(Q,{id:"timing-dialog-repeat-"+e,name:"timing-dialog-repeat-"+e,onChange:t=>i(e,t.currentTarget.checked)}))))))),w.createElement(_,{onClick:()=>e.onOk(a)},"OK"))}function bn(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?w.createElement(Ye,{name:o,defaultValue:i,onChange:e.onChange}):w.createElement(gn,{property:r,name:o,defaultValue:i,onChange:e.onChange});const c=r.type;return c.length>1?w.createElement(Cn,Object.assign({elementDefinitionTypes:c},e)):w.createElement(Tn,Object.assign({elementDefinitionType:c[0]},e))}function Cn(e){const n=e.elementDefinitionTypes;let a;e.defaultPropertyType&&(a=n.find((t=>t.code===e.defaultPropertyType))),a||(a=n[0]);const[r,l]=N(a);return w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.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})))}),w.createElement(Tn,Object.assign({},e,{elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t(r.code)))}})))}function Tn(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 w.createElement(q,{id:r,name:r,"data-testid":r,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:ot(e.outcome,r)});case i.date:return w.createElement(q,{type:"date",id:r,name:r,"data-testid":r,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:ot(e.outcome,r)});case i.dateTime:case i.instant:return w.createElement(en,{name:r,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.decimal:case i.integer:case i.positiveInt:case i.unsignedInt:return w.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 w.createElement(Jt,{property:n,name:r,defaultValue:l,onChange:e.onChange});case i.boolean:return w.createElement(Q,{id:r,name:r,"data-testid":r,defaultChecked:!!l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}});case i.markdown:return w.createElement(ee,{id:r,name:r,"data-testid":r,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}});case i.Address:return w.createElement(qe,{name:r,defaultValue:l,onChange:e.onChange});case i.Annotation:return w.createElement(Qt,{name:r,defaultValue:l,onChange:e.onChange});case i.Attachment:return w.createElement(Xe,{name:r,defaultValue:l,onChange:e.onChange});case i.CodeableConcept:return w.createElement(Gt,{property:n,name:r,defaultValue:l,onChange:e.onChange});case i.Coding:return w.createElement(Yt,{property:n,name:r,defaultValue:l,onChange:e.onChange});case i.ContactDetail:return w.createElement(Zt,{name:r,defaultValue:l,onChange:e.onChange});case i.ContactPoint:return w.createElement(Xt,{name:r,defaultValue:l,onChange:e.onChange});case i.Extension:return w.createElement(an,{name:r,defaultValue:l,onChange:e.onChange});case i.HumanName:return w.createElement(rn,{name:r,defaultValue:l,onChange:e.onChange});case i.Identifier:return w.createElement(ln,{name:r,defaultValue:l,onChange:e.onChange});case i.Period:return w.createElement(on,{name:r,defaultValue:l,onChange:e.onChange});case i.Quantity:return w.createElement(cn,{name:r,defaultValue:l,onChange:e.onChange});case i.Range:return w.createElement(sn,{name:r,defaultValue:l,onChange:e.onChange});case i.Ratio:return w.createElement(mn,{name:r,defaultValue:l,onChange:e.onChange});case i.Reference:return w.createElement(hn,{name:r,defaultValue:l,targetTypes:kn(n),onChange:e.onChange});case i.Timing:return w.createElement(fn,{name:r,defaultValue:l,onChange:e.onChange});default:return w.createElement(On,{typeName:o(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:l,onChange:e.onChange,outcome:e.outcome})}}function kn(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 On(e){var t;const[r,l]=N(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 w.createElement("div",null,i," not implemented");const u={type:i,value:r};return w.createElement(w.Fragment,null,Object.entries(c.properties).map((t=>{const n=t[0];if("id"===n||Ct.indexOf(n)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=Kt(u,n);return 1===l.type.length&&"boolean"===l.type[0].code?w.createElement(bt,{key:n,title:a(n),description:l.definition,htmlFor:n},w.createElement(bn,{property:l,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,a)=>{o(xt(r,n,null!=a?a:n,t[1],e))}})):w.createElement(Tt,{key:n,title:a(n),description:l.definition,htmlFor:n,outcome:e.outcome},w.createElement(bn,{property:l,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,a)=>{o(xt(r,n,null!=a?a:n,t[1],e))}}))})))}function jn(e){const t=Ot(e.value);if(!t)return null;const n=v(t);return e.link?w.createElement(_t,{to:t},n):w.createElement("span",null,n)}function xn(e){return w.createElement("div",{className:"medplum-resource-badge"},w.createElement(dn,{size:24,radius:12,value:e.value,link:e.link}),w.createElement(jn,{value:e.value,link:e.link}))}function Sn(e){var n,a;const r=Ot(e.value),l=Ot(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 w.createElement("div",{className:"medplum-diagnostic-report"},w.createElement("h1",null,"Diagnostic Report"),w.createElement("div",{className:"medplum-diagnostic-report-header"},r.subject&&w.createElement("dl",null,w.createElement("dt",null,"Subject"),w.createElement("dd",null,w.createElement(xn,{value:r.subject,link:!0}))),r.resultsInterpreter&&r.resultsInterpreter.map((e=>w.createElement("dl",{key:e.reference},w.createElement("dt",null,"Interpreter"),w.createElement("dd",null,w.createElement(xn,{value:e,link:!0}))))),r.issued&&w.createElement("dl",null,w.createElement("dt",null,"Issued"),w.createElement("dd",null,s(r.issued))),r.status&&w.createElement("dl",null,w.createElement("dt",null,"Status"),w.createElement("dd",null,t(r.status)))),r.result&&w.createElement(wn,{value:r.result}),o&&w.createElement("pre",null,o.trim()))}function wn(e){var t;return w.createElement("table",{className:"medplum-table"},w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",null,"Test"),w.createElement("th",null,"Value"),w.createElement("th",null,"Reference Range"),w.createElement("th",null,"Interpretation"))),w.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>w.createElement(Nn,{key:"obs-"+t,value:e})))))}function Nn(e){const t=Ot(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}(t)&&(n="medplum-critical"),w.createElement("tr",{className:n},w.createElement("td",null,w.createElement(_t,{to:t},w.createElement(Vt,{value:t.code}))),w.createElement("td",null,w.createElement(In,{value:t})),w.createElement("td",null,w.createElement(Vn,{value:t.referenceRange})),w.createElement("td",null,t.interpretation&&t.interpretation.length>0&&w.createElement(Vt,{value:t.interpretation[0]})))}function In(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?w.createElement(Lt,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?w.createElement(w.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?w.createElement(w.Fragment,null,n.component.map(((e,t)=>w.createElement(In,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function Vn(e){const t=e.value&&e.value.length>0&&e.value[0];return t?w.createElement(Mt,{value:t}):null}function An(e){const t=Ke(),[n,r]=N();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?w.createElement("table",{className:"medplum-diff-table"},w.createElement("colgroup",null,w.createElement("col",{style:{width:"30%"}}),w.createElement("col",{style:{width:"35%"}}),w.createElement("col",{style:{width:"35%"}})),w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",null,"Property"),w.createElement("th",null,"Before"),w.createElement("th",null,"After"))),w.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]=Kt(g(e.original),n),[c,u]=Kt(g(e.revised),n);return Dn(o)&&Dn(c)||l(o)===l(c)?null:w.createElement("tr",{key:n},w.createElement("td",null,a(n)),w.createElement("td",{className:"medplum-diff-removed"},w.createElement(Wt,{property:r,propertyType:i,value:o,ignoreMissingValues:!0})),w.createElement("td",{className:"medplum-diff-added"},w.createElement(Wt,{property:r,propertyType:u,value:c,ignoreMissingValues:!0})))})))):null}function Dn(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function Rn(e){const t=Ke(),n=Ot(e.value),[a,r]=N();return A((()=>{n&&t.requestSchema(n.resourceType).then(r).catch(console.log)}),[t,n]),a&&n?w.createElement(Nt,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function Pn(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return w.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},w.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class Ln extends w.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?w.createElement("h1",null,"Something went wrong."):this.props.children}}function Fn(e){return w.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function Mn(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 w.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},w.createElement("div",{className:"medplum-timeline-item-header"},w.createElement("div",{className:"medplum-timeline-item-avatar"},w.createElement(dn,{value:r,link:!0,size:"md"})),w.createElement("div",{className:"medplum-timeline-item-title"},w.createElement(jn,{value:r,link:!0}),w.createElement("div",{className:"medplum-timeline-item-subtitle"},w.createElement(_t,{to:e.resource},s(null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated)),w.createElement("span",null,"·"),w.createElement(_t,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&w.createElement(te,{position:"bottom-end",shadow:"md",width:200},w.createElement(te.Target,null,w.createElement($,{radius:"xl","aria-label":`Actions for ${E(e.resource)}`},w.createElement(ue,null))),e.popupMenuItems)),w.createElement(Ln,null,e.padding&&w.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&w.createElement(w.Fragment,null,e.children)),e.socialEnabled&&w.createElement("div",{className:"medplum-timeline-item-footer"},w.createElement(_,{variant:"subtle"},"Like"),w.createElement(_,{variant:"subtle"},"Comment")))}function qn(e){e.sort($n)}function $n(e,t){const n=_n(e),a=_n(t);return n>a?1:n<a?-1:zn(e)-zn(t)}function _n(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function zn(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 Un(e){const t=Pe(),n=Ke(),a=n.getProfile(),r=I(null),l=Ot(e.value),[o,i]=N(),[c,u]=N([]),s=e.buildSearchRequests,m=I(c);m.current=c;const d=P((()=>{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)}qn(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];qn(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?w.createElement(Fn,null,e.createCommunication&&w.createElement("article",{className:"medplum-timeline-item"},w.createElement("div",{className:"medplum-timeline-item-header"},w.createElement(rt,{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())}},w.createElement(F,{noWrap:!0},w.createElement(dn,{value:a}),w.createElement(q,{name:"text","data-testid":"timeline-input",ref:r,size:"md",radius:"xl",rightSectionWidth:40,rightSection:w.createElement(Je,{onUpload:function(t){l&&e.createMedia&&n.createResource(e.createMedia(l,a,t)).then((e=>{v([e])})).catch(console.log)}},(e=>w.createElement($,Object.assign({},e,{size:24,radius:"xl",color:"blue",variant:"filled"}),w.createElement(ie,{size:16})))),placeholder:"Add comment"}))))),c.map((e=>{var t;if(e.resourceType===l.resourceType&&e.id===l.id)return w.createElement(Kn,{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 w.createElement(Bn,{key:n,resource:e,onDetails:f});case"Communication":return w.createElement(Qn,{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 w.createElement(Gn,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});case"Media":return w.createElement(Hn,{key:n,resource:e,onDetails:f,onEdit:y,onDelete:b});default:return w.createElement(Mn,{key:n,resource:e,padding:!0},w.createElement(Rn,{value:e,ignoreMissingValues:!0}))}}))):w.createElement(Y,null)}function Wn(e){return w.createElement(te.Dropdown,null,w.createElement(te.Label,null,"Resource"),e.onPin&&w.createElement(te.Item,{icon:w.createElement(se,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${E(e.resource)}`},"Pin"),e.onUnpin&&w.createElement(te.Item,{icon:w.createElement(me,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${E(e.resource)}`},"Unpin"),e.onDetails&&w.createElement(te.Item,{icon:w.createElement(de,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${E(e.resource)}`},"Details"),e.onEdit&&w.createElement(te.Item,{icon:w.createElement(pe,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${E(e.resource)}`},"Edit"),e.onDelete&&w.createElement(w.Fragment,null,w.createElement(te.Divider,null),w.createElement(te.Label,null,"Danger zone"),w.createElement(te.Item,{color:"red",icon:w.createElement(ve,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${E(e.resource)}`},"Delete")))}function Kn(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?w.createElement(Mn,{resource:e.resource,padding:!0,popupMenuItems:w.createElement(Wn,Object.assign({},e))},w.createElement(An,{original:t,revised:e.resource})):w.createElement(Mn,{resource:e.resource,padding:!0,popupMenuItems:w.createElement(Wn,Object.assign({},e))},w.createElement("h3",null,"Created"),w.createElement(Rn,{value:e.resource,ignoreMissingValues:!0}))}function Qn(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return w.createElement(Mn,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:w.createElement(Wn,Object.assign({},e))},w.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 Hn(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 w.createElement(Mn,{resource:e.resource,padding:!!a,popupMenuItems:w.createElement(Wn,Object.assign({},e))},w.createElement($e,{value:e.resource.content}))}function Bn(e){return w.createElement(Mn,{resource:e.resource,padding:!0,popupMenuItems:w.createElement(Wn,Object.assign({},e))},w.createElement(Pn,null,w.createElement("pre",null,e.resource.outcomeDesc)))}function Gn(e){return w.createElement(Mn,{resource:e.resource,padding:!0,popupMenuItems:w.createElement(Wn,Object.assign({},e))},w.createElement(Sn,{value:e.resource}))}function Jn(e){return w.createElement(Un,{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 Yn(e){return w.createElement(Un,{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 Xn(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 w.createElement(Wt,{value:t[0]||"",propertyType:e.propertyType})}function Zn(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 ea={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]},ta={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 na(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function aa(e){return na(e,[])}function ra(e,t){return na(e,(e.filters||[]).filter((e=>e.code!==t)))}function la(e,t,n,a,r){r&&(e=ra(e,t));const l=[];return e.filters&&l.push(...e.filters),l.push({code:t,operator:n,value:a||""}),na(e,l)}function oa(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 ia(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 ca(e,t){return ma(e,t,-1)}function ua(e,t){return ma(e,t,0)}function sa(e,t){return ma(e,t,1)}function ma(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),ya(e,t,a,r)}function da(e,t){return ha(e,t,-1)}function pa(e,t){return ha(e,t,0)}function va(e,t){return ha(e,t,1)}function ha(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),ya(e,t,a,r)}function ga(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return ya(e,t,n,new Date)}function Ea(e,t,n){return ya(e,t,n,n)}function fa(e,t,n,a){return ba(e=ra(e,t),t,n,a)}function ya(e,t,n,a){return e=ba(e=ra(e,t),t,b.GREATER_THAN_OR_EQUALS,n),e=ba(e,t,b.LESS_THAN_OR_EQUALS,a)}function ba(e,t,n,a){return la(e,t,n,a.toISOString())}function Ca(e,t,n=!0){return la(e,t,b.MISSING,n.toString())}function Ta(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function ka(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Oa(e,t){var n;return ka(e,(t-1)*(null!==(n=e.count)&&void 0!==n?n:C))}function ja(e,t,n){return t===Sa(e)&&void 0!==n&&n===wa(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function xa(e,t){let n=!1;return Sa(e)===t&&(n=!wa(e)),ja(e,t,n)}function Sa(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function wa(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Na(e){return ea[e.type]}function Ia(e){var t;return null!==(t=ta[e])&&void 0!==t?t:""}function Va(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 Aa(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]=Kt({type:e.resourceType,value:e},l);if(!o)return null;return w.createElement(Wt,{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 w.createElement(Wt,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return w.createElement(w.Fragment,null,a.map(((e,t)=>w.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Da(e){var t;const[a,r]=N({search:JSON.parse(l(e.search))}),o=I(null),i=I(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(Va(r));if(e.searchParams)for(const r of Object.keys(e.searchParams)){const e=Va(r);n.has(r)||a.has(e)||(t.push(r),n.add(r),a.add(Va(r)))}return t}(d).filter((e=>!(null==p?void 0:p.includes(e)))).sort();return w.createElement(Z,{title:"Fields",closeButtonLabel:"Close",opened:e.visible,onClose:e.onCancel},w.createElement("div",null,w.createElement("table",{style:{margin:"auto"}},w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",{colSpan:2,align:"center"},"Available"),w.createElement("th",{colSpan:2,align:"center"},"Selected"))),w.createElement("tbody",null,w.createElement("tr",null,w.createElement("td",{colSpan:2,align:"center"},w.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=>w.createElement("option",{key:e,value:e},Va(e)))))),w.createElement("td",{colSpan:2,align:"center"},w.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=>w.createElement("option",{key:e,value:e},Va(e)))))))),w.createElement("tfoot",null,w.createElement("tr",null,w.createElement("td",{align:"center"},w.createElement(_,{compact:!0,variant:"outline",onClick:c},"Add")),w.createElement("td",{align:"center"},w.createElement(_,{compact:!0,variant:"outline",onClick:u},"Remove")),w.createElement("td",{align:"center"},w.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")),w.createElement("td",{align:"center"},w.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")))))),w.createElement(_,{onClick:()=>e.onOk(a.search)},"OK"))}function Ra(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 w.createElement(jn,{value:{reference:l.value}});const e=y(r,o);if("_lastUpdated"===l.code||e.type===k.DATETIME)return w.createElement(w.Fragment,null,s(l.value))}return w.createElement(w.Fragment,null,l.value)}function Pa(e){var t;const n="filter-value";switch(y(e.resourceType,e.searchParam).type){case k.REFERENCE:return w.createElement(hn,{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 w.createElement(Q,{name:n,"data-testid":n,defaultChecked:"true"===e.defaultValue,onChange:t=>e.onChange(t.currentTarget.checked.toString())});case k.DATE:return w.createElement(q,{type:"date",name:n,"data-testid":n,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case k.DATETIME:return w.createElement(en,{name:n,defaultValue:e.defaultValue,onChange:e.onChange});case k.NUMBER:return w.createElement(q,{type:"number",name:n,"data-testid":n,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case k.QUANTITY:return w.createElement(cn,{name:n,defaultValue:La(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return w.createElement(q,{name:n,"data-testid":n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:t=>e.onChange(t.currentTarget.value),placeholder:"Search value"})}}function La(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Fa(e){const[t,a]=N(JSON.parse(l(e.search))),[r,o]=N(-1),i=I(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 w.createElement(Z,{title:"Filters",closeButtonLabel:"Close",size:900,opened:e.visible,onClose:e.onCancel},w.createElement("div",{className:"medplum-filter-editor"},w.createElement("table",{className:"medplum-filter-editor-table"},w.createElement("colgroup",null,w.createElement("col",{style:{width:200}}),w.createElement("col",{style:{width:200}}),w.createElement("col",{style:{width:380}}),w.createElement("col",{style:{width:120}})),w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",null,"Field"),w.createElement("th",null,"Operation"),w.createElement("th",null,"Value"),w.createElement("th",null,"Actions"))),w.createElement("tbody",null,s.map(((e,t)=>t===r?w.createElement(qa,{key:`filter-${t}-${s.length}-input`,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const n=[...s];n[t]=e,a(na(i.current,n)),o(-1)},onCancel:()=>o(-1)}):w.createElement(Ma,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>o(t),onDelete:()=>a(ia(i.current,t))}))),w.createElement(qa,{resourceType:c,searchParams:u,okText:"Add",onOk:function(e){a(la(i.current,e.code,e.operator,e.value))}})))),w.createElement(_,{onClick:()=>e.onOk(i.current)},"OK"))}function Ma(e){const{filter:t}=e;return w.createElement("tr",null,w.createElement("td",null,Va(t.code)),w.createElement("td",null,Ia(t.operator)),w.createElement("td",null,w.createElement(Ra,{resourceType:e.resourceType,filter:t})),w.createElement("td",null,w.createElement(_,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),w.createElement(_,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function qa(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:{}),r=I(n);r.current=n;const l=e.searchParams[n.code],o=l&&Na(l);return w.createElement("tr",null,w.createElement("td",null,w.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:Va(e)})))})),w.createElement("td",null,o&&w.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:Ia(e)})))})),w.createElement("td",null,l&&n.operator&&w.createElement(Pa,{resourceType:e.resourceType,searchParam:l,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},r.current),{value:e}))}})),w.createElement("td",null,n.code&&n.operator&&n.value&&w.createElement(_,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),a({})}},e.okText),e.onCancel&&w.createElement(_,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}function $a(e){var t;const[n,a]=N(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 w.createElement(Z,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},w.createElement("div",{style:{width:500}},w.createElement(rt,{onSubmit:r},w.createElement(Pa,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))),w.createElement(_,{onClick:r},"OK"))}function _a(e){if(!e.searchParams)return null;function t(t){e.onChange(t)}return 1===e.searchParams.length?w.createElement(za,{search:e.search,searchParam:e.searchParams[0],onSort:function(n,a){t(ja(e.search,n.code,a))},onPrompt:function(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})},onChange:t,onClear:function(n){t(ra(e.search,n.code))}}):w.createElement(te.Dropdown,null,e.searchParams.map((e=>w.createElement(te.Item,{key:e.code},Va(e.code)))))}function za(e){switch(e.searchParam.type){case"date":return w.createElement(Ua,Object.assign({},e));case"number":case"quantity":return w.createElement(Wa,Object.assign({},e));case"reference":return w.createElement(Ka,Object.assign({},e));case"string":case"token":case"uri":return w.createElement(Qa,Object.assign({},e));default:return w.createElement(w.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Ua(e){const{searchParam:t}=e,n=t.code;return w.createElement(te.Dropdown,null,w.createElement(te.Item,{icon:w.createElement(he,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),w.createElement(te.Item,{icon:w.createElement(ge,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(Ee,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),w.createElement(te.Item,{icon:w.createElement(fe,{size:14}),onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(ye,{size:14}),onClick:()=>e.onPrompt(t,b.ENDS_BEFORE)},"Before..."),w.createElement(te.Item,{icon:w.createElement(be,{size:14}),onClick:()=>e.onPrompt(t,b.STARTS_AFTER)},"After..."),w.createElement(te.Item,{icon:w.createElement(Ce,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Between..."),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(Te,{size:14}),onClick:()=>e.onChange(sa(e.search,n))},"Tomorrow"),w.createElement(te.Item,{icon:w.createElement(Te,{size:14}),onClick:()=>e.onChange(ua(e.search,n))},"Today"),w.createElement(te.Item,{icon:w.createElement(Te,{size:14}),onClick:()=>e.onChange(ca(e.search,n))},"Yesterday"),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(Te,{size:14}),onClick:()=>e.onChange(va(e.search,n))},"Next Month"),w.createElement(te.Item,{icon:w.createElement(Te,{size:14}),onClick:()=>e.onChange(pa(e.search,n))},"This Month"),w.createElement(te.Item,{icon:w.createElement(Te,{size:14}),onClick:()=>e.onChange(da(e.search,n))},"Last Month"),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(Te,{size:14}),onClick:()=>e.onChange(ga(e.search,n))},"Year to date"),w.createElement(Ha,Object.assign({},e)))}function Wa(e){const{searchParam:t}=e;return w.createElement(te.Dropdown,null,w.createElement(te.Item,{icon:w.createElement(he,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),w.createElement(te.Item,{icon:w.createElement(ge,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(Ee,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),w.createElement(te.Item,{icon:w.createElement(fe,{size:14}),onClick:()=>e.onPrompt(t,b.NOT_EQUALS)},"Does not equal..."),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(be,{size:14}),onClick:()=>e.onPrompt(t,b.GREATER_THAN)},"Greater than..."),w.createElement(te.Item,{icon:w.createElement(ke,{size:14}),onClick:()=>e.onPrompt(t,b.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),w.createElement(te.Item,{icon:w.createElement(ye,{size:14}),onClick:()=>e.onPrompt(t,b.LESS_THAN)},"Less than..."),w.createElement(te.Item,{icon:w.createElement(ke,{size:14}),onClick:()=>e.onPrompt(t,b.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),w.createElement(Ha,Object.assign({},e)))}function Ka(e){const{searchParam:t}=e;return w.createElement(te.Dropdown,null,w.createElement(te.Item,{icon:w.createElement(Ee,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),w.createElement(te.Item,{icon:w.createElement(fe,{size:14}),onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),w.createElement(Ha,Object.assign({},e)))}function Qa(e){const{searchParam:t}=e;return w.createElement(te.Dropdown,null,w.createElement(te.Item,{icon:w.createElement(he,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort A to Z"),w.createElement(te.Item,{icon:w.createElement(ge,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Z to A"),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(Ee,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Equals..."),w.createElement(te.Item,{icon:w.createElement(fe,{size:14}),onClick:()=>e.onPrompt(t,b.NOT)},"Does not equal..."),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(Oe,{size:14}),onClick:()=>e.onPrompt(t,b.CONTAINS)},"Contains..."),w.createElement(te.Item,{icon:w.createElement(je,{size:14}),onClick:()=>e.onPrompt(t,b.EQUALS)},"Does not contain..."),w.createElement(Ha,Object.assign({},e)))}function Ha(e){const{searchParam:t}=e,n=t.code;return w.createElement(w.Fragment,null,w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(xe,{size:14}),onClick:()=>e.onChange(Ca(e.search,n))},"Missing"),w.createElement(te.Item,{icon:w.createElement(Se,{size:14}),onClick:()=>e.onChange(Ca(e.search,n,!1))},"Not missing"),w.createElement(te.Divider,null),w.createElement(te.Item,{icon:w.createElement(we,{size:14}),onClick:()=>e.onClear(t)},"Clear filters"))}class Ba extends Event{constructor(e){super("change"),this.definition=e}}class Ga extends Event{constructor(e){super("load"),this.response=e}}class Ja extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}const Ya=ne((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 Xa(e){var t,a;const{classes:r}=Ya(),l=Ke(),[o,i]=N(!1),[c,u]=N(),{search:s,onLoad:m}=e,[d,p]=N({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=I(d);function h(t){e.onChange&&e.onChange(new Ba(t))}function g(t,n){Be(t.target)||2!==t.button&&(He(t),1!==t.button&&e.onClick&&e.onClick(new Ja(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Ja(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 Ga(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 w.createElement(Y,null);const E=e.checkboxesEnabled,f=function(e){const t=e.resourceType,n=[];for(const a of e.fields||["id","_lastUpdated"])n.push(Zn(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",x="gray",S=16,V=window.innerWidth<768;return w.createElement("div",{className:"medplum-search-control","data-testid":"search-control"},!e.hideToolbar&&w.createElement(F,{position:"apart",mb:"xl"},w.createElement(F,{spacing:2},w.createElement(_,{compact:!0,variant:j,color:x,leftIcon:w.createElement(Ne,{size:S}),onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),w.createElement(_,{compact:!0,variant:j,color:x,leftIcon:w.createElement(Ie,{size:S}),onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&w.createElement(_,{compact:!0,variant:j,color:x,leftIcon:w.createElement(Ve,{size:S}),onClick:e.onNew},"New..."),!V&&e.onExport&&w.createElement(_,{compact:!0,variant:j,color:x,leftIcon:w.createElement(Ae,{size:S}),onClick:e.onExport},"Export..."),!V&&e.onDelete&&w.createElement(_,{compact:!0,variant:j,color:x,leftIcon:w.createElement(ve,{size:S}),onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),!V&&e.onBulk&&w.createElement(_,{compact:!0,variant:j,color:x,leftIcon:w.createElement(De,{size:S}),onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),b&&w.createElement(F,{spacing:2},w.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()))),w.createElement(ae,null,w.createElement("thead",null,w.createElement("tr",null,E&&w.createElement("th",{className:"medplum-search-icon-cell"},w.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=>w.createElement("th",{key:t.name},w.createElement(te,{shadow:"md",width:240,position:"bottom-end"},w.createElement(te.Target,null,w.createElement(B,{className:r.control},w.createElement(F,{position:"apart",noWrap:!0},w.createElement(U,{weight:500,size:"sm"},Va(t.name)),w.createElement(re,{className:r.icon},w.createElement(Re,{size:14,stroke:1.5}))))),w.createElement(_a,{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&&w.createElement("tr",null,E&&w.createElement("th",{className:"filters medplum-search-icon-cell"}),f.map((t=>w.createElement("th",{key:t.name,className:"filters"},t.searchParams&&w.createElement(er,{resourceType:y,searchParams:t.searchParams,filters:e.search.filters})))))),w.createElement("tbody",null,null==k?void 0:k.map((e=>e&&w.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>g(t,e),onAuxClick:t=>g(t,e)},E&&w.createElement("td",{className:"medplum-search-icon-cell"},w.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=>w.createElement("td",{key:t.name},Aa(e,t))))))))),0===(null==k?void 0:k.length)&&w.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),void 0!==(null==b?void 0:b.total)&&b.total>0&&w.createElement(re,{m:"md",p:"md"},w.createElement(le,{page:tr(s),total:nr(s,b.total),onChange:e=>h(Oa(s,e)),getItemAriaLabel:e=>{switch(e){case"prev":return"Previous page";case"next":return"Next page";default:return}}})),c&&w.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},w.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),w.createElement(Da,{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}))}}),w.createElement(Fa,{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}))}}),w.createElement($a,{visible:v.current.filterDialogVisible,title:"Input",resourceType:y,searchParam:d.filterDialogSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(la(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 Za=w.memo(Xa);function er(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?w.createElement("span",null,"no filters"):w.createElement(w.Fragment,null,n.map(((t,a)=>w.createElement("div",{key:`filter-${a}-${n.length}`},Ia(t.operator)," ",w.createElement(Ra,{resourceType:e.resourceType,filter:t})))))}function tr(e){return Math.floor((e.offset||0)/(e.count||C))+1}function nr(e,t){const n=e.count||C;return Math.ceil(t/n)}function ar(e){var t,n,a,r,l;const o=Ke(),[i,c]=N(),[u,s]=N(),{query:m,fields:d}=e,[p,v]=N(),[h,g]=N({}),E=I();E.current=p;const f=I({});function y(t,n){Be(t.target)||(He(t),1!==t.button&&e.onClick&&e.onClick(new Ja(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Ja(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 w.createElement(Y,null);const b=e.checkboxesEnabled;return w.createElement("div",{className:"medplum-search-control",onContextMenu:e=>He(e),"data-testid":"search-control"},w.createElement(ae,null,w.createElement("thead",null,w.createElement("tr",null,b&&w.createElement("th",{className:"medplum-search-icon-cell"},w.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=>w.createElement("th",{key:e.name},e.name))))),w.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&&w.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&w.createElement("td",{className:"medplum-search-icon-cell"},w.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=>w.createElement("td",{key:t.name},w.createElement(Xn,{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)&&w.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&w.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},w.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&w.createElement(_,{onClick:()=>e.onBulk(Object.keys(f.current))},"Bulk..."))}const rr=w.memo(ar);function lr(e){return w.createElement("div",{className:"medplum-footer"},e.children)}const or=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function ir(e){return w.createElement(Un,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:or.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 cr(e){const t=Ke(),n=Ot(e.value),[a,r]=N(void 0),[l,o]=N(),[i,c]=N(),[u,s]=N();function m(){c(void 0)}function d(){o(void 0)}const p=I();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:yr(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 w.createElement("div",{className:"medplum-questionnaire-builder"},w.createElement(rt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},w.createElement(q,{label:"Plan Title",defaultValue:u.title,onChange:e=>v("title",e.currentTarget.value)}),w.createElement(ur,{actions:u.action||[],selectedKey:l,setSelectedKey:o,hoverKey:i,setHoverKey:c,onChange:e=>v("action",e)}),w.createElement(_,{type:"submit"},"Save")))}function ur(e){const t=I();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,w.createElement("div",{className:"section"},e.actions.map((a=>w.createElement("div",{key:a.id},w.createElement(sr,{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}})))),w.createElement("div",{className:"bottom-actions"},w.createElement("a",{href:"#",onClick:n=>{var a;He(n),a={id:fr()},e.onChange([...t.current,a]),e.setSelectedKey(a.id)}},"Add action")))}function sr(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 w.createElement("div",{"data-testid":t.id,className:l,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){He(t),e.setHoverKey(e.action.id)}},a?w.createElement(pr,{action:t,actionType:n,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):w.createElement(dr,{action:t,actionType:n}),w.createElement("div",{className:"bottom-actions"},w.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const mr={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function dr(e){const{action:t,actionType:n}=e,[a,r]=gr(t);return w.createElement("div",null,w.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&w.createElement("div",null,w.createElement(zt,{value:{reference:t.definitionCanonical}})),a&&w.createElement("div",null,w.createElement(Wt,{property:mr,propertyType:r,value:a})))}function pr(e){const{action:t}=e,[n,a]=N(e.actionType);function r(n,a){e.onChange(Object.assign(Object.assign({},t),{[n]:a}))}return w.createElement(w.Fragment,null,w.createElement(q,{name:`actionTitle-${t.id}`,label:"Title",defaultValue:t.title,onChange:e=>r("title",e.currentTarget.value)}),w.createElement(q,{name:`actionDescription-${t.id}`,label:"Description",defaultValue:t.description,onChange:e=>r("description",e.currentTarget.value)}),w.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&&w.createElement(ur,{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 w.createElement(vr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return w.createElement(vr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return w.createElement(vr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return w.createElement(vr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),w.createElement("p",null,"Timing"),w.createElement("p",null,"When the action should take place."),w.createElement(hr,{name:"timing-"+t.id,action:t,onChange:e.onChange}))}function vr(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith(e.resourceType+"/"))?{reference:n}:void 0;return w.createElement(pn,{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 hr(e){const t=e.action,n="timing",[a,r]=gr(t);return w.createElement(bn,{property:mr,name:"timing[x]",defaultValue:a,defaultPropertyType:r,onChange:(a,r)=>{e.onChange(xt(t,n,null!=r?r:n,mr,a))}})}function gr(e){return Kt({type:"PlanDefinitionAction",value:e},"timing")}let Er=1;function fr(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Er=Math.max(Er,t+1))}return e}return"id-"+Er++}function yr(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:fr(e.id),action:yr(e.action)})))}var br;function Cr(e){return"choice"===e.type||"open-choice"===e.type}function Tr(e){const t=Ke(),n=t.getProfile(),[a,r]=N(),l=Ot(e.questionnaire),[o,i]=N(),[c,u]=N({});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:wr(e.item)}}(l):void 0)}),[l]),a&&l?w.createElement(rt,{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&&w.createElement("h1",null,l.title),l.item&&w.createElement(kr,{items:l.item,answers:c,onChange:function(e){const t={resourceType:"QuestionnaireResponse",item:e};i(t),u(x(t))}}),w.createElement(_,{type:"submit"},e.submitButtonText||"OK")):null}function kr(e){const[t,n]=N(wr(e.items));function a(a,r){const l=t.slice();l[a]=r,n(l),e.onChange(l)}return w.createElement(w.Fragment,null,e.items.map(((t,n)=>{if(!Vr(t,e.answers))return null;if(t.type===br.display)return w.createElement("p",{key:t.linkId},t.text);if(t.type===br.group)return w.createElement(Or,{key:t.linkId,item:t,answers:e.answers,onChange:e=>a(n,e)});if(t.type===br.boolean){const e=t.initial&&t.initial.length>0?t.initial[0]:void 0;return w.createElement(bt,{key:t.linkId,title:t.text,htmlFor:t.linkId},w.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 w.createElement(Tt,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},w.createElement(Or,{item:t,answers:e.answers,onChange:e=>a(n,e)}))})))}function Or(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 br.group:return w.createElement("div",null,w.createElement("h3",null,t.text),t.item&&w.createElement(kr,{items:t.item,answers:e.answers,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case br.boolean:return w.createElement(Q,{id:a,name:a,defaultChecked:null==r?void 0:r.valueBoolean,onChange:e=>l({valueBoolean:e.currentTarget.checked})});case br.decimal:return w.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 br.integer:return w.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 br.date:return w.createElement(q,{type:"date",id:a,name:a,defaultValue:null==r?void 0:r.valueDate,onChange:e=>l({valueDate:e.currentTarget.value})});case br.dateTime:return w.createElement(en,{name:a,defaultValue:null==r?void 0:r.valueDateTime,onChange:e=>l({valueDateTime:e})});case br.time:return w.createElement(q,{type:"time",id:a,name:a,defaultValue:null==r?void 0:r.valueTime,onChange:e=>l({valueTime:e.currentTarget.value})});case br.string:case br.url:return w.createElement(q,{id:a,name:a,defaultValue:null==r?void 0:r.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case br.text:return w.createElement(ee,{id:a,name:a,defaultValue:null==r?void 0:r.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case br.attachment:return w.createElement(Xe,{name:a,defaultValue:null==r?void 0:r.valueAttachment,onChange:e=>l({valueAttachment:e})});case br.reference:return w.createElement(hn,{name:a,defaultValue:null==r?void 0:r.valueReference,onChange:e=>l({valueReference:e})});case br.quantity:return w.createElement(cn,{name:a,defaultValue:null==r?void 0:r.valueQuantity,onChange:e=>l({valueQuantity:e})});case br.choice:case br.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)?w.createElement(jr,{name:a,item:t,initial:r,onChangeAnswer:l}):w.createElement(Sr,{name:a,item:t,initial:r,onChangeAnswer:l})}return null}function jr(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(xr(t))}return w.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:xr(l),data:o})}function xr(e){if(e)return"CodeableConcept"===e.type?e.value.coding[0].display:"Coding"===e.type?e.value.display:e.value.toString()}function Sr(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 w.createElement(w.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 w.createElement("div",{key:s,className:"medplum-questionnaire-option-row"},w.createElement("div",{className:"medplum-questionnaire-option-checkbox"},w.createElement("input",{type:"radio",id:s,name:a,value:r.value,defaultChecked:u&&l(r)===l(u),onChange:()=>i({[o]:r.value})})),w.createElement("div",null,w.createElement("label",{htmlFor:s},w.createElement(Wt,{property:c,propertyType:r.type,value:r.value}))))})))}function wr(e){var t;return null!==(t=null==e?void 0:e.map(Nr))&&void 0!==t?t:[]}function Nr(e){var t,n;return{linkId:e.linkId,text:e.text,item:wr(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Ir))&&void 0!==n?n:[]}}function Ir(e){return Object.assign({},e)}function Vr(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 Ar(e){const t=Ke(),n=Ot(e.questionnaire),[a,r]=N(),[l,o]=N(),[i,c]=N(),[u,s]=N();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||Mr(),item:qr(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&l?w.createElement("div",{className:"medplum-questionnaire-builder"},w.createElement(rt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(l)},w.createElement(Dr,{item:l,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),w.createElement(_,{type:"submit"},"Save"))):null}function Dr(e){var t;const n=e.item,a=e.item,r="resourceType"in e.item,l=r||a.type===br.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=I();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 w.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){He(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){He(t),e.setHoverKey(e.item.id)}},i?w.createElement(w.Fragment,null,r&&w.createElement("div",null,w.createElement(q,{defaultValue:n.title,onChange:e=>d("title",e.currentTarget.value)})),!l&&w.createElement("div",null,w.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&&w.createElement(ee,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e.currentTarget.value)}),Cr(a)&&w.createElement(Rr,{options:a.answerOption,onChange:e=>d("answerOption",e)})):w.createElement(w.Fragment,null,n.title&&w.createElement("h1",null,n.title),a.text&&w.createElement("p",null,a.text),!l&&w.createElement(Or,{item:a,answers:{},onChange:()=>{}})),a.item&&a.item.map((t=>w.createElement("div",{key:t.id},w.createElement(Dr,{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&&w.createElement("div",{className:"top-actions"},i?w.createElement(q,{defaultValue:a.linkId,onChange:e=>d("linkId",e.currentTarget.value)}):w.createElement("div",null,o)),w.createElement("div",{className:"bottom-actions"},l&&w.createElement(w.Fragment,null,w.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:Mr(),linkId:Fr("q"),type:"string",text:"Question"})}},"Add item"),w.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:Mr(),linkId:Fr("g"),type:"group",text:"Group"})}},"Add group")),!r&&w.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Rr(e){var t;const a=n.types.QuestionnaireItemAnswerOption.properties["value[x]"],r=null!==(t=e.options)&&void 0!==t?t:[];return w.createElement("div",null,r.map((t=>{const[n,l]=Kt({type:"QuestionnaireItemAnswerOption",value:t},"value");return w.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},w.createElement("div",null,w.createElement(bn,{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)}})),w.createElement("div",null,w.createElement("a",{href:"#",onClick:n=>{He(n),e.onChange(r.filter((e=>e.id!==t.id)))}},"Remove")))})),w.createElement("a",{href:"#",onClick:t=>{He(t),e.onChange([...r,{id:Mr()}])}},"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"}(br||(br={}));let Pr=1,Lr=1;function Fr(e){return e+Pr++}function Mr(){return"id-"+Lr++}function qr(e){if(e)return e.forEach((e=>{var t,n;(null===(t=e.id)||void 0===t?void 0:t.match(/^id-\d+$/))&&(Lr=Math.max(Lr,parseInt(e.id.substring(3))+1)),(null===(n=e.linkId)||void 0===n?void 0:n.match(/^q\d+$/))&&(Pr=Math.max(Pr,parseInt(e.linkId.substring(1))+1))})),e.map((e=>Object.assign(Object.assign({},e),{id:e.id||Mr(),item:qr(e.item),answerOption:$r(e.answerOption)})))}function $r(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||Mr()})))}function _r(e){return w.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function zr(e){var t;const n=Ke(),a=Ot(e.value),[r,l]=N(!1),[o,i]=N();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?w.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 w.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},w.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==m?void 0:m.status)?"🗹":"☐"),w.createElement("div",{className:"medplum-request-group-task-details"},w.createElement("div",{className:"medplum-request-group-task-title"},t.title),t.description&&w.createElement("div",null,t.description),w.createElement("div",null,"Last edited by ",w.createElement(jn,{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)),w.createElement("div",null,"Status: ",w.createElement(_r,{status:(null==m?void 0:m.status)||"unknown"}))),w.createElement("div",{className:"medplum-request-group-task-actions"},d&&!p&&w.createElement(_,{onClick:()=>e.onStart(m,d)},"Start"),d&&p&&w.createElement(_,{onClick:()=>e.onEdit(m,d,p)},"Edit")))}))):null}function Ur(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:Wr(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 Wr(e){return e&&!e.snake&&e.prev?e.prev:e}function Kr(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=Ur(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 Qr(e){var t,n;const a=Ke(),[r,l]=N(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 w.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=Kr(r);return w.createElement("div",{className:"medplum-blame-container"},w.createElement("table",{className:"medplum-blame"},w.createElement("tbody",null,i.map(((e,t)=>w.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&w.createElement("td",{className:"details",rowSpan:e.span},w.createElement(F,{spacing:"xs",grow:!0,noWrap:!0},w.createElement(xn,{value:e.meta.author,link:!0}),w.createElement(_t,{to:Hr(o,e.meta.versionId)},Br(e.meta.lastUpdated)))),w.createElement("td",{className:"line-number"},t+1),w.createElement("td",{className:"line"},w.createElement("pre",{className:"line-pre"},e.value))))))))}function Hr(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function Br(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return Gr(n,"year");const a=Math.floor(t/2592e3);if(a>0)return Gr(a,"month");const r=Math.floor(t/86400);if(r>0)return Gr(r,"day");const l=Math.floor(t/3600);if(l>0)return Gr(l,"hour");const o=Math.floor(t/60);return o>0?Gr(o,"minute"):Gr(t,"second")}function Gr(e,t){return`${e} ${1===e?t:t+"s"} ago`}function Jr(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=Ur(l(t,!0).match(/[^\r\n]+/g),l(n,!0).match(/[^\r\n]+/g));return w.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>w.createElement(Yr,{key:"delta"+t,delta:e}))))}function Yr(e){return w.createElement(w.Fragment,null,"...",w.createElement("br",null),e.delta.original.lines.length>0&&w.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&w.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",w.createElement("br",null))}function Xr(e){var t;const n=Ke(),[a,r]=N(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?w.createElement("table",{className:"medplum-table"},w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",null,"Author"),w.createElement("th",null,"Date"),w.createElement("th",null,"Version"))),w.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map(((e,t)=>w.createElement(Zr,{key:"entry-"+t,entry:e}))))):w.createElement("div",null,"Loading...")}function Zr(e){var t,n,a;const{response:r,resource:l}=e.entry;return l?w.createElement("tr",null,w.createElement("td",null,w.createElement(xn,{value:null===(t=l.meta)||void 0===t?void 0:t.author,link:!0})),w.createElement("td",null,s(null===(n=l.meta)||void 0===n?void 0:n.lastUpdated)),w.createElement("td",null,w.createElement(_t,{to:el(l)},null===(a=l.meta)||void 0===a?void 0:a.versionId))):w.createElement("tr",null,w.createElement("td",{colSpan:3},S(null==r?void 0:r.outcome)))}function el(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function tl(e){const{onChangeMonth:t,onClick:n}=e,[a,r]=N(nl);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:al(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 w.createElement("div",null,w.createElement(F,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},w.createElement("p",{style:{flex:1}},(i=a).toLocaleString("default",{month:"long"})+" "+i.getFullYear()),w.createElement(F,{position:"right",spacing:"xs"},w.createElement(_,{variant:"outline","aria-label":"Previous month",onClick:()=>l(-1)},"<"),w.createElement(_,{variant:"outline","aria-label":"Next month",onClick:()=>l(1)},">"))),w.createElement("table",{className:"medplum-calendar-table"},w.createElement("thead",null,w.createElement("tr",null,w.createElement("th",null,"SUN"),w.createElement("th",null,"MON"),w.createElement("th",null,"TUE"),w.createElement("th",null,"WED"),w.createElement("th",null,"THU"),w.createElement("th",null,"FRI"),w.createElement("th",null,"SAT"))),w.createElement("tbody",null,o.map(((e,t)=>w.createElement("tr",{key:"week-"+t},e.map(((e,t)=>w.createElement("td",{key:"day-"+t},e&&w.createElement(_,{disabled:!e.available,onClick:()=>n(e.date)},e.date.getDate()))))))))));var i}function nl(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function al(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 rl(e){var t;const n=Ke(),a=Ot(e.schedule),r=Ot(e.questionnaire),[l,o]=N();I().current=l;const[i,c]=N(nl()),[u,s]=N(),[m,d]=N(),[p,v]=N();if(A((()=>{a?(o([]),n.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",E(a)],["start","gt"+ll(i)],["start","lt"+ol(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 w.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},w.createElement("div",{className:"medplum-calendar-info-pane"},h&&w.createElement(dn,{value:h,size:"xl"}),h&&w.createElement(U,{size:"xl",weight:500},w.createElement(jn,{value:h})),w.createElement("p",null,"1 hour"),u&&w.createElement("p",null,u.toLocaleDateString()),m&&w.createElement("p",null,cl(new Date(m.start)))),w.createElement("div",{className:"medplum-calendar-selection-pane"},!u&&w.createElement("div",null,w.createElement("h3",null,"Select date"),w.createElement(tl,{slots:l,onChangeMonth:c,onClick:s})),u&&!m&&w.createElement("div",null,w.createElement("h3",null,"Select time"),w.createElement(z,null,l.map((e=>{const t=new Date(e.start);return t.getTime()>u.getTime()&&t.getTime()<u.getTime()+864e5&&w.createElement("div",{key:e.id},w.createElement(_,{variant:"outline",style:{width:150},onClick:()=>d(e)},cl(t)))})))),u&&m&&!p&&w.createElement(Tr,{questionnaire:r,submitButtonText:"Next",onSubmit:v}),u&&m&&p&&w.createElement("div",null,w.createElement("h3",null,"You're all set!"),w.createElement("p",null,"Check your email for a calendar invite."))))}function ll(e){return il(e.getTime())}function ol(e){return il(e.getTime()+26784e5)}function il(e){return new Date(Math.max(Date.now(),e)).toISOString()}function cl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function ul(e){return w.createElement(Un,{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})})}function sl(e){let t="medplum-tab";function n(t){He(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),w.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function ml(e){return w.createElement(Pn,{className:"medplum-surface",height:50},w.createElement("div",{role:"tablist",className:"medplum-tablist"},w.createElement("div",{className:"medplum-tablist-foreground"},w.Children.map(e.children,((t,n)=>w.isValidElement(t)&&t.type===sl?w.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function dl(e){return w.createElement("div",{role:"tabpanel"},e.children)}function pl(e){return w.createElement(w.Fragment,null,w.Children.map(e.children,(t=>w.isValidElement(t)&&t.type===dl&&t.props.name===e.value?t:null)))}function vl(e){return w.createElement("div",{className:"medplum-title-bar"},e.children)}export{Le as AddressDisplay,qe as AddressInput,_e as AttachmentArrayDisplay,Ye as AttachmentArrayInput,Je as AttachmentButton,Xe as AttachmentInput,On as BackboneElementInput,bt as CheckboxFormSection,Jt as CodeInput,Vt as CodeableConceptDisplay,Gt as CodeableConceptInput,Dt as ContactDetailDisplay,Zt as ContactDetailInput,At as ContactPointDisplay,Xt as ContactPointInput,en as DateTimeInput,Jn as DefaultResourceTimeline,St as DescriptionList,wt as DescriptionListEntry,Sn as DiagnosticReportDisplay,Ze as Document,Cn as ElementDefinitionInputSelector,Tn as ElementDefinitionTypeInput,Yn as EncounterTimeline,Ln as ErrorBoundary,ar as FhirPathTable,lr as FooterLinks,rt as Form,Tt as FormSection,Rt as HumanNameDisplay,rn as HumanNameInput,ln as IdentifierInput,lt as Logo,_t as MedplumLink,Ue as MedplumProvider,rr as MemoizedFhirPathTable,Za as MemoizedSearchControl,wn as ObservationTable,ir as PatientTimeline,cr as PlanDefinitionBuilder,Ar as QuestionnaireBuilder,Tr as QuestionnaireForm,Or as QuestionnaireFormItem,br as QuestionnaireItemType,Mt as RangeDisplay,sn as RangeInput,hn as ReferenceInput,gt as RegisterForm,zr as RequestGroupDisplay,Ut as ResourceArrayDisplay,gn as ResourceArrayInput,dn as ResourceAvatar,xn as ResourceBadge,Qr as ResourceBlame,Jr as ResourceDiff,jt as ResourceForm,Xr as ResourceHistoryTable,pn as ResourceInput,jn as ResourceName,Wt as ResourcePropertyDisplay,bn as ResourcePropertyInput,Rn as ResourceTable,Un as ResourceTimeline,rl as Scheduler,Pn as Scrollable,Ba as SearchChangeEvent,Ja as SearchClickEvent,Xa as SearchControl,Da as SearchFieldEditor,Fa as SearchFilterEditor,Ga as SearchLoadEvent,ul as ServiceRequestTimeline,yt as SignInForm,_r as StatusBadge,sl as Tab,ml as TabList,dl as TabPanel,pl as TabSwitch,Fn as Timeline,Mn as TimelineItem,vl as TitleBar,Ea as addDateEqualsFilter,fa as addDateFilter,ya as addDateFilterBetween,oa as addField,la as addFilter,da as addLastMonthFilter,Ca as addMissingFilter,va as addNextMonthFilter,pa as addThisMonthFilter,ua as addTodayFilter,sa as addTomorrowFilter,ga as addYearToDateFilter,ca as addYesterdayFilter,Va as buildFieldNameString,aa as clearFilters,ra as clearFiltersOnField,tn as convertIsoToLocal,nn as convertLocalToIso,st as createScriptTag,ia as deleteFilter,qt as formatRangeString,ot as getErrorsForInput,it as getIssuesForExpression,Ia as getOpString,vt as getRecaptcha,Na as getSearchOperators,Sa as getSortField,Br as getTimeString,Kt as getValueAndType,Ta as hasFilterOnField,pt as initRecaptcha,Cr as isChoiceQuestion,Vr as isQuestionEnabled,wa as isSortDescending,tt as parseForm,Aa as renderValue,na as setFilters,ka as setOffset,Oa as setPage,xt as setPropertyValue,ja as setSort,qn as sortByDateAndPriority,xa as toggleSort,Ke as useMedplum,We as useMedplumContext,Qe as useMedplumProfile,Ot as useResource};
2
2
  //# sourceMappingURL=index.min.js.map