@medplum/react 0.9.24 → 0.9.27

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 (408) hide show
  1. package/dist/cjs/index.js +24 -9
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/index.min.js +1 -1
  4. package/dist/cjs/index.min.js.map +1 -1
  5. package/dist/{types → esm}/AddressDisplay.d.ts +0 -0
  6. package/dist/esm/AddressDisplay.js +13 -0
  7. package/dist/esm/AddressDisplay.js.map +1 -0
  8. package/dist/{types → esm}/AddressInput.d.ts +0 -0
  9. package/dist/esm/AddressInput.js +69 -0
  10. package/dist/esm/AddressInput.js.map +1 -0
  11. package/dist/{types → esm}/AnnotationInput.d.ts +0 -0
  12. package/dist/esm/AnnotationInput.js +28 -0
  13. package/dist/esm/AnnotationInput.js.map +1 -0
  14. package/dist/{types → esm}/AttachmentArrayDisplay.d.ts +0 -0
  15. package/dist/esm/AttachmentArrayDisplay.js +11 -0
  16. package/dist/esm/AttachmentArrayDisplay.js.map +1 -0
  17. package/dist/{types → esm}/AttachmentArrayInput.d.ts +0 -0
  18. package/dist/esm/AttachmentArrayInput.js +42 -0
  19. package/dist/esm/AttachmentArrayInput.js.map +1 -0
  20. package/dist/{types → esm}/AttachmentDisplay.d.ts +0 -0
  21. package/dist/esm/AttachmentDisplay.js +20 -0
  22. package/dist/esm/AttachmentDisplay.js.map +1 -0
  23. package/dist/{types → esm}/AttachmentInput.d.ts +0 -0
  24. package/dist/esm/AttachmentInput.js +27 -0
  25. package/dist/esm/AttachmentInput.js.map +1 -0
  26. package/dist/{types → esm}/Autocomplete.d.ts +0 -0
  27. package/dist/esm/Autocomplete.js +284 -0
  28. package/dist/esm/Autocomplete.js.map +1 -0
  29. package/dist/{types → esm}/Avatar.d.ts +0 -0
  30. package/dist/esm/Avatar.js +24 -0
  31. package/dist/esm/Avatar.js.map +1 -0
  32. package/dist/{types → esm}/BackboneElementDisplay.d.ts +0 -0
  33. package/dist/esm/BackboneElementDisplay.js +43 -0
  34. package/dist/esm/BackboneElementDisplay.js.map +1 -0
  35. package/dist/{types → esm}/BackboneElementInput.d.ts +0 -0
  36. package/dist/esm/BackboneElementInput.js +51 -0
  37. package/dist/esm/BackboneElementInput.js.map +1 -0
  38. package/dist/{types → esm}/Button.d.ts +0 -0
  39. package/dist/esm/Button.js +13 -0
  40. package/dist/esm/Button.js.map +1 -0
  41. package/dist/{types → esm}/CalendarInput.d.ts +0 -0
  42. package/dist/esm/CalendarInput.js +96 -0
  43. package/dist/esm/CalendarInput.js.map +1 -0
  44. package/dist/{types → esm}/Checkbox.d.ts +0 -0
  45. package/dist/esm/Checkbox.js +13 -0
  46. package/dist/esm/Checkbox.js.map +1 -0
  47. package/dist/{types → esm}/CheckboxFormSection.d.ts +0 -0
  48. package/dist/esm/CheckboxFormSection.js +12 -0
  49. package/dist/esm/CheckboxFormSection.js.map +1 -0
  50. package/dist/{types → esm}/CodeInput.d.ts +0 -0
  51. package/dist/esm/CodeInput.js +28 -0
  52. package/dist/esm/CodeInput.js.map +1 -0
  53. package/dist/{types → esm}/CodeableConceptDisplay.d.ts +0 -0
  54. package/dist/esm/CodeableConceptDisplay.js +19 -0
  55. package/dist/esm/CodeableConceptDisplay.js.map +1 -0
  56. package/dist/{types → esm}/CodeableConceptInput.d.ts +0 -0
  57. package/dist/esm/CodeableConceptInput.js +52 -0
  58. package/dist/esm/CodeableConceptInput.js.map +1 -0
  59. package/dist/{types → esm}/CodingDisplay.d.ts +0 -0
  60. package/dist/esm/CodingDisplay.js +9 -0
  61. package/dist/esm/CodingDisplay.js.map +1 -0
  62. package/dist/{types → esm}/CodingInput.d.ts +0 -0
  63. package/dist/esm/CodingInput.js +30 -0
  64. package/dist/esm/CodingInput.js.map +1 -0
  65. package/dist/{types → esm}/ContactDetailDisplay.d.ts +0 -0
  66. package/dist/esm/ContactDetailDisplay.js +17 -0
  67. package/dist/esm/ContactDetailDisplay.js.map +1 -0
  68. package/dist/{types → esm}/ContactDetailInput.d.ts +0 -0
  69. package/dist/esm/ContactDetailInput.js +37 -0
  70. package/dist/esm/ContactDetailInput.js.map +1 -0
  71. package/dist/{types → esm}/ContactPointDisplay.d.ts +0 -0
  72. package/dist/esm/ContactPointDisplay.js +29 -0
  73. package/dist/esm/ContactPointDisplay.js.map +1 -0
  74. package/dist/{types → esm}/ContactPointInput.d.ts +0 -0
  75. package/dist/esm/ContactPointInput.js +60 -0
  76. package/dist/esm/ContactPointInput.js.map +1 -0
  77. package/dist/{types → esm}/DateTimeDisplay.d.ts +0 -0
  78. package/dist/esm/DateTimeDisplay.js +11 -0
  79. package/dist/esm/DateTimeDisplay.js.map +1 -0
  80. package/dist/{types → esm}/DateTimeInput.d.ts +0 -0
  81. package/dist/esm/DateTimeInput.js +62 -0
  82. package/dist/esm/DateTimeInput.js.map +1 -0
  83. package/dist/{types → esm}/DefaultResourceTimeline.d.ts +0 -0
  84. package/dist/esm/DefaultResourceTimeline.js +27 -0
  85. package/dist/esm/DefaultResourceTimeline.js.map +1 -0
  86. package/dist/{types → esm}/DescriptionList.d.ts +0 -0
  87. package/dist/esm/DescriptionList.js +13 -0
  88. package/dist/esm/DescriptionList.js.map +1 -0
  89. package/dist/{types → esm}/DiagnosticReportDisplay.d.ts +0 -0
  90. package/dist/esm/DiagnosticReportDisplay.js +103 -0
  91. package/dist/esm/DiagnosticReportDisplay.js.map +1 -0
  92. package/dist/{types → esm}/Dialog.d.ts +0 -0
  93. package/dist/esm/Dialog.js +43 -0
  94. package/dist/esm/Dialog.js.map +1 -0
  95. package/dist/{types → esm}/Document.d.ts +0 -0
  96. package/dist/esm/Document.js +9 -0
  97. package/dist/esm/Document.js.map +1 -0
  98. package/dist/{types → esm}/EncounterTimeline.d.ts +0 -0
  99. package/dist/esm/EncounterTimeline.js +47 -0
  100. package/dist/esm/EncounterTimeline.js.map +1 -0
  101. package/dist/{types → esm}/ErrorBoundary.d.ts +0 -0
  102. package/dist/esm/ErrorBoundary.js +27 -0
  103. package/dist/esm/ErrorBoundary.js.map +1 -0
  104. package/dist/{types → esm}/ExtensionInput.d.ts +0 -0
  105. package/dist/esm/ExtensionInput.js +14 -0
  106. package/dist/esm/ExtensionInput.js.map +1 -0
  107. package/dist/{types → esm}/FhirPathDisplay.d.ts +0 -0
  108. package/dist/esm/FhirPathDisplay.js +23 -0
  109. package/dist/esm/FhirPathDisplay.js.map +1 -0
  110. package/dist/{types → esm}/FhirPathTable.d.ts +0 -0
  111. package/dist/esm/FhirPathTable.js +117 -0
  112. package/dist/esm/FhirPathTable.js.map +1 -0
  113. package/dist/{types → esm}/FooterLinks.d.ts +0 -0
  114. package/dist/esm/FooterLinks.js +8 -0
  115. package/dist/esm/FooterLinks.js.map +1 -0
  116. package/dist/{types → esm}/Form.d.ts +0 -0
  117. package/dist/esm/Form.js +15 -0
  118. package/dist/esm/Form.js.map +1 -0
  119. package/dist/{types → esm}/FormSection.d.ts +0 -0
  120. package/dist/esm/FormSection.js +18 -0
  121. package/dist/esm/FormSection.js.map +1 -0
  122. package/dist/{types → esm}/FormUtils.d.ts +0 -0
  123. package/dist/esm/FormUtils.js +49 -0
  124. package/dist/esm/FormUtils.js.map +1 -0
  125. package/dist/{types → esm}/GoogleButton.d.ts +0 -0
  126. package/dist/esm/GoogleButton.js +48 -0
  127. package/dist/esm/GoogleButton.js.map +1 -0
  128. package/dist/{types → esm}/Header.d.ts +0 -0
  129. package/dist/esm/Header.js +95 -0
  130. package/dist/esm/Header.js.map +1 -0
  131. package/dist/{types → esm}/HeaderSearchInput.d.ts +0 -0
  132. package/dist/esm/HeaderSearchInput.js +181 -0
  133. package/dist/esm/HeaderSearchInput.js.map +1 -0
  134. package/dist/{types → esm}/HumanNameDisplay.d.ts +0 -0
  135. package/dist/esm/HumanNameDisplay.js +13 -0
  136. package/dist/esm/HumanNameDisplay.js.map +1 -0
  137. package/dist/{types → esm}/HumanNameInput.d.ts +0 -0
  138. package/dist/esm/HumanNameInput.js +49 -0
  139. package/dist/esm/HumanNameInput.js.map +1 -0
  140. package/dist/{types → esm}/IdentifierDisplay.d.ts +0 -0
  141. package/dist/esm/IdentifierDisplay.js +12 -0
  142. package/dist/esm/IdentifierDisplay.js.map +1 -0
  143. package/dist/{types → esm}/IdentifierInput.d.ts +0 -0
  144. package/dist/esm/IdentifierInput.js +19 -0
  145. package/dist/esm/IdentifierInput.js.map +1 -0
  146. package/dist/{types → esm}/Input.d.ts +0 -0
  147. package/dist/esm/Input.js +26 -0
  148. package/dist/esm/Input.js.map +1 -0
  149. package/dist/{types → esm}/InputRow.d.ts +0 -0
  150. package/dist/esm/InputRow.js +8 -0
  151. package/dist/esm/InputRow.js.map +1 -0
  152. package/dist/{types → esm}/Loading.d.ts +0 -0
  153. package/dist/esm/Loading.js +11 -0
  154. package/dist/esm/Loading.js.map +1 -0
  155. package/dist/{types → esm}/Logo.d.ts +0 -0
  156. package/dist/esm/Logo.js +14 -0
  157. package/dist/esm/Logo.js.map +1 -0
  158. package/dist/{types → esm}/MedplumLink.d.ts +0 -0
  159. package/dist/esm/MedplumLink.js +34 -0
  160. package/dist/esm/MedplumLink.js.map +1 -0
  161. package/dist/{types → esm}/MedplumProvider.d.ts +0 -0
  162. package/dist/esm/MedplumProvider.js +50 -0
  163. package/dist/esm/MedplumProvider.js.map +1 -0
  164. package/dist/{types → esm}/MenuItem.d.ts +0 -0
  165. package/dist/esm/MenuItem.js +8 -0
  166. package/dist/esm/MenuItem.js.map +1 -0
  167. package/dist/{types → esm}/MenuSeparator.d.ts +0 -0
  168. package/dist/esm/MenuSeparator.js +8 -0
  169. package/dist/esm/MenuSeparator.js.map +1 -0
  170. package/dist/{types → esm}/PatientTimeline.d.ts +0 -0
  171. package/dist/esm/PatientTimeline.js +40 -0
  172. package/dist/esm/PatientTimeline.js.map +1 -0
  173. package/dist/{types → esm}/PeriodDisplay.d.ts +0 -0
  174. package/dist/esm/PeriodDisplay.js +16 -0
  175. package/dist/esm/PeriodDisplay.js.map +1 -0
  176. package/dist/{types → esm}/PeriodInput.d.ts +0 -0
  177. package/dist/esm/PeriodInput.js +19 -0
  178. package/dist/esm/PeriodInput.js.map +1 -0
  179. package/dist/{types → esm}/PlanDefinitionBuilder.d.ts +0 -0
  180. package/dist/esm/PlanDefinitionBuilder.js +155 -0
  181. package/dist/esm/PlanDefinitionBuilder.js.map +1 -0
  182. package/dist/{types → esm}/Popup.d.ts +0 -0
  183. package/dist/esm/Popup.js +64 -0
  184. package/dist/esm/Popup.js.map +1 -0
  185. package/dist/{types → esm}/QuantityDisplay.d.ts +0 -0
  186. package/dist/esm/QuantityDisplay.js +28 -0
  187. package/dist/esm/QuantityDisplay.js.map +1 -0
  188. package/dist/{types → esm}/QuantityInput.d.ts +0 -0
  189. package/dist/esm/QuantityInput.js +33 -0
  190. package/dist/esm/QuantityInput.js.map +1 -0
  191. package/dist/{types → esm}/QuestionnaireBuilder.d.ts +0 -0
  192. package/dist/esm/QuestionnaireBuilder.js +217 -0
  193. package/dist/esm/QuestionnaireBuilder.js.map +1 -0
  194. package/dist/{types → esm}/QuestionnaireForm.d.ts +0 -0
  195. package/dist/esm/QuestionnaireForm.js +215 -0
  196. package/dist/esm/QuestionnaireForm.js.map +1 -0
  197. package/dist/{types → esm}/QuestionnaireUtils.d.ts +0 -0
  198. package/dist/esm/QuestionnaireUtils.js +103 -0
  199. package/dist/esm/QuestionnaireUtils.js.map +1 -0
  200. package/dist/{types → esm}/RangeDisplay.d.ts +0 -0
  201. package/dist/esm/RangeDisplay.js +21 -0
  202. package/dist/esm/RangeDisplay.js.map +1 -0
  203. package/dist/{types → esm}/RangeInput.d.ts +0 -0
  204. package/dist/esm/RangeInput.js +25 -0
  205. package/dist/esm/RangeInput.js.map +1 -0
  206. package/dist/{types → esm}/RatioDisplay.d.ts +0 -0
  207. package/dist/esm/RatioDisplay.js +16 -0
  208. package/dist/esm/RatioDisplay.js.map +1 -0
  209. package/dist/{types → esm}/RatioInput.d.ts +0 -0
  210. package/dist/esm/RatioInput.js +25 -0
  211. package/dist/esm/RatioInput.js.map +1 -0
  212. package/dist/{types → esm}/ReferenceDisplay.d.ts +0 -0
  213. package/dist/esm/ReferenceDisplay.js +21 -0
  214. package/dist/esm/ReferenceDisplay.js.map +1 -0
  215. package/dist/{types → esm}/ReferenceInput.d.ts +0 -0
  216. package/dist/esm/ReferenceInput.js +42 -0
  217. package/dist/esm/ReferenceInput.js.map +1 -0
  218. package/dist/{types → esm}/RegisterForm.d.ts +1 -0
  219. package/dist/esm/RegisterForm.js +121 -0
  220. package/dist/esm/RegisterForm.js.map +1 -0
  221. package/dist/{types → esm}/RequestGroupDisplay.d.ts +0 -0
  222. package/dist/esm/RequestGroupDisplay.js +73 -0
  223. package/dist/esm/RequestGroupDisplay.js.map +1 -0
  224. package/dist/{types → esm}/ResourceArrayDisplay.d.ts +0 -0
  225. package/dist/esm/ResourceArrayDisplay.js +14 -0
  226. package/dist/esm/ResourceArrayDisplay.js.map +1 -0
  227. package/dist/{types → esm}/ResourceArrayInput.d.ts +0 -0
  228. package/dist/esm/ResourceArrayInput.js +48 -0
  229. package/dist/esm/ResourceArrayInput.js.map +1 -0
  230. package/dist/{types → esm}/ResourceBadge.d.ts +0 -0
  231. package/dist/esm/ResourceBadge.js +13 -0
  232. package/dist/esm/ResourceBadge.js.map +1 -0
  233. package/dist/{types → esm}/ResourceBlame.d.ts +0 -0
  234. package/dist/esm/ResourceBlame.js +65 -0
  235. package/dist/esm/ResourceBlame.js.map +1 -0
  236. package/dist/{types → esm}/ResourceDiff.d.ts +0 -0
  237. package/dist/esm/ResourceDiff.js +28 -0
  238. package/dist/esm/ResourceDiff.js.map +1 -0
  239. package/dist/{types → esm}/ResourceDiffTable.d.ts +0 -0
  240. package/dist/esm/ResourceDiffTable.js +58 -0
  241. package/dist/esm/ResourceDiffTable.js.map +1 -0
  242. package/dist/{types → esm}/ResourceForm.d.ts +0 -0
  243. package/dist/esm/ResourceForm.js +55 -0
  244. package/dist/esm/ResourceForm.js.map +1 -0
  245. package/dist/{types → esm}/ResourceHistoryTable.d.ts +0 -0
  246. package/dist/esm/ResourceHistoryTable.js +46 -0
  247. package/dist/esm/ResourceHistoryTable.js.map +1 -0
  248. package/dist/{types → esm}/ResourceInput.d.ts +0 -0
  249. package/dist/esm/ResourceInput.js +40 -0
  250. package/dist/esm/ResourceInput.js.map +1 -0
  251. package/dist/{types → esm}/ResourceName.d.ts +0 -0
  252. package/dist/esm/ResourceName.js +16 -0
  253. package/dist/esm/ResourceName.js.map +1 -0
  254. package/dist/{types → esm}/ResourcePropertyDisplay.d.ts +0 -0
  255. package/dist/esm/ResourcePropertyDisplay.js +107 -0
  256. package/dist/esm/ResourcePropertyDisplay.js.map +1 -0
  257. package/dist/{types → esm}/ResourcePropertyInput.d.ts +0 -0
  258. package/dist/esm/ResourcePropertyInput.js +151 -0
  259. package/dist/esm/ResourcePropertyInput.js.map +1 -0
  260. package/dist/{types → esm}/ResourceTable.d.ts +0 -0
  261. package/dist/esm/ResourceTable.js +22 -0
  262. package/dist/esm/ResourceTable.js.map +1 -0
  263. package/dist/{types → esm}/ResourceTimeline.d.ts +0 -0
  264. package/dist/esm/ResourceTimeline.js +221 -0
  265. package/dist/esm/ResourceTimeline.js.map +1 -0
  266. package/dist/{types → esm}/Scheduler.d.ts +0 -0
  267. package/dist/esm/Scheduler.js +82 -0
  268. package/dist/esm/Scheduler.js.map +1 -0
  269. package/dist/{types → esm}/Scrollable.d.ts +0 -0
  270. package/dist/esm/Scrollable.js +12 -0
  271. package/dist/esm/Scrollable.js.map +1 -0
  272. package/dist/{types → esm}/SearchControl.d.ts +0 -0
  273. package/dist/esm/SearchControl.js +268 -0
  274. package/dist/esm/SearchControl.js.map +1 -0
  275. package/dist/{types → esm}/SearchControlField.d.ts +0 -0
  276. package/dist/esm/SearchControlField.js +98 -0
  277. package/dist/esm/SearchControlField.js.map +1 -0
  278. package/dist/{types → esm}/SearchFieldEditor.d.ts +0 -0
  279. package/dist/esm/SearchFieldEditor.js +192 -0
  280. package/dist/esm/SearchFieldEditor.js.map +1 -0
  281. package/dist/{types → esm}/SearchFilterEditor.d.ts +0 -0
  282. package/dist/esm/SearchFilterEditor.js +103 -0
  283. package/dist/esm/SearchFilterEditor.js.map +1 -0
  284. package/dist/{types → esm}/SearchFilterValueDialog.d.ts +0 -0
  285. package/dist/esm/SearchFilterValueDialog.js +22 -0
  286. package/dist/esm/SearchFilterValueDialog.js.map +1 -0
  287. package/dist/{types → esm}/SearchFilterValueDisplay.d.ts +0 -0
  288. package/dist/esm/SearchFilterValueDisplay.js +22 -0
  289. package/dist/esm/SearchFilterValueDisplay.js.map +1 -0
  290. package/dist/{types → esm}/SearchFilterValueInput.d.ts +0 -0
  291. package/dist/esm/SearchFilterValueInput.js +59 -0
  292. package/dist/esm/SearchFilterValueInput.js.map +1 -0
  293. package/dist/{types → esm}/SearchPopupMenu.d.ts +0 -0
  294. package/dist/esm/SearchPopupMenu.js +135 -0
  295. package/dist/esm/SearchPopupMenu.js.map +1 -0
  296. package/dist/{types → esm}/SearchUtils.d.ts +0 -0
  297. package/dist/esm/SearchUtils.js +488 -0
  298. package/dist/esm/SearchUtils.js.map +1 -0
  299. package/dist/{types → esm}/Select.d.ts +0 -0
  300. package/dist/esm/Select.js +16 -0
  301. package/dist/esm/Select.js.map +1 -0
  302. package/dist/{types → esm}/ServiceRequestTimeline.d.ts +0 -0
  303. package/dist/esm/ServiceRequestTimeline.js +53 -0
  304. package/dist/esm/ServiceRequestTimeline.js.map +1 -0
  305. package/dist/{types → esm}/SignInForm.d.ts +0 -0
  306. package/dist/esm/SignInForm.js +130 -0
  307. package/dist/esm/SignInForm.js.map +1 -0
  308. package/dist/{types → esm}/StatusBadge.d.ts +0 -0
  309. package/dist/esm/StatusBadge.js +8 -0
  310. package/dist/esm/StatusBadge.js.map +1 -0
  311. package/dist/{types → esm}/SubMenu.d.ts +0 -0
  312. package/dist/esm/SubMenu.js +38 -0
  313. package/dist/esm/SubMenu.js.map +1 -0
  314. package/dist/{types → esm}/Tab.d.ts +0 -0
  315. package/dist/esm/Tab.js +19 -0
  316. package/dist/esm/Tab.js.map +1 -0
  317. package/dist/{types → esm}/TabList.d.ts +0 -0
  318. package/dist/esm/TabList.js +23 -0
  319. package/dist/esm/TabList.js.map +1 -0
  320. package/dist/{types → esm}/TabPanel.d.ts +0 -0
  321. package/dist/esm/TabPanel.js +8 -0
  322. package/dist/esm/TabPanel.js.map +1 -0
  323. package/dist/{types → esm}/TabSwitch.d.ts +0 -0
  324. package/dist/esm/TabSwitch.js +16 -0
  325. package/dist/esm/TabSwitch.js.map +1 -0
  326. package/dist/{types → esm}/TextArea.d.ts +0 -0
  327. package/dist/esm/TextArea.js +16 -0
  328. package/dist/esm/TextArea.js.map +1 -0
  329. package/dist/{types → esm}/Timeline.d.ts +0 -0
  330. package/dist/esm/Timeline.js +50 -0
  331. package/dist/esm/Timeline.js.map +1 -0
  332. package/dist/{types → esm}/TitleBar.d.ts +0 -0
  333. package/dist/esm/TitleBar.js +8 -0
  334. package/dist/esm/TitleBar.js.map +1 -0
  335. package/dist/{types → esm}/UploadButton.d.ts +0 -0
  336. package/dist/esm/UploadButton.js +55 -0
  337. package/dist/esm/UploadButton.js.map +1 -0
  338. package/dist/{types → esm}/constants.d.ts +0 -0
  339. package/dist/esm/constants.js +12 -0
  340. package/dist/esm/constants.js.map +1 -0
  341. package/dist/{types → esm}/index.d.ts +1 -0
  342. package/dist/esm/index.js +87 -5811
  343. package/dist/esm/index.js.map +1 -1
  344. package/dist/esm/index.min.js +1 -1
  345. package/dist/esm/index.min.js.map +1 -1
  346. package/dist/esm/node_modules/tslib/tslib.es6.js +27 -0
  347. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -0
  348. package/dist/{types → esm}/stories/AddressInput.stories.d.ts +0 -0
  349. package/dist/{types → esm}/stories/AttachmentArrayInput.stories.d.ts +0 -0
  350. package/dist/{types → esm}/stories/AttachmentInput.stories.d.ts +0 -0
  351. package/dist/{types → esm}/stories/Autocomplete.stories.d.ts +0 -0
  352. package/dist/{types → esm}/stories/Avatar.stories.d.ts +0 -0
  353. package/dist/{types → esm}/stories/Button.stories.d.ts +0 -0
  354. package/dist/{types → esm}/stories/DiagnosticReportDisplay.stories.d.ts +0 -0
  355. package/dist/{types → esm}/stories/Dialog.stories.d.ts +0 -0
  356. package/dist/{types → esm}/stories/EncounterTimeline.stories.d.ts +0 -0
  357. package/dist/{types → esm}/stories/FhirPathDisplay.stories.d.ts +0 -0
  358. package/dist/{types → esm}/stories/FormSection.stories.d.ts +0 -0
  359. package/dist/{types → esm}/stories/Header.stories.d.ts +0 -0
  360. package/dist/{types → esm}/stories/Input.stories.d.ts +0 -0
  361. package/dist/{types → esm}/stories/Loading.stories.d.ts +0 -0
  362. package/dist/{types → esm}/stories/Logo.stories.d.ts +0 -0
  363. package/dist/{types → esm}/stories/PatientTimeline.stories.d.ts +0 -0
  364. package/dist/{types → esm}/stories/PlanDefinitionBuilder.stories.d.ts +0 -0
  365. package/dist/{types → esm}/stories/QuestionnaireBuilder.stories.d.ts +0 -0
  366. package/dist/{types → esm}/stories/QuestionnaireForm.stories.d.ts +0 -0
  367. package/dist/{types → esm}/stories/ReferenceInput.stories.d.ts +0 -0
  368. package/dist/{types → esm}/stories/RegisterForm.stories.d.ts +0 -0
  369. package/dist/{types → esm}/stories/RequestGroupDisplay.stories.d.ts +0 -0
  370. package/dist/{types → esm}/stories/ResourceBlame.stories.d.ts +0 -0
  371. package/dist/{types → esm}/stories/ResourceForm.stories.d.ts +0 -0
  372. package/dist/{types → esm}/stories/ResourceHistoryTable.stories.d.ts +0 -0
  373. package/dist/{types → esm}/stories/ResourceTable.stories.d.ts +0 -0
  374. package/dist/{types → esm}/stories/Scheduler.stories.d.ts +0 -0
  375. package/dist/{types → esm}/stories/SearchControl.stories.d.ts +0 -0
  376. package/dist/{types → esm}/stories/Select.stories.d.ts +0 -0
  377. package/dist/{types → esm}/stories/SignInForm.stories.d.ts +0 -0
  378. package/dist/{types → esm}/stories/StatusBadge.stories.d.ts +0 -0
  379. package/dist/{types → esm}/stories/Tabs.stories.d.ts +0 -0
  380. package/dist/{types → esm}/stories/Timeline.stories.d.ts +0 -0
  381. package/dist/{types → esm}/stories/UploadButton.stories.d.ts +0 -0
  382. package/dist/{types → esm}/test.setup.d.ts +0 -0
  383. package/dist/{types → esm}/useResource.d.ts +0 -0
  384. package/dist/esm/useResource.js +65 -0
  385. package/dist/esm/useResource.js.map +1 -0
  386. package/dist/{types → esm}/utils/blame.d.ts +0 -0
  387. package/dist/esm/utils/blame.js +74 -0
  388. package/dist/esm/utils/blame.js.map +1 -0
  389. package/dist/{types → esm}/utils/date.d.ts +0 -0
  390. package/dist/esm/utils/date.js +48 -0
  391. package/dist/esm/utils/date.js.map +1 -0
  392. package/dist/{types → esm}/utils/diff.d.ts +0 -0
  393. package/dist/esm/utils/diff.js +118 -0
  394. package/dist/esm/utils/diff.js.map +1 -0
  395. package/dist/{types → esm}/utils/dom.d.ts +0 -0
  396. package/dist/esm/utils/dom.js +34 -0
  397. package/dist/esm/utils/dom.js.map +1 -0
  398. package/dist/{types → esm}/utils/outcomes.d.ts +0 -0
  399. package/dist/esm/utils/outcomes.js +7 -0
  400. package/dist/esm/utils/outcomes.js.map +1 -0
  401. package/dist/esm/utils/recaptcha.d.ts +12 -0
  402. package/dist/esm/utils/recaptcha.js +27 -0
  403. package/dist/esm/utils/recaptcha.js.map +1 -0
  404. package/dist/{types → esm}/utils.d.ts +0 -0
  405. package/dist/esm/utils.js +15 -0
  406. package/dist/esm/utils.js.map +1 -0
  407. package/package.json +11 -11
  408. package/dist/types/utils/recaptcha.d.ts +0 -10
@@ -1,2 +1,2 @@
1
- import{formatAddress as e,getDisplayString as t,getImageSrc as n,capitalize as a,globalSchema as l,getPropertyDisplayName as r,formatHumanName as o,stringify as i,buildTypeName as c,PropertyType as u,getTypedPropertyValue as s,createReference as m,toTypedValue as d,getReferenceString as p,evalFhirPath as v,getSearchParameterDetails as h,Operator as E,evalFhirPathTyped as f,SearchParameterType as g,formatSearchQuery as y,parseSearchDefinition as b,DEFAULT_SEARCH_COUNT as C,isUUID as k,parseJWTPayload as O}from"@medplum/core";import T,{useState as N,useRef as w,createContext as j,useEffect as S,useContext as x,useCallback as V,useMemo as D}from"react";import{useNavigate as A,useLocation as P}from"react-router-dom";function I(t){const n=t.value;return n?T.createElement(T.Fragment,null,e(n)):null}function R(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return(null===(n=e.expression)||void 0===n?void 0:n[0])===t}))}function F(e){const t=R(e.outcome,e.name),n=t&&t.length>0;return T.createElement("input",{id:e.name,name:e.name,type:L(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 L(e){return e||"text"}function M(e){return T.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function q(e){const t=R(e.outcome,e.name),n=t&&t.length>0;return T.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 $(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function _(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 U(e){const[t,n]=N(e.defaultValue||{}),a=w();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,T.createElement(M,null,T.createElement(q,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},T.createElement("option",null),T.createElement("option",null,"home"),T.createElement("option",null,"mobile"),T.createElement("option",null,"old"),T.createElement("option",null,"temp"),T.createElement("option",null,"work")),T.createElement(q,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},T.createElement("option",null),T.createElement("option",null,"postal"),T.createElement("option",null,"physical"),T.createElement("option",null,"both")),T.createElement(F,{placeholder:"Line 1",defaultValue:$(t,0),onChange:function(e){l(_(a.current||{},0,e))}}),T.createElement(F,{placeholder:"Line 2",defaultValue:$(t,1),onChange:function(e){l(_(a.current||{},1,e))}}),T.createElement(F,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),T.createElement(F,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),T.createElement(F,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function Q(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?T.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&T.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/"))&&T.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},T.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&T.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},T.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),T.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},T.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 z(e){return T.createElement("div",null,e.values&&e.values.map(((t,n)=>T.createElement("div",{key:"attatchment-"+n},T.createElement(Q,{value:t,maxWidth:e.maxWidth})))))}function H(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 T.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 B=j(void 0);function W(e){const t=e.medplum,[n,a]=N({profile:t.getProfile(),loading:!1});S((()=>{function e(){a(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const l=Object.assign(Object.assign({},n),{medplum:t});return T.createElement(B.Provider,{value:l},e.children)}function G(){return x(B)}function K(){return G().medplum}function Y(){return G().profile}function J(e){e.preventDefault(),e.stopPropagation()}function X(e){if(Z(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&Z(t[0]))return!0}return!1}function Z(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function ee(e){const t=K(),n=w(null);function a(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).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 T.createElement(T.Fragment,null,T.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){J(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),T.createElement(H,{testid:"upload-button",onClick:e=>{var t;J(e),null===(t=n.current)||void 0===t||t.click()}},e.children||"Upload..."))}function te(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=w();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,T.createElement("table",{style:{width:"100%"}},T.createElement("colgroup",null,T.createElement("col",{width:"90%"}),T.createElement("col",{width:"10%"})),T.createElement("tbody",null,n.map(((e,t)=>T.createElement("tr",{key:`${t}-${n.length}`},T.createElement("td",null,T.createElement(Q,{value:e,maxWidth:200})),T.createElement("td",{className:"medplum-right"},T.createElement(H,{onClick:e=>{J(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),T.createElement("tr",null,T.createElement("td",null),T.createElement("td",{className:"medplum-right"},T.createElement(ee,{onUpload:e=>{r([...l.current,e])}})))))}function ne(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?T.createElement(T.Fragment,null,T.createElement(Q,{value:t,maxWidth:200}),T.createElement(H,{onClick:e=>{J(e),a(void 0)}},"Remove")):T.createElement(ee,{onUpload:a})}function ae(e){var t,n;const a=w(null),[l,r]=N(!1),[o,i]=N(""),[c,u]=N(),[s,m]=N(!1),[d,p]=N(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,h]=N([]),[E,f]=N(-1),[g,y]=N(),[b,C]=N(),k=w();k.current=o;const O=w();O.current=c;const j=w();j.current=g;const x=w();function V(t){p(t),e.onChange&&e.onChange(t)}function D(t){a.current.value="";const n=e.multiple?[...d,t]:[t];r(!0),m(!1),i(""),h([]),f(-1),V(n)}function A(){var e;null===(e=a.current)||void 0===e||e.focus()}function P(){r(!1),window.setTimeout((()=>{m(!1)}),200)}function I(){j.current&&(j.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 l=(null===(n=null===(t=a.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(l===k.current)return;if(!l)return m(!1),i(""),h([]),void f(-1);i(l);const r=new AbortController;y(r),e.loadOptions(l,r.signal).then((e=>{r.signal.aborted||(m(e.length>0),h(e),y(void 0),x.current&&(D(e[0]),C(!1)))})).catch(console.log)}()),100);u(t)}function R(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;O.current||j.current||!F()?C(!0):(J(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":L(-1),J(e);break;case"ArrowDown":L(1),J(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(J(e),V(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;F(),J(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function F(){var t;let n;return E>=0&&E<v.length?n=v[E]:-1===E&&v.length>0?n=v[0]:e.buildUnstructured&&(null===(t=a.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(a.current.value)),!!n&&(D(n),!0)}function L(e){let t=E+e;t<0?t=0:t>=v.length&&(t=v.length-1),f(t)}x.current=b,S((()=>()=>{j.current&&j.current.abort()}),[]),S((()=>{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 T.createElement("div",{"data-testid":"autocomplete",className:M+(l?" focused":""),onClick:()=>A()},T.createElement("ul",{onClick:()=>A()},d.map((t=>T.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),T.createElement("li",{className:"medplum-autocomplete-item"},T.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===d.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>{r(!0)},onBlur:()=>P(),onChange:()=>I(),onInput:()=>I(),onKeyDown:e=>R(e),ref:a,"data-testid":"input-element"}))),s&&T.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>T.createElement("div",{key:e.getId(t),className:n===E?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){f(t)}(0,n),onClick:e=>function(e,t){J(e),D(t)}(e,t)},e.getIcon&&T.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),T.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&T.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&T.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},T.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function le(e){const t=A();let n="#";return e.to&&("string"==typeof e.to?n=e.to:"resourceType"in e.to?n=`/${e.to.resourceType}/${e.to.id}`:"reference"in e.to&&(n=`/${e.to.reference}`),e.suffix&&(n+="/"+e.suffix)),T.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{J(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}const re={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function oe(e){const t=K(),[n,a]=N(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?re:e.getCachedReference(t);return}(t,e));return S((()=>{let l=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{l&&a(e)})).catch((()=>a(void 0))),()=>l=!1}),[t,n,e]),n}function ie(e){var a,l;const r=oe(e.value),o=e.size?"medplum-avatar "+e.size:"medplum-avatar",i=r?t(r):null!==(a=e.alt)&&void 0!==a?a:"",c=i&&function(e){return e.split(" ").map((e=>e[0])).join("")}(i),u=null!==(l=r&&n(r))&&void 0!==l?l:e.src,s=u?T.createElement("img",{src:u,alt:i}):c;return T.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?T.createElement(le,{to:r},s):s)}function ce(e){return T.createElement("div",{className:"medplum-checkbox-form-section"},T.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),T.createElement("div",{className:"medplum-checkbox-form-section-details-container"},T.createElement("label",{htmlFor:e.htmlFor},e.title),T.createElement("p",null,e.description)))}const ue=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function se(e){const t=R(e.outcome,e.htmlFor),n=t&&t.length>0;return T.createElement("fieldset",{className:"medplum-form-section"},e.title&&T.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&T.createElement("p",null,e.description),e.children,n&&T.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return T.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 me(e){const t=K(),n=oe(e.defaultValue),[a,l]=N(),[r,o]=N();return S((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(l))}),[t,n]),a&&r?T.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(r)}},T.createElement(se,{title:"Resource Type"},T.createElement(F,{name:"resourceType",defaultValue:r.resourceType,disabled:!0})),T.createElement(se,{title:"ID"},T.createElement(F,{name:"id",defaultValue:r.id,disabled:!0})),T.createElement(dt,{typeName:r.resourceType,defaultValue:r,outcome:e.outcome,onChange:o}),T.createElement(H,{type:"submit",size:"large"},"OK"),e.onDelete&&T.createElement(H,{type:"button",size:"large",onClick:()=>{e.onDelete(r)}},"Delete")):T.createElement("div",null,"Loading...")}function de(e,t,n,l,r){const o=l.type;if(o.length>1)for(const n of o){const l=t.replace("[x]",a(n.code));l in e&&delete e[l]}return e[n]=r,e}function pe(e){return T.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function ve(e){return T.createElement(T.Fragment,null,T.createElement("dt",null,e.term),T.createElement("dd",null,e.children))}function he(e){const t=e.value,n=t.value;if(!n)return null;const a=t.type,o=l.types[a];return o?"object"==typeof n&&"name"in n&&1===Object.keys(n).length?T.createElement("div",null,n.name):T.createElement(pe,{compact:e.compact},Object.entries(o.properties).map((n=>{const a=n[0];if(ue.indexOf(a)>=0)return null;const l=n[1],[o,i]=Ae(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:T.createElement(ve,{key:a,term:r(a)},T.createElement(De,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):T.createElement("div",null,a," not implemented")}function Ee(e){var t,n;return T.createElement(T.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 fe(e){const t=e.value;return t?t.text?T.createElement(T.Fragment,null,t.text):t.coding&&t.coding.length>0?T.createElement(Ee,{value:t.coding[0]}):null:null}function ge(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("]")),T.createElement(T.Fragment,null,n.join("").trim())}function ye(e){var t;const n=e.value;return n?T.createElement(T.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>T.createElement(ge,{key:"telecom-"+t,value:e})))):null}function be(e){return e.value?T.createElement(T.Fragment,null,new Date(e.value).toLocaleString()):null}function Ce(e){const t=e.value;return t?T.createElement(T.Fragment,null,o(t,e.options)):null}function ke(e){var t,n;return T.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 Oe(e){const t=e.value;return t&&(t.start||t.end)?T.createElement("span",null,T.createElement(be,{value:t.start}),"-",T.createElement(be,{value:t.end})):null}function Te(e){return T.createElement(T.Fragment,null,Ne(e.value))}function Ne(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 we(e){return T.createElement(T.Fragment,null,je(e.value))}function je(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${Ne(e.low)}`:!e.low&&e.high?`<= ${Ne(e.high)}`:`${Ne(e.low)} - ${Ne(e.high)}`:""}function Se(e){const t=e.value;return t?T.createElement(T.Fragment,null,T.createElement(Te,{value:t.numerator})," / ",T.createElement(Te,{value:t.denominator})):null}function xe(e){if(!e.value)return null;const t=e.value.display||e.value.reference||i(e.value);return!1!==e.link&&e.value.reference?T.createElement(le,{to:e.value},t):T.createElement(T.Fragment,null,t)}function Ve(e){var t,n,a;const l=e.property,r=null!==(t=e.values)&&void 0!==t?t:[],o=null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return T.createElement(T.Fragment,null,r.map(((t,n)=>T.createElement("div",{key:`${n}-${r.length}`},T.createElement(De,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function De(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?T.createElement(z,{values:l,maxWidth:e.maxWidth}):T.createElement(Ve,{property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case u.boolean:return T.createElement("div",null,void 0===l?"":Boolean(l).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 T.createElement("div",null,l);case u.canonical:return T.createElement(xe,{value:{reference:l},link:e.link});case u.dateTime:case u.instant:return T.createElement(be,{value:l});case u.markdown:return T.createElement("pre",null,l);case u.Address:return T.createElement(I,{value:l});case u.Annotation:return T.createElement("div",null,null==l?void 0:l.text);case u.Attachment:return T.createElement(Q,{value:l,maxWidth:e.maxWidth});case u.CodeableConcept:return T.createElement(fe,{value:l});case u.Coding:return T.createElement(Ee,{value:l});case u.ContactDetail:return T.createElement(ye,{value:l});case u.ContactPoint:return T.createElement(ge,{value:l});case u.HumanName:return T.createElement(Ce,{value:l});case u.Identifier:return T.createElement(ke,{value:l});case u.Period:return T.createElement(Oe,{value:l});case u.Quantity:return T.createElement(Te,{value:l});case u.Range:return T.createElement(we,{value:l});case u.Ratio:return T.createElement(Se,{value:l});case u.Reference:return T.createElement(xe,{value:l,link:e.link});default:if(!(null==n?void 0:n.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return T.createElement(he,{value:{type:c(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:l},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Ae(e,t){const n=s(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function Pe(e){const t=Y(),[n,a]=N(e.defaultValue||{});return w().current=n,T.createElement(F,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const l=n?{text:n,authorReference:t&&m(t),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}})}function Ie(e){return T.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 Re(e){const t=K();let n;return e.defaultValue&&(n=[e.defaultValue]),T.createElement(ae,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map(Fe)))},buildUnstructured:Le,getId:Me,getDisplay:qe,name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Fe(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function Le(e){return{text:e}}function Me(e){return e.coding&&e.coding.length>0?e.coding[0].code:i(e)}function qe(e){var t,n,a,l,r,o;const i=null!==(o=null!==(a=null===(n=null===(t=e.coding)||void 0===t?void 0:t[0])||void 0===n?void 0:n.display)&&void 0!==a?a:null===(r=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code)&&void 0!==o?o:e.text;return T.createElement(T.Fragment,null,i)}const $e={};function _e(e){const t=K();let n;return e.defaultValue&&(n=[e.defaultValue]),T.createElement(ae,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>{const t=e.expansion.contains;return t.forEach((e=>$e[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>T.createElement(T.Fragment,null,$e[e]||e),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Ue(e){const t=K();let n;return e.defaultValue&&(n=[e.defaultValue]),T.createElement(ae,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,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=>T.createElement(Ee,{value:e}),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Qe(e){const[t,n]=N(e.defaultValue),a=w();function l(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,T.createElement(M,null,T.createElement(q,{defaultValue:null==t?void 0:t.system,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{system:e});e||delete t.system,l(t)},testid:"system"},T.createElement("option",null),T.createElement("option",null,"email"),T.createElement("option",null,"fax"),T.createElement("option",null,"pager"),T.createElement("option",null,"phone"),T.createElement("option",null,"other"),T.createElement("option",null,"sms")),T.createElement(q,{defaultValue:null==t?void 0:t.use,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{use:e});e||delete t.use,l(t)},testid:"use"},T.createElement("option",null),T.createElement("option",null,"home"),T.createElement("option",null,"mobile"),T.createElement("option",null,"old"),T.createElement("option",null,"temp"),T.createElement("option",null,"work")),T.createElement(F,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{value:e});e||delete t.value,l(t)}}))}function ze(e){var t;const[n,a]=N(e.defaultValue),l=w();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,T.createElement(M,null,T.createElement(F,{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({},l.current),{name:e});e||delete t.name,r(t)}}),T.createElement(Qe,{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({},l.current),{telecom:e&&[e]});e||delete t.telecom,r(t)}}))}function He(e){return T.createElement(F,Object.assign({},e,{type:"datetime-local",defaultValue:Be(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(We(t))}}))}function Be(e){if(!e)return"";const t=new Date(e);return Ge(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function We(e){if(!e)return"";const t=new Date(e);return Ge(t)?t.toISOString():""}function Ge(e){return e instanceof Date&&!isNaN(e.getTime())}function Ke(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=R(e.outcome,e.name),a=n&&n.length>0;return T.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":a,"aria-describedby":a?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,style:e.style,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function Ye(e){return T.createElement(Ke,{testid:"extension-input",name:e.name,defaultValue:i(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Je(e){var t,n,a;const[l,r]=N(e.defaultValue),o=w();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,T.createElement(M,null,T.createElement(q,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},T.createElement("option",null),T.createElement("option",null,"usual"),T.createElement("option",null,"official"),T.createElement("option",null,"temp"),T.createElement("option",null,"nickname"),T.createElement("option",null,"anonymous"),T.createElement("option",null,"old"),T.createElement("option",null,"maiden")),T.createElement(F,{placeholder:"Prefix",defaultValue:null===(t=null==l?void 0:l.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{prefix:e?e.split(" "):void 0}))}}),T.createElement(F,{placeholder:"Given",defaultValue:null===(n=null==l?void 0:l.given)||void 0===n?void 0:n.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{given:e?e.split(" "):void 0}))}}),T.createElement(F,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),T.createElement(F,{placeholder:"Suffix",defaultValue:null===(a=null==l?void 0:l.suffix)||void 0===a?void 0:a.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{suffix:e?e.split(" "):void 0}))}}))}function Xe(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(F,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),T.createElement(F,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function Ze(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(F,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),T.createElement(F,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function et(e){var t;const[n,a]=N(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(q,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},T.createElement("option",null),T.createElement("option",null,"<"),T.createElement("option",null,"<="),T.createElement("option",null,">="),T.createElement("option",null,">")),T.createElement(F,{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=>l(Object.assign(Object.assign({},n),{value:tt(e)}))}),T.createElement(F,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function tt(e){if(e)return parseFloat(e)}function nt(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(et,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),T.createElement(et,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function at(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(et,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),T.createElement(et,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function lt(e){const n=oe(e.value);if(!n)return null;const a=t(n);return e.link?T.createElement(le,{to:n},a):T.createElement("span",null,a)}function rt(e){const t=K(),n=oe(e.defaultValue),[a,l]=N(),r=w(e.resourceType);return r.current=e.resourceType,S((()=>{l(n)}),[n]),T.createElement(ae,{loadOptions:e=>t.search(r.current,"name="+encodeURIComponent(e)+"&_count=10").then((e=>e.entry.map((e=>e.resource)))),getId:e=>e.id,getIcon:e=>T.createElement(ie,{value:e}),getDisplay:e=>T.createElement(lt,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:a?[a]:void 0,className:e.className,placeholder:e.placeholder,onChange:t=>{var n;n=t.length>0?t[0]:void 0,l(n),e.onChange&&e.onChange(n)}})}function ot(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,l]=N(e.defaultValue),[r,o]=N(n);w().current=a;return w().current=r,T.createElement(M,null,t?T.createElement(q,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>T.createElement("option",{key:e,value:e},e)))):T.createElement(F,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),T.createElement(rt,{resourceType:r,name:e.name+"-id",defaultValue:a,onChange:t=>{var n;n=t?m(t):void 0,l(n),e.onChange&&e.onChange(n)}}))}function it(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=w();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,T.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},T.createElement("colgroup",null,T.createElement("col",{width:"90%"}),T.createElement("col",{width:"10%"})),T.createElement("tbody",null,n.map(((t,a)=>T.createElement("tr",{key:`${a}-${n.length}`},T.createElement("td",null,T.createElement(ct,{arrayElement:!0,property:e.property,name:e.name+"."+a,defaultValue:t,onChange:e=>{const t=[...l.current];t[a]=e,r(t)}})),T.createElement("td",{style:{textAlign:"right"}},T.createElement(H,{onClick:e=>{J(e);const t=[...l.current];t.splice(a,1),r(t)}},"Remove"))))),T.createElement("tr",null,T.createElement("td",null),T.createElement("td",{style:{textAlign:"right"}},T.createElement(H,{onClick:e=>{J(e);const t=[...l.current];t.push(void 0),r(t)}},"Add")))))}function ct(e){var t,n,a;const l=e.property,r=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code,o=e.name,i=e.defaultValue;if("*"===l.max&&!e.arrayElement)return"Attachment"===r?T.createElement(te,{name:o,defaultValue:i,onChange:e.onChange}):T.createElement(it,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?T.createElement(ut,Object.assign({elementDefinitionTypes:c},e)):T.createElement(st,Object.assign({elementDefinitionType:c[0]},e))}function ut(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[l,r]=N(n);return T.createElement(M,null,T.createElement(q,{style:{width:"200px"},defaultValue:null==l?void 0:l.code,onChange:e=>{r(t.find((t=>t.code===e)))}},t.map((e=>T.createElement("option",{key:e.code,value:e.code},e.code)))),T.createElement(st,Object.assign({},e,{elementDefinitionType:l,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",a(l.code)))}})))}function st(e){var t;const n=e.property,a=e.elementDefinitionType.code,l=e.name,r=e.defaultValue;switch(a){case u.SystemString:case u.canonical:case u.string:case u.time:case u.uri:case u.url:return T.createElement(F,{type:"text",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.date:return T.createElement(F,{type:"date",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.dateTime:case u.instant:return T.createElement(He,{type:"datetime-local",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.decimal:case u.integer:case u.positiveInt:case u.unsignedInt:return T.createElement(F,{type:"number",step:a===u.decimal?"any":1,name:l,testid:l,defaultValue:r,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case u.code:return T.createElement(_e,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.boolean:return T.createElement(Ie,{name:l,testid:l,defaultValue:!!r,onChange:t=>{e.onChange&&e.onChange(t)}});case u.markdown:return T.createElement(Ke,{name:l,testid:l,defaultValue:r,onChange:e.onChange});case u.Address:return T.createElement(U,{name:l,defaultValue:r,onChange:e.onChange});case u.Annotation:return T.createElement(Pe,{name:l,defaultValue:r,onChange:e.onChange});case u.Attachment:return T.createElement(ne,{name:l,defaultValue:r,onChange:e.onChange});case u.CodeableConcept:return T.createElement(Re,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.Coding:return T.createElement(Ue,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.ContactDetail:return T.createElement(ze,{name:l,defaultValue:r,onChange:e.onChange});case u.ContactPoint:return T.createElement(Qe,{name:l,defaultValue:r,onChange:e.onChange});case u.Extension:return T.createElement(Ye,{name:l,defaultValue:r,onChange:e.onChange});case u.HumanName:return T.createElement(Je,{name:l,defaultValue:r,onChange:e.onChange});case u.Identifier:return T.createElement(Xe,{name:l,defaultValue:r,onChange:e.onChange});case u.Period:return T.createElement(Ze,{name:l,defaultValue:r,onChange:e.onChange});case u.Quantity:return T.createElement(et,{name:l,defaultValue:r,onChange:e.onChange});case u.Range:return T.createElement(nt,{name:l,defaultValue:r,onChange:e.onChange});case u.Ratio:return T.createElement(at,{name:l,defaultValue:r,onChange:e.onChange});case u.Reference:return T.createElement(ot,{name:l,defaultValue:r,targetTypes:mt(n),onChange:e.onChange});default:return T.createElement(dt,{typeName:c(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:r,onChange:e.onChange,outcome:e.outcome})}}function mt(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 dt(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:{});function o(t){a(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=l.types[i];if(!c)return T.createElement("div",null,i," not implemented");const u={type:i,value:n};return T.createElement(T.Fragment,null,Object.entries(c.properties).map((t=>{const a=t[0];if("id"===a||ue.indexOf(a)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=Ae(u,a);return 1===l.type.length&&"boolean"===l.type[0].code?T.createElement(ce,{key:a,title:r(a),description:l.definition,htmlFor:a},T.createElement(ct,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(de(n,a,null!=l?l:a,t[1],e))}})):T.createElement(se,{key:a,title:r(a),description:l.definition,htmlFor:a,outcome:e.outcome},T.createElement(ct,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(de(n,a,null!=l?l:a,t[1],e))}}))})))}function pt(e){var t;return T.createElement("div",{className:"medplum-resource-badge"},T.createElement(ie,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),T.createElement(lt,{value:e.value,link:e.link}))}function vt(e){var t,n;const l=oe(e.value),r=oe(null===(t=null==l?void 0:l.specimen)||void 0===t?void 0:t[0]);if(!l)return null;let o="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.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 T.createElement("div",{className:"medplum-diagnostic-report"},T.createElement("h1",null,"Diagnostic Report"),T.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&T.createElement("dl",null,T.createElement("dt",null,"Subject"),T.createElement("dd",null,T.createElement(pt,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>T.createElement("dl",{key:e.reference},T.createElement("dt",null,"Interpreter"),T.createElement("dd",null,T.createElement(pt,{value:e,link:!0}))))),l.issued&&T.createElement("dl",null,T.createElement("dt",null,"Issued"),T.createElement("dd",null,T.createElement(be,{value:l.issued}))),l.status&&T.createElement("dl",null,T.createElement("dt",null,"Status"),T.createElement("dd",null,a(l.status)))),l.result&&T.createElement(ht,{value:l.result}),o&&T.createElement("pre",null,o.trim()))}function ht(e){var t;return T.createElement("table",{className:"medplum-table"},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Test"),T.createElement("th",null,"Value"),T.createElement("th",null,"Reference Range"),T.createElement("th",null,"Interpretation"))),T.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>T.createElement(Et,{key:"obs-"+t,value:e})))))}function Et(e){const t=oe(e.value);return t?T.createElement("tr",null,T.createElement("td",null,T.createElement(le,{to:t},T.createElement(fe,{value:t.code}))),T.createElement("td",null,T.createElement(ft,{value:t})),T.createElement("td",null,T.createElement(gt,{value:t.referenceRange})),T.createElement("td",null,t.interpretation&&t.interpretation.length>0&&T.createElement(fe,{value:t.interpretation[0]}))):null}function ft(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?T.createElement(Te,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?T.createElement(T.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?T.createElement(T.Fragment,null,n.component.map(((e,t)=>T.createElement(ft,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function gt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?T.createElement(we,{value:t}):null}function yt(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?bt(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&Ct(t,n);return t}function bt(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function Ct(e,t){e[t.name]=t.value}function kt(e){return T.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=yt(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function Ot(){return T.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},T.createElement("div",{className:"medplum-loading-container"},T.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},T.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function Tt(e){return T.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function Nt(e){const t=K(),[n,a]=N();if(S((()=>{t.requestSchema(e.original.resourceType).then(a)}),[t,e.original.resourceType]),!n)return null;const l=n.types[e.original.resourceType];return l?T.createElement("table",{className:"medplum-diff-table"},T.createElement("colgroup",null,T.createElement("col",{style:{width:"30%"}}),T.createElement("col",{style:{width:"35%"}}),T.createElement("col",{style:{width:"35%"}})),T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Property"),T.createElement("th",null,"Before"),T.createElement("th",null,"After"))),T.createElement("tbody",null,Object.entries(l.properties).map((t=>{const n=t[0];if("id"===n||"meta"===n)return null;const a=t[1],[l,o]=Ae(d(e.original),n),[c,u]=Ae(d(e.revised),n);return wt(l)&&wt(c)||i(l)===i(c)?null:T.createElement("tr",{key:n},T.createElement("td",null,r(n)),T.createElement("td",{className:"medplum-diff-removed"},T.createElement(De,{property:a,propertyType:o,value:l,ignoreMissingValues:!0})),T.createElement("td",{className:"medplum-diff-added"},T.createElement(De,{property:a,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 jt(e){const t=K(),n=oe(e.value),[a,l]=N();return S((()=>{n&&t.requestSchema(n.resourceType).then(l)}),[t,n]),a&&n?T.createElement(he,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function St(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return T.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},T.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class xt extends T.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?T.createElement("h1",null,"Something went wrong."):this.props.children}}function Vt(e){const t=w(null),n=P(),a=w();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=w();l.current=e,S((()=>{function n(n){var a,r;(null===(a=l.current)||void 0===a?void 0:a.visible)&&(null===(r=l.current)||void 0===r?void 0:r.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&e.onClose()}return document.addEventListener("click",n,!0),()=>document.removeEventListener("click",n,!0)}),[e]),S((()=>{e.visible&&n!==a.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"),T.createElement(T.Fragment,null,e.modal&&T.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),T.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function Dt(e){return T.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function At(e){var t,n,a;const[l,r]=N(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return T.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},T.createElement("div",{className:"medplum-timeline-item-header"},T.createElement("div",{className:"medplum-timeline-item-avatar"},T.createElement(ie,{value:o,link:!0,size:"medium"})),T.createElement("div",{className:"medplum-timeline-item-title"},T.createElement(lt,{value:o,link:!0}),T.createElement("div",{className:"medplum-timeline-item-subtitle"},T.createElement(le,{to:e.resource},T.createElement(be,{value:null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated})),T.createElement("span",null,"·"),T.createElement(le,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&T.createElement("div",{className:"medplum-timeline-item-actions"},T.createElement("a",{href:"#","aria-label":`Actions for ${p(e.resource)}`,onClick:e=>{J(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},T.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},T.createElement("g",{transform:"translate(-446 -350)"},T.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"})))))),T.createElement(xt,null,e.padding&&T.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&T.createElement(T.Fragment,null,e.children)),e.socialEnabled&&T.createElement("div",{className:"medplum-timeline-item-footer"},T.createElement(H,{borderless:!0},"Like"),T.createElement(H,{borderless:!0},"Comment")),e.popupMenuItems&&T.createElement(Vt,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function Pt(e){e.sort(It)}function It(e,t){const n=Rt(e),a=Rt(t);return n>a?1:n<a?-1:Ft(e)-Ft(t)}function Rt(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function Ft(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 Lt(e){const t=A(),n=K(),a=n.getProfile(),l=w(null),r=oe(e.value),[o,i]=N(),[c,u]=N([]),s=e.buildSearchRequests,m=w(c);m.current=c;const d=V((()=>{if(!r)return u([]),void i({});n.executeBatch(s(r)).then(p)}),[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)t.push(n.resource)}Pt(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];Pt(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function E(e){h(e,"stat").then(d)}function f(e){h(e,"routine").then(d)}function g(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 S((()=>{d()}),[d]),r&&o?T.createElement(Dt,null,e.createCommunication&&T.createElement("article",{className:"medplum-timeline-item"},T.createElement("div",{className:"medplum-timeline-item-header"},T.createElement(kt,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,a,o)).then((e=>{v([e])}));const i=l.current;i&&(i.value="",i.focus())}},T.createElement(F,{name:"text",testid:"timeline-input",inputRef:l}),T.createElement(H,{type:"submit"},"Comment"),T.createElement(ee,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,a,t)).then((e=>{v([e])}))}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return T.createElement(qt,{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 T.createElement(Ut,{key:n,resource:e,onDetails:g});case"Communication":return T.createElement($t,{key:n,resource:e,onPin:"stat"!==e.priority?E:void 0,onUnpin:"stat"===e.priority?f:void 0,onDetails:g,onEdit:y,onDelete:b});case"DiagnosticReport":return T.createElement(Qt,{key:n,resource:e,onDetails:g,onEdit:y,onDelete:b});case"Media":return T.createElement(_t,{key:n,resource:e,onDetails:g,onEdit:y,onDelete:b});default:return T.createElement(At,{key:n,resource:e,padding:!0},T.createElement(jt,{value:e,ignoreMissingValues:!0}))}}))):T.createElement(Ot,null)}function Mt(e){return T.createElement(T.Fragment,null,e.onPin&&T.createElement(Tt,{onClick:()=>e.onPin(e.resource),label:`Pin ${p(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Tt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${p(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Tt,{onClick:()=>e.onDetails(e.resource),label:`Details ${p(e.resource)}`},"Details"),e.onEdit&&T.createElement(Tt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${p(e.resource)}`},"Edit"),e.onDelete&&T.createElement(Tt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${p(e.resource)}`},"Delete"))}function qt(e){const t=function(e,t){const n=e.entry,a=n.findIndex((e=>{var n,a,l;return(null===(a=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===a?void 0:a.versionId)===(null===(l=t.meta)||void 0===l?void 0:l.versionId)}));if(a>=n.length-1)return;return n[a+1].resource}(e.history,e.resource);return t?T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(Nt,{original:t,revised:e.resource})):T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement("h3",null,"Created"),T.createElement(jt,{value:e.resource,ignoreMissingValues:!0}))}function $t(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return T.createElement(At,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.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 _t(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 T.createElement(At,{resource:e.resource,padding:!!a,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(Q,{value:e.resource.content}))}function Ut(e){return T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(St,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function Qt(e){return T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(vt,{value:e.resource}))}function zt(e){return T.createElement(Lt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${p(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${p(e)}&_sort=-_lastUpdated`}}]})})}function Ht(e){return T.createElement("main",{className:"medplum-document"},T.createElement("article",{style:{maxWidth:e.width}},e.children))}function Bt(e){return T.createElement(Lt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${p(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${p(e)}`}},{request:{method:"GET",url:`Media?encounter=${p(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:m(e),subject:e.subject,sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:m(e),subject:e.subject,operator:m(t),issued:(new Date).toISOString(),content:n})})}function Wt(e){let t;try{t=v(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 T.createElement(De,{value:t[0]||"",propertyType:e.propertyType})}function Gt(e,t,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===n)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const l=e.types[t],r=l.properties[n],o=null===(a=l.searchParams)||void 0===a?void 0:a[n.toLowerCase()];if(r&&o)return{name:n,elementDefinition:r,searchParams:[o]};if(r){let e;if(l.searchParams){const a=`${t}.${n.replaceAll("[x]","")}`;e=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===e.length&&(e=void 0)}return{name:n,elementDefinition:r,searchParams:e}}if(o){return{name:n,elementDefinition:h(e,t,o).elementDefinition,searchParams:[o]}}return{name:n}}function Kt(e){const[t,n]=N(100),[a,l]=N(100);if(!e.visible)return null;return T.createElement(T.Fragment,null,T.createElement("div",{className:"modal-dialog-bg"}),T.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},T.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){J(e);const r=e.clientX-t,o=e.clientY-a;function i(e){J(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){J(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},T.createElement("span",{className:"modal-dialog-title-text"},e.title),T.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},T.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},T.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),T.createElement("div",{className:"modal-dialog-content"},e.children),T.createElement("div",{className:"modal-dialog-buttons"},T.createElement(H,{testid:"dialog-ok",onClick:e.onOk},"OK"),T.createElement(H,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Yt={string:[E.EQUALS,E.NOT,E.CONTAINS,E.EXACT],fulltext:[E.EQUALS,E.NOT,E.CONTAINS,E.EXACT],token:[E.EQUALS,E.NOT],reference:[E.EQUALS,E.NOT],numeric:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS],quantity:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS],date:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS,E.STARTS_AFTER,E.ENDS_BEFORE,E.APPROXIMATELY],datetime:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS,E.STARTS_AFTER,E.ENDS_BEFORE,E.APPROXIMATELY]},Jt={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 Xt(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function Zt(e){return Xt(e,[])}function en(e,t){return Xt(e,(e.filters||[]).filter((e=>e.code!==t)))}function tn(e,t,n,a,l){l&&(e=en(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),Xt(e,r)}function nn(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 an(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 ln(e,t){return cn(e,t,-1)}function rn(e,t){return cn(e,t,0)}function on(e,t){return cn(e,t,1)}function cn(e,t,n){const a=new Date;a.setDate(a.getDate()+n),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setDate(l.getDate()+1),l.setTime(l.getTime()-1),En(e,t,a,l)}function un(e,t){return dn(e,t,-1)}function sn(e,t){return dn(e,t,0)}function mn(e,t){return dn(e,t,1)}function dn(e,t,n){const a=new Date;a.setMonth(a.getMonth()+n),a.setDate(1),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setMonth(l.getMonth()+1),l.setDate(1),l.setHours(0,0,0,0),l.setTime(l.getTime()-1),En(e,t,a,l)}function pn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return En(e,t,n,new Date)}function vn(e,t,n){return En(e,t,n,n)}function hn(e,t,n,a){return fn(e=en(e,t),t,n,a)}function En(e,t,n,a){return e=fn(e=en(e,t),t,E.GREATER_THAN_OR_EQUALS,n),e=fn(e,t,E.LESS_THAN_OR_EQUALS,a)}function fn(e,t,n,a){return tn(e,t,n,a.toISOString())}function gn(e,t,n=!0){return tn(e,t,E.MISSING,n.toString())}function yn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function bn(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Cn(e,t){var n,a;const l=null!==(n=e.count)&&void 0!==n?n:20,r=(null!==(a=e.offset)&&void 0!==a?a:0)+t*l;return bn(e,Math.max(r,0))}function kn(e,t,n){return t===Tn(e)&&void 0!==n&&n===Nn(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function On(e,t){let n=!1;return Tn(e)===t&&(n=!Nn(e)),kn(e,t,n)}function Tn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Nn(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function wn(e){return Yt[e.type]}function jn(e){var t;return null!==(t=Jt[e])&&void 0!==t?t:""}function Sn(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(a).join(" "))}function xn(e,t){var n,a;const l=t.name;return"id"===l?e.id:"meta.versionId"===l?null===(n=e.meta)||void 0===n?void 0:n.versionId:"_lastUpdated"===l?T.createElement(be,{value: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,l;const r=(null===(l=null===(a=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===a?void 0:a.pop())||void 0===l?void 0:l.replaceAll("[x]",""))||"",[o,i]=Ae({type:e.resourceType,value:e},r);if(!o)return null;return T.createElement(De,{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=f(t.expression,[{type:e.resourceType,value:e}]);if(!a||0===a.length)return null;if(n)return T.createElement(De,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return T.createElement(T.Fragment,null,a.map(((e,t)=>T.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Vn(e){var t;const[n,a]=N({search:JSON.parse(i(e.search))}),l=w(null),r=w(null);function o(){var e,t;const r=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=l.current)||void 0===t?void 0:t.value;if(o){const e=[...r,o];a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function c(){var e,t;const l=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=[...l];e.splice(e.indexOf(o),1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(S((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const s=e.search.resourceType,m=e.schema.types[s],d=null!==(t=n.search.fields)&&void 0!==t?t:[],p=function(e){const t=[],n=new Set,a=new Set;for(const l of Object.keys(e.properties))t.push(l),n.add(l.toLowerCase()),a.add(Sn(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Sn(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Sn(l)))}return t}(m).filter((e=>!(null==d?void 0:d.includes(e)))).sort();return T.createElement(Kt,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},T.createElement("div",null,T.createElement("table",{style:{margin:"auto"}},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",{colSpan:2,align:"center"},"Available"),T.createElement("th",{colSpan:2,align:"center"},"Selected"))),T.createElement("tbody",null,T.createElement("tr",null,T.createElement("td",{colSpan:2,align:"center"},T.createElement("select",{ref:l,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&o()}(e),onDoubleClick:()=>{o()},"data-testid":"available"},p.map((e=>T.createElement("option",{key:e,value:e},Sn(e)))))),T.createElement("td",{colSpan:2,align:"center"},T.createElement("select",{ref:r,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"selected"},d.map((e=>T.createElement("option",{key:e,value:e},Sn(e)))))))),T.createElement("tfoot",null,T.createElement("tr",null,T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:o},"Add")),T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:c},"Remove")),T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:function(){var e,t;const l=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=[...l],t=e.indexOf(o);u(e,t,t-1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:function(){var e,t;const l=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=[...l],t=e.indexOf(o);u(e,t,t+1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function Dn(e){var t,n;const a=null===(n=null===(t=K().getSchema().types[e.resourceType])||void 0===t?void 0:t.searchParams)||void 0===n?void 0:n[e.filter.code],l=e.filter;return"reference"===(null==a?void 0:a.type)?T.createElement(lt,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?T.createElement(be,{value:l.value}):T.createElement(T.Fragment,null,l.value)}function An(e){var t;const n="filter-value";switch(h(e.schema,e.resourceType,e.searchParam).type){case g.REFERENCE:return T.createElement(ot,{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 g.BOOLEAN:return T.createElement(Ie,{name:n,testid:n,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case g.DATE:return T.createElement(F,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case g.DATETIME:return T.createElement(He,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case g.NUMBER:return T.createElement(F,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case g.QUANTITY:return T.createElement(et,{name:n,defaultValue:Pn(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return T.createElement(F,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function Pn(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function In(e){const[t,n]=N(JSON.parse(i(e.search))),[a,l]=N(-1),r=w(t);if(r.current=t,S((()=>{n(JSON.parse(i(e.search)))}),[e.search]),!e.visible)return null;const o=e.schema,c=e.search.resourceType,u=o.types[c].searchParams,s=t.filters||[];return T.createElement(Kt,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(r.current),onCancel:e.onCancel},T.createElement("div",{className:"medplum-filter-editor"},T.createElement("table",{className:"medplum-filter-editor-table"},T.createElement("colgroup",null,T.createElement("col",{style:{width:200}}),T.createElement("col",{style:{width:200}}),T.createElement("col",{style:{width:380}}),T.createElement("col",{style:{width:120}})),T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Field"),T.createElement("th",null,"Operation"),T.createElement("th",null,"Value"),T.createElement("th",null,"Actions"))),T.createElement("tbody",null,s.map(((e,t)=>t===a?T.createElement(Fn,{key:`filter-${t}-${s.length}-input`,schema:o,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const a=[...s];a[t]=e,n(Xt(r.current,a)),l(-1)},onCancel:()=>l(-1)}):T.createElement(Rn,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>l(t),onDelete:()=>n(an(r.current,t))}))),T.createElement(Fn,{schema:o,resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(tn(r.current,e.code,e.operator,e.value))}})))))}function Rn(e){const{filter:t}=e;return T.createElement("tr",null,T.createElement("td",null,Sn(t.code)),T.createElement("td",null,jn(t.operator)),T.createElement("td",null,T.createElement(Dn,{resourceType:e.resourceType,filter:t})),T.createElement("td",null,T.createElement(H,{size:"small",onClick:e.onEdit},"Edit"),T.createElement(H,{size:"small",onClick:e.onDelete},"Delete")))}function Fn(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=w(n);l.current=n;const r=e.searchParams[n.code],o=r&&wn(r);return T.createElement("tr",null,T.createElement("td",null,T.createElement(q,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},T.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>T.createElement("option",{key:e,value:e},Sn(e)))))),T.createElement("td",null,o&&T.createElement(q,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},T.createElement("option",{value:""}),o.map((e=>T.createElement("option",{key:e,value:e},jn(e)))))),T.createElement("td",null,r&&n.operator&&T.createElement(An,{schema:e.schema,resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),T.createElement("td",null,n.code&&n.operator&&n.value&&T.createElement(H,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&T.createElement(H,{size:"small",onClick:e.onCancel},"Cancel")))}function Ln(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 l(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return T.createElement(Kt,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},T.createElement("div",{style:{width:500}},T.createElement(kt,{onSubmit:l},T.createElement(An,{schema:e.schema,resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function Mn(){return T.createElement("div",{className:"medplum-menu-separator"})}function qn(e){const[t,n]=N(!1),[a,l]=N(!1),[r,o]=N(void 0),i=w(null),c=w(!1);c.current=t;const u=w(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,S((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),T.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,T.createElement("span",{className:"medplum-submenu-arrow"},"►"),T.createElement(Vt,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function $n(e){if(!e.searchParams)return null;function t(t,n){l(kn(e.search,t.code,n))}function n(t){l(en(e.search,t.code))}function a(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})}function l(t){e.onChange(t)}const r={left:e.x,right:e.x,top:e.y,bottom:e.y};return 1===e.searchParams.length?T.createElement(Vt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},T.createElement(_n,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):T.createElement(Vt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},e.searchParams.map((r=>T.createElement(qn,{key:r.code,title:Sn(r.code)},T.createElement(_n,{search:e.search,searchParam:r,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function _n(e){switch(e.searchParam.type){case"date":return T.createElement(Un,Object.assign({},e));case"number":case"quantity":return T.createElement(Qn,Object.assign({},e));case"reference":return T.createElement(zn,Object.assign({},e));case"string":case"token":case"uri":return T.createElement(Hn,Object.assign({},e));default:return T.createElement(T.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Un(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),T.createElement(Tt,{onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT_EQUALS)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.ENDS_BEFORE)},"Before..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.STARTS_AFTER)},"After..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Between..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(on(e.search,n))},"Tomorrow"),T.createElement(Tt,{onClick:()=>e.onChange(rn(e.search,n))},"Today"),T.createElement(Tt,{onClick:()=>e.onChange(ln(e.search,n))},"Yesterday"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(mn(e.search,n))},"Next Month"),T.createElement(Tt,{onClick:()=>e.onChange(sn(e.search,n))},"This Month"),T.createElement(Tt,{onClick:()=>e.onChange(un(e.search,n))},"Last Month"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(pn(e.search,n))},"Year to date"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function Qn(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),T.createElement(Tt,{onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT_EQUALS)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.GREATER_THAN)},"Greater than..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.LESS_THAN)},"Less than..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function zn(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function Hn(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onSort(t,!1)},"Sort A to Z"),T.createElement(Tt,{onClick:()=>e.onSort(t,!0)},"Sort Z to A"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.CONTAINS)},"Contains..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Does not contain..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function Bn(e){return T.createElement("div",{className:"medplum-title-bar"},e.children)}class Wn extends Event{constructor(e){super("change"),this.definition=e}}class Gn extends Event{constructor(e){super("load"),this.response=e}}class Kn extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function Yn(e){var t,n,a,l;const r=K(),[o,i]=N(),[c,u]=N(),{search:s,onLoad:m}=e,[d,p]=N({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=w(d);function h(t){e.onChange&&e.onChange(new Wn(t))}function E(t,n){X(t.target)||(J(t),1!==t.button&&e.onClick&&e.onClick(new Kn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Kn(n,t)))}v.current=d,S((()=>{u(void 0),r.search(s.resourceType,y(Object.assign(Object.assign({},s),{total:"accurate"}))).then((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:e})),m&&m(new Gn(e))})).catch((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),u(e)}))}),[r,s,m]),S((()=>{r.requestSchema(e.search.resourceType).then((e=>{i(Object.assign({},e))}))}),[r,e.search.resourceType]);if(!(null===(t=null==o?void 0:o.types)||void 0===t?void 0:t[e.search.resourceType]))return T.createElement(Ot,null);const f=e.checkboxesEnabled,g=function(e,t){const n=t.resourceType,a=[];for(const l of t.fields||["id","_lastUpdated"])a.push(Gt(e,n,l));return a}(o,s),k=s.resourceType,O=d.searchResponse,j=null==O?void 0:O.entry,x=null==j?void 0:j.map((e=>e.resource)),V=null===(a=null===(n=e.userConfig)||void 0===n?void 0:n.search)||void 0===a?void 0:a.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(k)}));return T.createElement("div",{className:"medplum-search-control",onContextMenu:e=>J(e),"data-testid":"search-control"},!e.hideToolbar&&T.createElement(Bn,null,T.createElement("div",null,T.createElement("h1",null,T.createElement("a",{href:`https://www.hl7.org/fhir/${k.toLowerCase()}.html`,target:"_blank",rel:"noopener"},k)),V&&T.createElement(q,{testid:"saved-search-select",style:{width:80},onChange:e=>{h(b(e))}},T.createElement("option",null),V.map(((e,t)=>T.createElement("option",{key:`${t}-${V.length}`,value:e.criteria},e.name)))),T.createElement(H,{testid:"fields-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),T.createElement(H,{testid:"filters-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&T.createElement(H,{size:"small",onClick:e.onNew},"New..."),e.onExport&&T.createElement(H,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&T.createElement(H,{size:"small",onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),e.onBulk&&T.createElement(H,{size:"small",onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),O&&T.createElement("div",null,T.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,O.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,O.total)," of"," ",null===(l=O.total)||void 0===l?void 0:l.toLocaleString()),T.createElement(H,{testid:"prev-page-button",size:"small",onClick:()=>h(Cn(s,-1))},"<<"),T.createElement(H,{testid:"next-page-button",size:"small",onClick:()=>h(Cn(s,1))},">>"))),T.createElement("table",null,T.createElement("thead",null,T.createElement("tr",null,f&&T.createElement("th",{className:"medplum-search-icon-cell"},T.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={},l=null===(t=v.current)||void 0===t?void 0:t.searchResponse;n&&(null==l?void 0:l.entry)&&l.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)})),g.map((e=>T.createElement("th",{key:e.name,onClick:t=>function(e,t){p(Object.assign(Object.assign({},v.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},Sn(e.name),e.searchParams&&T.createElement(Zn,null))))),!e.hideFilters&&T.createElement("tr",null,f&&T.createElement("th",{className:"filters medplum-search-icon-cell"}),g.map((t=>T.createElement("th",{key:t.name,className:"filters"},t.searchParams&&T.createElement(Xn,{resourceType:k,searchParams:t.searchParams,filters:e.search.filters})))))),T.createElement("tbody",null,null==x?void 0:x.map((e=>e&&T.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>E(t,e),onAuxClick:t=>E(t,e)},f&&T.createElement("td",{className:"medplum-search-icon-cell"},T.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)})),g.map((t=>T.createElement("td",{key:t.name},xn(e,t))))))))),0===(null==x?void 0:x.length)&&T.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),c&&T.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},T.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),T.createElement($n,{schema:o,search:e.search,visible:d.popupVisible,x:d.popupX,y:d.popupY,searchParams:d.popupSearchParams,onPrompt:(e,t)=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{h(e),p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))}}),T.createElement(Vn,{schema:o,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}))}}),T.createElement(In,{schema:o,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}))}}),T.createElement(Ln,{visible:v.current.filterDialogVisible,title:"Input",schema:o,resourceType:k,searchParam:d.filterDialogSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(tn(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 Jn=T.memo(Yn);function Xn(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?T.createElement("span",null,"no filters"):T.createElement(T.Fragment,null,n.map(((t,a)=>T.createElement("div",{key:`filter-${a}-${n.length}`},jn(t.operator)," ",T.createElement(Dn,{resourceType:e.resourceType,filter:t})))))}function Zn(){return T.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},T.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function ea(e){var t,n,a,l,r;const o=K(),[i,c]=N(),[u,s]=N(),{query:m,fields:d}=e,[p,v]=N(),[h,E]=N({}),f=w();f.current=p;const g=w({});function y(t,n){X(t.target)||(J(t),1!==t.button&&e.onClick&&e.onClick(new Kn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Kn(n,t)))}g.current=h,S((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),S((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))}))}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return T.createElement(Ot,null);const b=e.checkboxesEnabled;return T.createElement("div",{className:"medplum-search-control",onContextMenu:e=>J(e),"data-testid":"search-control"},T.createElement("table",null,T.createElement("thead",null,T.createElement("tr",null,b&&T.createElement("th",{className:"medplum-search-icon-cell"},T.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=f.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!g.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const a=e.target.checked,l={},r=null===(n=null===(t=f.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;a&&r&&r.forEach((e=>{(null==e?void 0:e.id)&&(l[e.id]=!0)})),E(l)}(e)})),d.map((e=>T.createElement("th",{key:e.name},e.name))))),T.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&&T.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&T.createElement("td",{className:"medplum-search-icon-cell"},T.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({},g.current);n?a[t]=!0:delete a[t],E(a)}(t,e.id)})),d.map((t=>T.createElement("td",{key:t.name},T.createElement(Wt,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(r=null===(l=null==p?void 0:p.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.length)&&T.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&T.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},T.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&T.createElement(H,{size:"small",onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}const ta=T.memo(ea);function na(e){return T.createElement("div",{className:"medplum-footer"},e.children)}function aa(e,t,n,a){return new(n||(n=Promise))((function(l,r){function o(e){try{c(a.next(e))}catch(e){r(e)}}function i(e){try{c(a.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?l(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 la(e){const t=K();return T.createElement(ae,{loadOptions:(e,n)=>aa(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)=>ra(n,t)-ra(e,t)))}(function(e){const t=new Set,n=[];for(const a of e)t.has(a.id)||(t.add(a.id),n.push(a));return n}(n),t).slice(0,5)}(yield t.graphql(function(e){const t=JSON.stringify(e);if(k(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=>T.createElement(ie,{value:e}),getDisplay:e=>T.createElement(lt,{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 ra(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,oa(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,oa(o(a),t));return n}function oa(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function ia(e){var t,n,a,l,r,o;const i=A(),c=P(),u=G(),s=u.medplum,m=s.getLogins(),[d,v]=N(!1),[h,E]=N(!1);return T.createElement(T.Fragment,null,T.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},T.createElement("div",null,T.createElement(le,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>E(!h)},T.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},T.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"}))),T.createElement(le,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),u.profile&&T.createElement(la,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&T.createElement("div",{className:"medplum-nav-menu-container"},T.createElement(le,{testid:"header-profile-menu-button",onClick:()=>v(!0)},T.createElement(ie,{size:"small",color:"#f68d42",value:u.profile})),T.createElement(Vt,{visible:d,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>v(!1)},T.createElement("div",{className:"medplum-nav-menu"},T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement(ie,{size:"large",value:u.profile})),T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},T.createElement(Ce,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),T.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(l=null===(a=s.getActiveLogin())||void 0===a?void 0:a.project)||void 0===l?void 0:l.display),T.createElement(H,{testid:"header-profile-link",onClick:()=>{v(!1),e.onProfile&&e.onProfile()}},"Manage your account")),m.length>1&&T.createElement("div",null,T.createElement("hr",null),m.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==p(u.profile)&&T.createElement("div",{className:"medplum-nav-menu-profile",key:null===(n=e.profile)||void 0===n?void 0:n.reference,onClick:()=>{s.setActiveLogin(e),v(!1),window.location.reload()}},T.createElement("div",{className:"medplum-nav-menu-profile-icon"},T.createElement(ie,null)),T.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,T.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),T.createElement("hr",null),T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement(H,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),T.createElement("hr",null),T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement(H,{testid:"header-signout-button",onClick:()=>{v(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),T.createElement("hr",null),T.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},T.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),T.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),T.createElement(Vt,{modal:!0,autoClose:!0,visible:h,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>E(!1)},null===(o=null===(r=e.config)||void 0===r?void 0:r.menu)||void 0===o?void 0:o.map(((t,n)=>{var a,l,r;return T.createElement(T.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},T.createElement("h5",null,t.title),T.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>T.createElement("li",{key:e.target},T.createElement(le,{to:e.target},e.name))))))})),T.createElement("h5",null,"Settings"),T.createElement("ul",null,T.createElement("li",null,T.createElement(le,{to:u.profile},"Profile")),T.createElement("li",null,T.createElement(le,{to:"/changepassword"},"Change password")))))}function ca(e){return T.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},T.createElement("title",null,"Medplum Logo"),T.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),T.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"}),T.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"}),T.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),T.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}const ua=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function sa(e){return T.createElement(Lt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:ua.map((t=>({request:{method:"GET",url:t.replaceAll("$",p(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:m(e),sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:m(e),operator:m(t),issued:(new Date).toISOString(),content:n})})}function ma(e){const t=oe(e.value),[n,a]=N(),l=w();if(l.current=n,S((()=>{var e;a((e=null!=t?t:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:ga(e.action)})))}),[t]),!n)return null;function r(e,t){a(Object.assign(Object.assign({},l.current),{[e]:t}))}return T.createElement("div",{className:"medplum-questionnaire-builder"},T.createElement(kt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},T.createElement(se,{title:"Plan Title",description:"The display name of the 'Plan', something that can be ordered.",htmlFor:"title"},T.createElement(F,{defaultValue:n.title,onChange:e=>r("title",e)})),T.createElement(da,{actions:n.action||[],onChange:e=>r("action",e)}),T.createElement(H,{type:"submit",size:"large"},"Save")))}function da(e){const t=w();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,T.createElement("div",{className:"section"},e.actions.map((a=>T.createElement("div",{key:a.id},T.createElement(pa,{action:a,onChange:n,onRemove:()=>{return n=a,void e.onChange(t.current.filter((e=>e!==n)));var n}})))),T.createElement("div",{className:"bottom-actions"},T.createElement("a",{href:"#",onClick:n=>{var a;n.preventDefault(),a={id:fa()},e.onChange([...t.current,a])}},"Add action")))}function pa(e){const{action:t}=e,[n,a]=N(function(e){var t;if(null===(t=e.definitionCanonical)||void 0===t?void 0:t.startsWith("Questionnaire/"))return"questionnaire";return}(t)),l=w();function r(t,n){e.onChange(Object.assign(Object.assign({},l.current),{[t]:n}))}return l.current=e.action,T.createElement("div",{className:"section"},T.createElement(se,{title:"Action Title",description:"The name of the action, an operational task to be completed.",htmlFor:`actionTitle-${t.id}`},T.createElement(F,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>r("title",e)})),T.createElement(se,{title:"Action Type",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},T.createElement(q,{name:`actionType-${t.id}`,defaultValue:n,onChange:a},T.createElement("option",null),T.createElement("option",{value:"appointment"},"Appointment"),T.createElement("option",{value:"documentation"},"Documentation"),T.createElement("option",{value:"lab"},"Lab"),T.createElement("option",{value:"questionnaire"},"Questionnaire"),T.createElement("option",{value:"shipping"},"Shipping"),T.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&T.createElement(da,{actions:t.action,onChange:e=>r("action",e)}),(()=>{switch(n){case"appointment":return T.createElement("div",null,"Appointment details");case"documentation":return T.createElement("div",null,"Documentation details");case"lab":return T.createElement(va,{action:t,onChange:e.onChange});case"questionnaire":return T.createElement(ha,{action:t,onChange:e.onChange});case"shipping":return T.createElement("div",null,"Shipping details");case"task":return T.createElement("div",null,"Task details");default:return null}})(),T.createElement("div",{className:"bottom-actions"},T.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}function va(e){return T.createElement(se,{title:"Lab Details",description:"Choose observations definitions",htmlFor:e.action.id},T.createElement("a",{href:"#",onClick:()=>e.onChange(e.action)},"Add"))}function ha(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith("Questionnaire/"))?{reference:n}:void 0;return T.createElement(se,{title:"Questionnaire",description:"Choose questionnaire",htmlFor:t},T.createElement(rt,{name:t,resourceType:"Questionnaire",defaultValue:a,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:p(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}let Ea=1;function fa(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Ea=Math.max(Ea,t+1))}return e}return"id-"+Ea++}function ga(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:fa(e.id),action:ga(e.action)})))}var ya;function ba(e,t){return Object.assign(Object.assign({},e),{item:Ca(e.item,t)})}function Ca(e,t){if(e)return e.map((e=>function(e,t){const{linkId:n,type:a}=e;if(!n||!a)return e;if("group"===a)return Object.assign(Object.assign({},e),{item:Ca(e.item,t)});const l=t[n];if(!l)return e;let r;switch(a){case u.boolean:r={valueBoolean:"true"===l};break;case u.code:case u.Coding:r={valueCoding:{code:l}};break;case u.date:r={valueDate:l};break;case u.dateTime:case u.instant:r={valueDateTime:l};break;case u.decimal:r={valueDecimal:parseFloat(l)};break;case u.integer:case u.positiveInt:case u.unsignedInt:r={valueInteger:parseInt(l)};break;case u.SystemString:case u.string:case u.markdown:r={valueString:l};break;case u.time:r={valueTime:l};break;case u.uri:case u.url:r={valueUri:l};break;case u.canonical:case u.Reference:r={valueReference:{reference:l}}}if(!r)return e;return Object.assign(Object.assign({},e),{initial:[r]})}(e,t)))}function ka(e){return"choice"===e.type||"open-choice"===e.type}function Oa(e){const t=K(),n=t.getProfile(),[a,l]=N(),r=oe(e.questionnaire),[o,i]=N();return S((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),S((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:p(e),item:Sa(e.item)}}(r):void 0)}),[r]),a&&r?T.createElement(kt,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:p(r),subject:e.subject,source:m(n),authored:(new Date).toISOString()}))}},r.title&&T.createElement("h1",null,r.title),r.item&&T.createElement(Ta,{items:r.item,onChange:function(e){i({resourceType:"QuestionnaireResponse",item:e})}}),T.createElement(H,{type:"submit",size:"large"},"OK")):null}function Ta(e){const[t,n]=N(Sa(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return T.createElement(T.Fragment,null,e.items.map(((e,t)=>{if(e.type===ya.display)return T.createElement("p",{key:e.linkId},e.text);if(e.type===ya.group)return T.createElement(Na,{key:e.linkId,item:e,onChange:e=>a(t,e)});if(e.type===ya.boolean){const n=e.initial&&e.initial.length>0?e.initial[0]:void 0;return T.createElement(ce,{key:e.linkId,title:e.text,htmlFor:e.linkId},T.createElement(Ie,{name:e.linkId,defaultValue:null==n?void 0:n.valueBoolean,onChange:n=>a(t,{linkId:e.linkId,answer:[{valueBoolean:n}]})}))}return T.createElement(se,{key:e.linkId,htmlFor:e.linkId,title:e.text||""},T.createElement(Na,{item:e,onChange:e=>a(t,e)}))})))}function Na(e){const t=e.item,n=t.type;if(!n)return null;const a=t.linkId;if(!a)return null;const l=t.initial&&t.initial.length>0?t.initial[0]:void 0;function r(n){e.onChange({linkId:t.linkId,answer:[n]})}switch(n){case ya.group:return T.createElement("div",null,T.createElement("h3",null,t.text),t.item&&T.createElement(Ta,{items:t.item,onChange:function(n){e.onChange({linkId:t.linkId,item:n})}}));case ya.boolean:return T.createElement(Ie,{name:a,defaultValue:null==l?void 0:l.valueBoolean,onChange:e=>r({valueBoolean:e})});case ya.decimal:return T.createElement(F,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>r({valueDecimal:parseFloat(e)})});case ya.integer:return T.createElement(F,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>r({valueInteger:parseInt(e)})});case ya.date:return T.createElement(F,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>r({valueDate:e})});case ya.dateTime:return T.createElement(He,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>r({valueDateTime:e})});case ya.time:return T.createElement(F,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>r({valueTime:e})});case ya.string:return T.createElement(F,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case ya.text:return T.createElement(Ke,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case ya.url:return T.createElement(F,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>r({valueUri:e})});case ya.attachment:return T.createElement(ne,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>r({valueAttachment:e})});case ya.reference:return T.createElement(ot,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>r({valueReference:e})});case ya.quantity:return T.createElement(et,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>r({valueQuantity:e})});case ya.choice:case ya.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)?T.createElement(wa,{name:a,item:t,initial:l,onChangeAnswer:r}):T.createElement(ja,{name:a,item:t,initial:l,onChangeAnswer:r})}return null}function wa(e){const{name:t,item:n,initial:r}=e,o=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],c=s({type:"QuestionnaireItemInitial",value:r},"value");return T.createElement("select",{id:t,name:t,className:"medplum-select",onChange:t=>{const l=t.currentTarget.selectedIndex;if(0===l)return void e.onChangeAnswer({});const r=n.answerOption[l-1],o=s({type:"QuestionnaireItemAnswerOption",value:r},"value"),i="value"+a(o.type);e.onChangeAnswer({[i]:o.value})}},T.createElement("option",null),n.answerOption&&n.answerOption.map(((e,n)=>{const a=s({type:"QuestionnaireItemAnswerOption",value:e},"value"),l=`${t}-option-${n}`;return T.createElement("option",{key:l,value:a.value,selected:c&&i(a)===i(c)},T.createElement(De,{property:o,propertyType:a.type,value:a.value}))})))}function ja(e){const{name:t,item:n,initial:r,onChangeAnswer:o}=e,c=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=s({type:"QuestionnaireItemInitial",value:r},"value");return T.createElement(T.Fragment,null,n.answerOption&&n.answerOption.map(((e,n)=>{const l=s({type:"QuestionnaireItemAnswerOption",value:e},"value"),r="value"+a(l.type),m=`${t}-option-${n}`;return T.createElement("div",{key:m,className:"medplum-questionnaire-option-row"},T.createElement("div",{className:"medplum-questionnaire-option-checkbox"},T.createElement("input",{type:"radio",id:m,name:t,value:l.value,defaultChecked:u&&i(l)===i(u),onChange:()=>o({[r]:l.value})})),T.createElement("div",null,T.createElement("label",{htmlFor:m},T.createElement(De,{property:c,propertyType:l.type,value:l.value}))))})))}function Sa(e){var t;return null!==(t=null==e?void 0:e.map(xa))&&void 0!==t?t:[]}function xa(e){var t,n;return{linkId:e.linkId,item:Sa(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Va))&&void 0!==n?n:[]}}function Va(e){return Object.assign({},e)}function Da(e){const t=K(),n=oe(e.questionnaire),[a,l]=N(),[r,o]=N(),[i,c]=N(),[u,s]=N();function m(){s(void 0)}function d(){c(void 0)}return S((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),S((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||La(),item:Ma(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?T.createElement("div",{className:"medplum-questionnaire-builder"},T.createElement(kt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},T.createElement(Aa,{item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),T.createElement(H,{type:"submit",size:"large"},"Save"))):null}function Aa(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===ya.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=w();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 T.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){J(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){J(t),e.setHoverKey(e.item.id)}},i?T.createElement(T.Fragment,null,l&&T.createElement("div",null,T.createElement(F,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&T.createElement("div",null,T.createElement(q,{defaultValue:a.type,onChange:e=>d("type",e)},T.createElement("option",{value:"display"},"Display"),T.createElement("optgroup",{label:"Question"},T.createElement("option",{value:"boolean"},"Boolean"),T.createElement("option",{value:"decimal"},"Decimal"),T.createElement("option",{value:"integer"},"Integer"),T.createElement("option",{value:"date"},"Date"),T.createElement("option",{value:"dateTime"},"Date/Time"),T.createElement("option",{value:"time"},"Time"),T.createElement("option",{value:"string"},"String"),T.createElement("option",{value:"text"},"Text"),T.createElement("option",{value:"url"},"URL"),T.createElement("option",{value:"choice"},"Choice"),T.createElement("option",{value:"open-choice"},"Open Choice"),T.createElement("option",{value:"attachment"},"Attachment"),T.createElement("option",{value:"reference"},"Reference"),T.createElement("option",{value:"quantity"},"Quantity")))),!l&&T.createElement(Ke,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),ka(a)&&T.createElement(Pa,{options:a.answerOption,onChange:e=>d("answerOption",e)})):T.createElement(T.Fragment,null,n.title&&T.createElement("h1",null,n.title),a.text&&T.createElement("p",null,a.text),!r&&T.createElement(Na,{item:a,onChange:()=>{}})),a.item&&a.item.map((t=>T.createElement("div",{key:t.id},T.createElement(Aa,{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)})))),!r&&T.createElement("div",{className:"top-actions"},i?T.createElement(F,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):T.createElement("div",null,o)),T.createElement("div",{className:"bottom-actions"},r&&T.createElement(T.Fragment,null,T.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:La(),linkId:Fa("q"),type:"string",text:"Question"})}},"Add item"),T.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:La(),linkId:Fa("g"),type:"group",text:"Group"})}},"Add group")),!l&&T.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Pa(e){var t;const n=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return T.createElement("div",null,a.map((t=>{const[l,r]=Ae({type:"QuestionnaireItemAnswerOption",value:t},"value");return T.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},T.createElement("div",null,T.createElement(ct,{key:t.id,name:"value[x]",property:n,defaultPropertyType:r,defaultValue:l,onChange:(n,l)=>{const r=[...a],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[l]:n},e.onChange(r)}})),T.createElement("div",null,T.createElement("a",{href:"#",onClick:n=>{J(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),T.createElement("a",{href:"#",onClick:t=>{J(t),e.onChange([...a,{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"}(ya||(ya={}));let Ia=1,Ra=1;function Fa(e){return e+Ia++}function La(){return"id-"+Ra++}function Ma(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||La(),item:Ma(e.item),answerOption:qa(e.answerOption)})))}function qa(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||La()})))}function $a(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 _a(e){const t=K(),{googleClientId:n,handleGoogleCredential:a}=e,l=w(null),[r,o]=N("undefined"!=typeof google),[i,c]=N(!1),[u,s]=N(!1);return S((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:n,callback:a}),c(!0)),l.current&&!u&&(google.accounts.id.renderButton(l.current,{}),s(!0))):$a("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,r,l,u,a]),n?T.createElement("div",{ref:l}):null}function Ua(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://localhost:6006,https://app.medplum.com,https://docs.medplum.com")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function Qa(){"undefined"==typeof grecaptcha&&$a("https://www.google.com/recaptcha/api.js?render="+process.env.RECAPTCHA_SITE_KEY)}function za(){return new Promise((e=>{grecaptcha.ready((()=>{grecaptcha.execute(process.env.RECAPTCHA_SITE_KEY,{action:"submit"}).then(e)}))}))}function Ha(e){const t=K(),n=Ua(e.googleClientId),[a,l]=N(),r=R(a,void 0);function o(n,a){return aa(this,void 0,void 0,(function*(){try{let l;l="patient"===e.type?yield t.startNewPatient(n,a):yield t.startNewProject(n,a),yield t.processCode(l.code),e.onSuccess()}catch(e){l(e)}}))}return S(Qa,[]),T.createElement(Ht,{width:450},T.createElement(kt,{style:{maxWidth:400},onSubmit:e=>aa(this,void 0,void 0,(function*(){try{const n=yield za(),a=Object.assign(Object.assign({},e),{recaptchaToken:n});o(a,yield t.startNewUser(a))}catch(e){l(e)}}))},T.createElement("div",{className:"medplum-center"},e.children),r&&T.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return T.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&&T.createElement(T.Fragment,null,T.createElement("div",{className:"medplum-signin-google-container"},T.createElement(_a,{googleClientId:n,handleGoogleCredential:e=>aa(this,void 0,void 0,(function*(){try{const n={googleClientId:e.clientId,googleCredential:e.credential},a=yield t.startGoogleLogin(n),l=O(n.googleCredential);o({firstName:l.given_name,lastName:l.family_name,email:l.email},a)}catch(e){l(e)}}))})),T.createElement("div",{className:"medplum-signin-separator"},"or")),T.createElement(se,{title:"First Name",htmlFor:"firstName",outcome:a},T.createElement(F,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:a})),T.createElement(se,{title:"Last Name",htmlFor:"lastName",outcome:a},T.createElement(F,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:a})),"project"===e.type&&T.createElement(se,{title:"Project Name",htmlFor:"projectName",outcome:a},T.createElement(F,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:a})),T.createElement(se,{title:"Email",htmlFor:"email",outcome:a},T.createElement(F,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:a})),T.createElement(se,{title:"Password",htmlFor:"password",outcome:a},T.createElement(F,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),T.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",T.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",T.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),T.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",T.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",T.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),T.createElement("div",{className:"medplum-signin-buttons"},T.createElement("div",null,T.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),T.createElement("label",{htmlFor:"remember"},"Remember me")),T.createElement("div",null,T.createElement(H,{type:"submit",testid:"submit"},"Create account")))))}function Ba(e){return T.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function Wa(e){var t;const n=K(),a=oe(e.value),[l,r]=N(!1),[o,i]=N();return S((()=>{a&&!l&&(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),r(!0))}),[n,a,l]),a&&o?T.createElement("div",{className:"medplum-request-group"},null===(t=a.action)||void 0===t?void 0:t.map(((t,n)=>{var a,l,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===p(t.resource))return t.resource;return}(t.resource),m=null===(l=null===(a=null==s?void 0:s.input)||void 0===a?void 0:a[0])||void 0===l?void 0:l.valueReference,d=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 T.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},T.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==s?void 0:s.status)?"🗹":"☐"),T.createElement("div",{className:"medplum-request-group-task-details"},T.createElement("div",{className:"medplum-request-group-task-title"},t.title),T.createElement("div",null,"Last edited by ",T.createElement(lt,{value:null===(c=null==s?void 0:s.meta)||void 0===c?void 0:c.author})," on ",T.createElement(be,{value:null===(u=null==s?void 0:s.meta)||void 0===u?void 0:u.lastUpdated})),T.createElement("div",null,"Status: ",T.createElement(Ba,{status:(null==s?void 0:s.status)||"unknown"}))),T.createElement("div",{className:"medplum-request-group-task-actions"},m&&!d&&T.createElement(H,{onClick:()=>e.onStart(s,m)},"Start"),m&&d&&T.createElement(H,{onClick:()=>e.onEdit(s,m,d)},"Edit")))}))):null}function Ga(e,t){return function(e,t,n){const a=[];let l=e;l.snake&&(l=l.prev);for(;l&&l.prev&&l.prev.j>=0;){const e=l.i,r=l.j;l=l.prev;const o=l.i,i=l.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",a.push({original:c,revised:u,type:s}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,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<l;r++){for(let l=-r;l<=r;l+=2){const c=o+l,u=c-1,s=i[c+1],m=i[u];let d,p=0;l===-r||l!==r&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let v=p-l,h={i:p,j:v,prev:Ka(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+r-1]=void 0}return}(e,t),e,t)}function Ka(e){return e&&!e.snake&&e.prev?e.prev:e}function Ya(e){const t=e.entry.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 a=Ga(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,o=l.revised.lines;if("delete"!==l.type&&"change"!==l.type||e.splice(a,r.length),"insert"===l.type||"change"===l.type)for(let r=0;r<l.revised.lines.length;r++)e.splice(a+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 Ja(e){var t,n;const a=K(),[l,r]=N(e.history);if(S((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then((e=>r(e)))}),[a,e.history,e.resourceType,e.id]),!l)return T.createElement("div",null,"Loading...");const o=null===(n=null===(t=l.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=Ya(l);return T.createElement("div",{className:"medplum-blame-container"},T.createElement("table",{className:"medplum-blame"},T.createElement("tbody",null,i.map(((e,t)=>T.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&T.createElement("td",{className:"details",rowSpan:e.span},T.createElement(M,{justifyContent:"space-between"},T.createElement(pt,{value:e.meta.author,size:"xsmall",link:!0}),T.createElement(le,{to:Xa(o,e.meta.versionId)},Za(e.meta.lastUpdated)))),T.createElement("td",{className:"line-number"},t+1),T.createElement("td",{className:"line"},T.createElement("pre",{className:"line-pre"},e.value))))))))}function Xa(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function Za(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return el(n,"year");const a=Math.floor(t/2592e3);if(a>0)return el(a,"month");const l=Math.floor(t/86400);if(l>0)return el(l,"day");const r=Math.floor(t/3600);if(r>0)return el(r,"hour");const o=Math.floor(t/60);return o>0?el(o,"minute"):el(t,"second")}function el(e,t){return`${e} ${1===e?t:t+"s"} ago`}function tl(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=Ga(i(t,!0).match(/[^\r\n]+/g),i(n,!0).match(/[^\r\n]+/g));return T.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>T.createElement(nl,{key:"delta"+t,delta:e}))))}function nl(e){return T.createElement(T.Fragment,null,"...",T.createElement("br",null),e.delta.original.lines.length>0&&T.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&T.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",T.createElement("br",null))}function al(e){var t;const n=K(),[a,l]=N(e.history);return S((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then((e=>l(e)))}),[n,e.history,e.resourceType,e.id]),a?T.createElement("table",{className:"medplum-table"},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Author"),T.createElement("th",null,"Date"),T.createElement("th",null,"Version"))),T.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map((e=>{var t,n;return T.createElement(ll,{key:null===(n=null===(t=e.resource)||void 0===t?void 0:t.meta)||void 0===n?void 0:n.versionId,version:e.resource})})))):T.createElement("div",null,"Loading...")}function ll(e){var t,n,a;return T.createElement("tr",null,T.createElement("td",null,T.createElement(pt,{value:null===(t=e.version.meta)||void 0===t?void 0:t.author,link:!0})),T.createElement("td",null,T.createElement(be,{value:null===(n=e.version.meta)||void 0===n?void 0:n.lastUpdated})),T.createElement("td",null,T.createElement(le,{to:rl(e.version)},null===(a=e.version.meta)||void 0===a?void 0:a.versionId)))}function rl(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function ol(e){const[t,n]=N(il);function a(e){n((t=>{const n=new Date(t.getTime());return n.setMonth(t.getMonth()+e),n}))}const l=D((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),a=[];let l=[];for(let e=0;e<n.getDay();e++)l.push(void 0);for(;n.getMonth()===e.getMonth();)l.push({date:new Date(n.getTime()),available:cl(n,t)}),6===n.getDay()&&(a.push(l),l=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)l.push(void 0);a.push(l)}return a}(t,e.slots)),[t,e.slots]);return T.createElement("div",null,T.createElement(M,null,T.createElement("p",{style:{flex:1}},(r=t).toLocaleString("default",{month:"long"})+" "+r.getFullYear()),T.createElement("p",null,T.createElement(H,{label:"Previous month",onClick:()=>a(-1)},"<"),T.createElement(H,{label:"Next month",onClick:()=>a(1)},">"))),T.createElement("table",{className:"medplum-calendar-table"},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"SUN"),T.createElement("th",null,"MON"),T.createElement("th",null,"TUE"),T.createElement("th",null,"WED"),T.createElement("th",null,"THU"),T.createElement("th",null,"FRI"),T.createElement("th",null,"SAT"))),T.createElement("tbody",null,l.map(((t,n)=>T.createElement("tr",{key:"week-"+n},t.map(((t,n)=>T.createElement("td",{key:"day-"+n},t&&T.createElement("button",{disabled:!t.available,onClick:()=>e.onClick(t.date)},t.date.getDate()))))))))));var r}function il(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function cl(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 ul(e){var t;const n=K(),a=oe(e.schedule),[l,r]=N();w().current=l;const[o,i]=N(),[c,u]=N(),[s,m]=N(),[d,v]=N();if(S((()=>{a?n.search("Slot","schedule="+p(a)).then((e=>{r(e.entry.map((e=>e.resource)))})):r(void 0)}),[n,a]),!a||!l)return null;const h=null===(t=a.actor)||void 0===t?void 0:t[0];return T.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},T.createElement("div",{className:"medplum-calendar-info-pane"},h&&T.createElement(ie,{value:h,size:"large"}),h&&T.createElement("h1",null,T.createElement(lt,{value:h})),T.createElement("p",null,"1 hour"),o&&T.createElement("p",null,o.toLocaleDateString()),c&&T.createElement("p",null,sl(new Date(c.start)))),T.createElement("div",{className:"medplum-calendar-selection-pane"},!o&&T.createElement("div",null,T.createElement("h3",null,"Select date"),T.createElement(ol,{slots:l,onClick:i})),o&&!c&&T.createElement("div",null,T.createElement("h3",null,"Select time"),l.map((e=>{const t=new Date(e.start);return t.getTime()>o.getTime()&&t.getTime()<o.getTime()+864e5&&T.createElement("div",{key:e.id},T.createElement(H,{style:{width:150},onClick:()=>u(e)},sl(t)))}))),o&&c&&!s&&T.createElement("div",null,T.createElement("h3",null,"Enter your info"),T.createElement(se,{title:"Name",htmlFor:"name"},T.createElement(F,{name:"name"})),T.createElement(se,{title:"Email",htmlFor:"email"},T.createElement(F,{name:"email"})),T.createElement(H,{primary:!0,onClick:()=>m("info")},"Next")),o&&c&&s&&!d&&T.createElement("div",null,T.createElement("h3",null,"Custom questions"),T.createElement(se,{title:"Question 1",htmlFor:"q1"},T.createElement(F,{name:"q1"})),T.createElement(se,{title:"Question 2",htmlFor:"q2"},T.createElement(F,{name:"email"})),T.createElement(se,{title:"Question 3",htmlFor:"q3"},T.createElement(F,{name:"email"})),T.createElement(H,{primary:!0,onClick:()=>v("form")},"Next")),o&&c&&s&&d&&T.createElement("div",null,T.createElement("h3",null,"You're all set!"),T.createElement("p",null,"Check your email for a calendar invite."))))}function sl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function ml(e){return T.createElement(Lt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${p(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${p(e)}`}},{request:{method:"GET",url:`Media?_count=100&based-on=${p(e)}`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${p(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[m(e)],subject:e.subject,sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[m(e)],subject:e.subject,operator:m(t),issued:(new Date).toISOString(),content:n})})}function dl(e){const t=K(),[n,a]=N(void 0),[l,r]=N(void 0);function o(n){n.login&&a(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 T.createElement(Ht,{width:450},n?l?T.createElement(vl,{login:n,memberships:l,handleAuthResponse:o}):T.createElement("div",null,"Success"):T.createElement(pl,{clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function pl(e){const t=K(),n=Ua(e.googleClientId),[a,l]=N(),r=R(a,void 0);return T.createElement(kt,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({clientId:e.clientId,scope:e.scope,nonce:e.nonce,email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(l)}},T.createElement("div",{className:"medplum-center"},e.children),r&&T.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return T.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&&T.createElement(T.Fragment,null,T.createElement("div",{className:"medplum-signin-google-container"},T.createElement(_a,{googleClientId:n,handleGoogleCredential:n=>{t.startGoogleLogin({clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:n.clientId,googleCredential:n.credential}).then(e.handleAuthResponse).catch(l)}})),T.createElement("div",{className:"medplum-signin-separator"},"or")),T.createElement(se,{title:"Email",htmlFor:"email",outcome:a},T.createElement(F,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:a})),T.createElement(se,{title:"Password",htmlFor:"password",outcome:a},T.createElement(F,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),T.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&T.createElement("div",null,e.onForgotPassword&&T.createElement(le,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&T.createElement(le,{testid:"register",onClick:e.onRegister},"Register")),T.createElement("div",null,T.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),T.createElement("label",{htmlFor:"remember"},"Remember me")),T.createElement("div",null,T.createElement(H,{type:"submit",testid:"submit"},"Sign in"))))}function vl(e){const t=K();return T.createElement("div",null,T.createElement("div",{className:"medplum-center"},T.createElement(ca,{size:32}),T.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return T.createElement("div",{className:"medplum-nav-menu-profile",key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse)}},T.createElement("div",{className:"medplum-nav-menu-profile-icon"},T.createElement(ie,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),T.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,T.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function hl(e){let t="medplum-tab";function n(t){J(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),T.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function El(e){return T.createElement(St,{className:"medplum-surface",height:50},T.createElement("div",{role:"tablist",className:"medplum-tablist"},T.createElement("div",{className:"medplum-tablist-foreground"},T.Children.map(e.children,((t,n)=>T.isValidElement(t)&&t.type===hl?T.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function fl(e){return T.createElement("div",{role:"tabpanel"},e.children)}function gl(e){return T.createElement(T.Fragment,null,T.Children.map(e.children,(t=>T.isValidElement(t)&&t.type===fl&&t.props.name===e.value?t:null)))}export{I as AddressDisplay,U as AddressInput,z as AttachmentArrayDisplay,te as AttachmentArrayInput,ne as AttachmentInput,ae as Autocomplete,ie as Avatar,dt as BackboneElementInput,H as Button,Ie as Checkbox,ce as CheckboxFormSection,_e as CodeInput,fe as CodeableConceptDisplay,Re as CodeableConceptInput,ye as ContactDetailDisplay,ze as ContactDetailInput,ge as ContactPointDisplay,Qe as ContactPointInput,be as DateTimeDisplay,He as DateTimeInput,zt as DefaultResourceTimeline,vt as DiagnosticReportDisplay,Ht as Document,ut as ElementDefinitionInputSelector,st as ElementDefinitionTypeInput,Bt as EncounterTimeline,xt as ErrorBoundary,ea as FhirPathTable,na as FooterLinks,kt as Form,se as FormSection,ia as Header,Ce as HumanNameDisplay,Je as HumanNameInput,Xe as IdentifierInput,F as Input,Ot as Loading,ca as Logo,le as MedplumLink,W as MedplumProvider,ta as MemoizedFhirPathTable,Jn as MemoizedSearchControl,Tt as MenuItem,ht as ObservationTable,sa as PatientTimeline,ma as PlanDefinitionBuilder,Vt as Popup,Da as QuestionnaireBuilder,Oa as QuestionnaireForm,Na as QuestionnaireFormItem,ya as QuestionnaireItemType,we as RangeDisplay,nt as RangeInput,ot as ReferenceInput,Ha as RegisterForm,Wa as RequestGroupDisplay,Ve as ResourceArrayDisplay,it as ResourceArrayInput,pt as ResourceBadge,Ja as ResourceBlame,tl as ResourceDiff,me as ResourceForm,al as ResourceHistoryTable,rt as ResourceInput,lt as ResourceName,De as ResourcePropertyDisplay,ct as ResourcePropertyInput,jt as ResourceTable,Lt as ResourceTimeline,ul as Scheduler,St as Scrollable,Wn as SearchChangeEvent,Kn as SearchClickEvent,Yn as SearchControl,Vn as SearchFieldEditor,In as SearchFilterEditor,Gn as SearchLoadEvent,q as Select,ml as ServiceRequestTimeline,dl as SignInForm,Ba as StatusBadge,hl as Tab,El as TabList,fl as TabPanel,gl as TabSwitch,Ke as TextArea,Dt as Timeline,At as TimelineItem,Bn as TitleBar,ee as UploadButton,vn as addDateEqualsFilter,hn as addDateFilter,En as addDateFilterBetween,nn as addField,tn as addFilter,un as addLastMonthFilter,gn as addMissingFilter,mn as addNextMonthFilter,ba as addQuestionnaireInitialValues,sn as addThisMonthFilter,rn as addTodayFilter,on as addTomorrowFilter,pn as addYearToDateFilter,ln as addYesterdayFilter,Sn as buildFieldNameString,Zt as clearFilters,en as clearFiltersOnField,Be as convertIsoToLocal,We as convertLocalToIso,$a as createScriptTag,an as deleteFilter,je as formatRangeString,jn as getOpString,za as getRecaptcha,wn as getSearchOperators,Tn as getSortField,Za as getTimeString,Ae as getValueAndType,yn as hasFilterOnField,Qa as initRecaptcha,ka as isChoiceQuestion,Nn as isSortDescending,Cn as movePage,yt as parseForm,xn as renderValue,Xt as setFilters,bn as setOffset,de as setPropertyValue,kn as setSort,Pt as sortByDateAndPriority,On as toggleSort,K as useMedplum,G as useMedplumContext,Y as useMedplumProfile,oe as useResource};
1
+ import{formatAddress as e,getDisplayString as t,getImageSrc as n,capitalize as a,globalSchema as l,getPropertyDisplayName as r,formatHumanName as o,stringify as i,buildTypeName as c,PropertyType as u,getTypedPropertyValue as s,createReference as m,toTypedValue as d,getReferenceString as p,evalFhirPath as v,getSearchParameterDetails as h,Operator as E,evalFhirPathTyped as f,SearchParameterType as g,formatSearchQuery as y,parseSearchDefinition as b,DEFAULT_SEARCH_COUNT as C,isUUID as k,parseJWTPayload as O}from"@medplum/core";import T,{useState as N,useRef as w,createContext as j,useEffect as S,useContext as x,useCallback as V,useMemo as D}from"react";import{useNavigate as A,useLocation as I}from"react-router-dom";function P(t){const n=t.value;return n?T.createElement(T.Fragment,null,e(n)):null}function R(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return(null===(n=e.expression)||void 0===n?void 0:n[0])===t}))}function F(e){const t=R(e.outcome,e.name),n=t&&t.length>0;return T.createElement("input",{id:e.name,name:e.name,type:L(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 L(e){return e||"text"}function M(e){return T.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function q(e){const t=R(e.outcome,e.name),n=t&&t.length>0;return T.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 $(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function _(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 U(e){const[t,n]=N(e.defaultValue||{}),a=w();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,T.createElement(M,null,T.createElement(q,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},T.createElement("option",null),T.createElement("option",null,"home"),T.createElement("option",null,"mobile"),T.createElement("option",null,"old"),T.createElement("option",null,"temp"),T.createElement("option",null,"work")),T.createElement(q,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},T.createElement("option",null),T.createElement("option",null,"postal"),T.createElement("option",null,"physical"),T.createElement("option",null,"both")),T.createElement(F,{placeholder:"Line 1",defaultValue:$(t,0),onChange:function(e){l(_(a.current||{},0,e))}}),T.createElement(F,{placeholder:"Line 2",defaultValue:$(t,1),onChange:function(e){l(_(a.current||{},1,e))}}),T.createElement(F,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),T.createElement(F,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),T.createElement(F,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function Q(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?T.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&T.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/"))&&T.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},T.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&T.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},T.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),T.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},T.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 z(e){return T.createElement("div",null,e.values&&e.values.map(((t,n)=>T.createElement("div",{key:"attatchment-"+n},T.createElement(Q,{value:t,maxWidth:e.maxWidth})))))}function H(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 T.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 B=j(void 0);function W(e){const t=e.medplum,[n,a]=N({profile:t.getProfile(),loading:!1});S((()=>{function e(){a(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const l=Object.assign(Object.assign({},n),{medplum:t});return T.createElement(B.Provider,{value:l},e.children)}function G(){return x(B)}function K(){return G().medplum}function Y(){return G().profile}function J(e){e.preventDefault(),e.stopPropagation()}function X(e){if(Z(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&Z(t[0]))return!0}return!1}function Z(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function ee(e){const t=K(),n=w(null);function a(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).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 T.createElement(T.Fragment,null,T.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){J(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),T.createElement(H,{testid:"upload-button",onClick:e=>{var t;J(e),null===(t=n.current)||void 0===t||t.click()}},e.children||"Upload..."))}function te(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=w();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,T.createElement("table",{style:{width:"100%"}},T.createElement("colgroup",null,T.createElement("col",{width:"90%"}),T.createElement("col",{width:"10%"})),T.createElement("tbody",null,n.map(((e,t)=>T.createElement("tr",{key:`${t}-${n.length}`},T.createElement("td",null,T.createElement(Q,{value:e,maxWidth:200})),T.createElement("td",{className:"medplum-right"},T.createElement(H,{onClick:e=>{J(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),T.createElement("tr",null,T.createElement("td",null),T.createElement("td",{className:"medplum-right"},T.createElement(ee,{onUpload:e=>{r([...l.current,e])}})))))}function ne(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?T.createElement(T.Fragment,null,T.createElement(Q,{value:t,maxWidth:200}),T.createElement(H,{onClick:e=>{J(e),a(void 0)}},"Remove")):T.createElement(ee,{onUpload:a})}function ae(e){var t,n;const a=w(null),[l,r]=N(!1),[o,i]=N(""),[c,u]=N(),[s,m]=N(!1),[d,p]=N(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,h]=N([]),[E,f]=N(-1),[g,y]=N(),[b,C]=N(),k=w();k.current=o;const O=w();O.current=c;const j=w();j.current=g;const x=w();function V(t){p(t),e.onChange&&e.onChange(t)}function D(t){a.current.value="";const n=e.multiple?[...d,t]:[t];r(!0),m(!1),i(""),h([]),f(-1),V(n)}function A(){var e;null===(e=a.current)||void 0===e||e.focus()}function I(){r(!1),window.setTimeout((()=>{m(!1)}),200)}function P(){j.current&&(j.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 l=(null===(n=null===(t=a.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(l===k.current)return;if(!l)return m(!1),i(""),h([]),void f(-1);i(l);const r=new AbortController;y(r),e.loadOptions(l,r.signal).then((e=>{r.signal.aborted||(m(e.length>0),h(e),y(void 0),x.current&&(D(e[0]),C(!1)))})).catch(console.log)}()),100);u(t)}function R(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;O.current||j.current||!F()?C(!0):(J(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":L(-1),J(e);break;case"ArrowDown":L(1),J(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(J(e),V(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;F(),J(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function F(){var t;let n;return E>=0&&E<v.length?n=v[E]:-1===E&&v.length>0?n=v[0]:e.buildUnstructured&&(null===(t=a.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(a.current.value)),!!n&&(D(n),!0)}function L(e){let t=E+e;t<0?t=0:t>=v.length&&(t=v.length-1),f(t)}x.current=b,S((()=>()=>{j.current&&j.current.abort()}),[]),S((()=>{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 T.createElement("div",{"data-testid":"autocomplete",className:M+(l?" focused":""),onClick:()=>A()},T.createElement("ul",{onClick:()=>A()},d.map((t=>T.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),T.createElement("li",{className:"medplum-autocomplete-item"},T.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===d.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>{r(!0)},onBlur:()=>I(),onChange:()=>P(),onInput:()=>P(),onKeyDown:e=>R(e),ref:a,"data-testid":"input-element"}))),s&&T.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>T.createElement("div",{key:e.getId(t),className:n===E?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){f(t)}(0,n),onClick:e=>function(e,t){J(e),D(t)}(e,t)},e.getIcon&&T.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),T.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&T.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&T.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},T.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function le(e){const t=A();let n="#";return e.to&&("string"==typeof e.to?n=e.to:"resourceType"in e.to?n=`/${e.to.resourceType}/${e.to.id}`:"reference"in e.to&&(n=`/${e.to.reference}`),e.suffix&&(n+="/"+e.suffix)),T.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{J(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}const re={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function oe(e){const t=K(),[n,a]=N(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?re:e.getCachedReference(t);return}(t,e));return S((()=>{let l=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{l&&a(e)})).catch((()=>a(void 0))),()=>l=!1}),[t,n,e]),n}function ie(e){var a,l;const r=oe(e.value),o=e.size?"medplum-avatar "+e.size:"medplum-avatar",i=r?t(r):null!==(a=e.alt)&&void 0!==a?a:"",c=i&&function(e){return e.split(" ").map((e=>e[0])).join("")}(i),u=null!==(l=r&&n(r))&&void 0!==l?l:e.src,s=u?T.createElement("img",{src:u,alt:i}):c;return T.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?T.createElement(le,{to:r},s):s)}function ce(e){return T.createElement("div",{className:"medplum-checkbox-form-section"},T.createElement("div",{className:"medplum-checkbox-form-section-checkbox-container"},e.children),T.createElement("div",{className:"medplum-checkbox-form-section-details-container"},T.createElement("label",{htmlFor:e.htmlFor},e.title),T.createElement("p",null,e.description)))}const ue=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function se(e){const t=R(e.outcome,e.htmlFor),n=t&&t.length>0;return T.createElement("fieldset",{className:"medplum-form-section"},e.title&&T.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&T.createElement("p",null,e.description),e.children,n&&T.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return T.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 me(e){const t=K(),n=oe(e.defaultValue),[a,l]=N(),[r,o]=N();return S((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(l))}),[t,n]),a&&r?T.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(r)}},T.createElement(se,{title:"Resource Type"},T.createElement(F,{name:"resourceType",defaultValue:r.resourceType,disabled:!0})),T.createElement(se,{title:"ID"},T.createElement(F,{name:"id",defaultValue:r.id,disabled:!0})),T.createElement(dt,{typeName:r.resourceType,defaultValue:r,outcome:e.outcome,onChange:o}),T.createElement(H,{type:"submit",size:"large"},"OK"),e.onDelete&&T.createElement(H,{type:"button",size:"large",onClick:()=>{e.onDelete(r)}},"Delete")):T.createElement("div",null,"Loading...")}function de(e,t,n,l,r){const o=l.type;if(o.length>1)for(const n of o){const l=t.replace("[x]",a(n.code));l in e&&delete e[l]}return e[n]=r,e}function pe(e){return T.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function ve(e){return T.createElement(T.Fragment,null,T.createElement("dt",null,e.term),T.createElement("dd",null,e.children))}function he(e){const t=e.value,n=t.value;if(!n)return null;const a=t.type,o=l.types[a];return o?"object"==typeof n&&"name"in n&&1===Object.keys(n).length?T.createElement("div",null,n.name):T.createElement(pe,{compact:e.compact},Object.entries(o.properties).map((n=>{const a=n[0];if(ue.indexOf(a)>=0)return null;const l=n[1],[o,i]=Ae(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:T.createElement(ve,{key:a,term:r(a)},T.createElement(De,{property:l,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):T.createElement("div",null,a," not implemented")}function Ee(e){var t,n;return T.createElement(T.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 fe(e){const t=e.value;return t?t.text?T.createElement(T.Fragment,null,t.text):t.coding&&t.coding.length>0?T.createElement(Ee,{value:t.coding[0]}):null:null}function ge(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("]")),T.createElement(T.Fragment,null,n.join("").trim())}function ye(e){var t;const n=e.value;return n?T.createElement(T.Fragment,null,n.name,n.name&&": ",null===(t=n.telecom)||void 0===t?void 0:t.map(((e,t)=>T.createElement(ge,{key:"telecom-"+t,value:e})))):null}function be(e){return e.value?T.createElement(T.Fragment,null,new Date(e.value).toLocaleString()):null}function Ce(e){const t=e.value;return t?T.createElement(T.Fragment,null,o(t,e.options)):null}function ke(e){var t,n;return T.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 Oe(e){const t=e.value;return t&&(t.start||t.end)?T.createElement("span",null,T.createElement(be,{value:t.start}),"-",T.createElement(be,{value:t.end})):null}function Te(e){return T.createElement(T.Fragment,null,Ne(e.value))}function Ne(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 we(e){return T.createElement(T.Fragment,null,je(e.value))}function je(e){return e&&(e.low||e.high)?e.low&&!e.high?`>= ${Ne(e.low)}`:!e.low&&e.high?`<= ${Ne(e.high)}`:`${Ne(e.low)} - ${Ne(e.high)}`:""}function Se(e){const t=e.value;return t?T.createElement(T.Fragment,null,T.createElement(Te,{value:t.numerator})," / ",T.createElement(Te,{value:t.denominator})):null}function xe(e){if(!e.value)return null;const t=e.value.display||e.value.reference||i(e.value);return!1!==e.link&&e.value.reference?T.createElement(le,{to:e.value},t):T.createElement(T.Fragment,null,t)}function Ve(e){var t,n,a;const l=e.property,r=null!==(t=e.values)&&void 0!==t?t:[],o=null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return T.createElement(T.Fragment,null,r.map(((t,n)=>T.createElement("div",{key:`${n}-${r.length}`},T.createElement(De,{arrayElement:!0,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function De(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement)return"Attachment"===a?T.createElement(z,{values:l,maxWidth:e.maxWidth}):T.createElement(Ve,{property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case u.boolean:return T.createElement("div",null,void 0===l?"":Boolean(l).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 T.createElement("div",null,l);case u.canonical:return T.createElement(xe,{value:{reference:l},link:e.link});case u.dateTime:case u.instant:return T.createElement(be,{value:l});case u.markdown:return T.createElement("pre",null,l);case u.Address:return T.createElement(P,{value:l});case u.Annotation:return T.createElement("div",null,null==l?void 0:l.text);case u.Attachment:return T.createElement(Q,{value:l,maxWidth:e.maxWidth});case u.CodeableConcept:return T.createElement(fe,{value:l});case u.Coding:return T.createElement(Ee,{value:l});case u.ContactDetail:return T.createElement(ye,{value:l});case u.ContactPoint:return T.createElement(ge,{value:l});case u.HumanName:return T.createElement(Ce,{value:l});case u.Identifier:return T.createElement(ke,{value:l});case u.Period:return T.createElement(Oe,{value:l});case u.Quantity:return T.createElement(Te,{value:l});case u.Range:return T.createElement(we,{value:l});case u.Ratio:return T.createElement(Se,{value:l});case u.Reference:return T.createElement(xe,{value:l,link:e.link});default:if(!(null==n?void 0:n.path))throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return T.createElement(he,{value:{type:c(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:l},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Ae(e,t){const n=s(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function Ie(e){const t=Y(),[n,a]=N(e.defaultValue||{});return w().current=n,T.createElement(F,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const l=n?{text:n,authorReference:t&&m(t),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}})}function Pe(e){return T.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 Re(e){const t=K();let n;return e.defaultValue&&(n=[e.defaultValue]),T.createElement(ae,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map(Fe)))},buildUnstructured:Le,getId:Me,getDisplay:qe,name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Fe(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function Le(e){return{text:e}}function Me(e){return e.coding&&e.coding.length>0?e.coding[0].code:i(e)}function qe(e){var t,n,a,l,r,o;const i=null!==(o=null!==(a=null===(n=null===(t=e.coding)||void 0===t?void 0:t[0])||void 0===n?void 0:n.display)&&void 0!==a?a:null===(r=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code)&&void 0!==o?o:e.text;return T.createElement(T.Fragment,null,i)}const $e={};function _e(e){const t=K();let n;return e.defaultValue&&(n=[e.defaultValue]),T.createElement(ae,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>{const t=e.expansion.contains;return t.forEach((e=>$e[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>T.createElement(T.Fragment,null,$e[e]||e),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Ue(e){const t=K();let n;return e.defaultValue&&(n=[e.defaultValue]),T.createElement(ae,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,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=>T.createElement(Ee,{value:e}),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Qe(e){const[t,n]=N(e.defaultValue),a=w();function l(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return a.current=t,T.createElement(M,null,T.createElement(q,{defaultValue:null==t?void 0:t.system,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{system:e});e||delete t.system,l(t)},testid:"system"},T.createElement("option",null),T.createElement("option",null,"email"),T.createElement("option",null,"fax"),T.createElement("option",null,"pager"),T.createElement("option",null,"phone"),T.createElement("option",null,"other"),T.createElement("option",null,"sms")),T.createElement(q,{defaultValue:null==t?void 0:t.use,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{use:e});e||delete t.use,l(t)},testid:"use"},T.createElement("option",null),T.createElement("option",null,"home"),T.createElement("option",null,"mobile"),T.createElement("option",null,"old"),T.createElement("option",null,"temp"),T.createElement("option",null,"work")),T.createElement(F,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){const t=Object.assign(Object.assign({},a.current),{value:e});e||delete t.value,l(t)}}))}function ze(e){var t;const[n,a]=N(e.defaultValue),l=w();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,T.createElement(M,null,T.createElement(F,{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({},l.current),{name:e});e||delete t.name,r(t)}}),T.createElement(Qe,{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({},l.current),{telecom:e&&[e]});e||delete t.telecom,r(t)}}))}function He(e){return T.createElement(F,Object.assign({},e,{type:"datetime-local",defaultValue:Be(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(We(t))}}))}function Be(e){if(!e)return"";const t=new Date(e);return Ge(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function We(e){if(!e)return"";const t=new Date(e);return Ge(t)?t.toISOString():""}function Ge(e){return e instanceof Date&&!isNaN(e.getTime())}function Ke(e){const t="medplum-textarea"+(e.monospace?" monospace":""),n=R(e.outcome,e.name),a=n&&n.length>0;return T.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":a,"aria-describedby":a?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,style:e.style,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function Ye(e){return T.createElement(Ke,{testid:"extension-input",name:e.name,defaultValue:i(e.defaultValue),monospace:!0,onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Je(e){var t,n,a;const[l,r]=N(e.defaultValue),o=w();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,T.createElement(M,null,T.createElement(q,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},T.createElement("option",null),T.createElement("option",null,"usual"),T.createElement("option",null,"official"),T.createElement("option",null,"temp"),T.createElement("option",null,"nickname"),T.createElement("option",null,"anonymous"),T.createElement("option",null,"old"),T.createElement("option",null,"maiden")),T.createElement(F,{placeholder:"Prefix",defaultValue:null===(t=null==l?void 0:l.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{prefix:e?e.split(" "):void 0}))}}),T.createElement(F,{placeholder:"Given",defaultValue:null===(n=null==l?void 0:l.given)||void 0===n?void 0:n.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{given:e?e.split(" "):void 0}))}}),T.createElement(F,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),T.createElement(F,{placeholder:"Suffix",defaultValue:null===(a=null==l?void 0:l.suffix)||void 0===a?void 0:a.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{suffix:e?e.split(" "):void 0}))}}))}function Xe(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(F,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),T.createElement(F,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function Ze(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(F,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),T.createElement(F,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function et(e){var t;const[n,a]=N(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(q,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},T.createElement("option",null),T.createElement("option",null,"<"),T.createElement("option",null,"<="),T.createElement("option",null,">="),T.createElement("option",null,">")),T.createElement(F,{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=>l(Object.assign(Object.assign({},n),{value:tt(e)}))}),T.createElement(F,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function tt(e){if(e)return parseFloat(e)}function nt(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(et,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),T.createElement(et,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function at(e){const[t,n]=N(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return T.createElement(M,null,T.createElement(et,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),T.createElement(et,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function lt(e){const n=oe(e.value);if(!n)return null;const a=t(n);return e.link?T.createElement(le,{to:n},a):T.createElement("span",null,a)}function rt(e){const t=K(),n=oe(e.defaultValue),[a,l]=N(),r=w(e.resourceType);return r.current=e.resourceType,S((()=>{l(n)}),[n]),T.createElement(ae,{loadOptions:e=>t.search(r.current,"name="+encodeURIComponent(e)+"&_count=10").then((e=>e.entry.map((e=>e.resource)))),getId:e=>e.id,getIcon:e=>T.createElement(ie,{value:e}),getDisplay:e=>T.createElement(lt,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:a?[a]:void 0,className:e.className,placeholder:e.placeholder,onChange:t=>{var n;n=t.length>0?t[0]:void 0,l(n),e.onChange&&e.onChange(n)}})}function ot(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,l]=N(e.defaultValue),[r,o]=N(n);w().current=a;return w().current=r,T.createElement(M,null,t?T.createElement(q,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>T.createElement("option",{key:e,value:e},e)))):T.createElement(F,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),T.createElement(rt,{resourceType:r,name:e.name+"-id",defaultValue:a,onChange:t=>{var n;n=t?m(t):void 0,l(n),e.onChange&&e.onChange(n)}}))}function it(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=w();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,T.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},T.createElement("colgroup",null,T.createElement("col",{width:"90%"}),T.createElement("col",{width:"10%"})),T.createElement("tbody",null,n.map(((t,a)=>T.createElement("tr",{key:`${a}-${n.length}`},T.createElement("td",null,T.createElement(ct,{arrayElement:!0,property:e.property,name:e.name+"."+a,defaultValue:t,onChange:e=>{const t=[...l.current];t[a]=e,r(t)}})),T.createElement("td",{style:{textAlign:"right"}},T.createElement(H,{onClick:e=>{J(e);const t=[...l.current];t.splice(a,1),r(t)}},"Remove"))))),T.createElement("tr",null,T.createElement("td",null),T.createElement("td",{style:{textAlign:"right"}},T.createElement(H,{onClick:e=>{J(e);const t=[...l.current];t.push(void 0),r(t)}},"Add")))))}function ct(e){var t,n,a;const l=e.property,r=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code,o=e.name,i=e.defaultValue;if("*"===l.max&&!e.arrayElement)return"Attachment"===r?T.createElement(te,{name:o,defaultValue:i,onChange:e.onChange}):T.createElement(it,{property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?T.createElement(ut,Object.assign({elementDefinitionTypes:c},e)):T.createElement(st,Object.assign({elementDefinitionType:c[0]},e))}function ut(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[l,r]=N(n);return T.createElement(M,null,T.createElement(q,{style:{width:"200px"},defaultValue:null==l?void 0:l.code,onChange:e=>{r(t.find((t=>t.code===e)))}},t.map((e=>T.createElement("option",{key:e.code,value:e.code},e.code)))),T.createElement(st,Object.assign({},e,{elementDefinitionType:l,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",a(l.code)))}})))}function st(e){var t;const n=e.property,a=e.elementDefinitionType.code,l=e.name,r=e.defaultValue;switch(a){case u.SystemString:case u.canonical:case u.string:case u.time:case u.uri:case u.url:return T.createElement(F,{type:"text",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.date:return T.createElement(F,{type:"date",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.dateTime:case u.instant:return T.createElement(He,{type:"datetime-local",name:l,testid:l,defaultValue:r,onChange:e.onChange,outcome:e.outcome});case u.decimal:case u.integer:case u.positiveInt:case u.unsignedInt:return T.createElement(F,{type:"number",step:a===u.decimal?"any":1,name:l,testid:l,defaultValue:r,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case u.code:return T.createElement(_e,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.boolean:return T.createElement(Pe,{name:l,testid:l,defaultValue:!!r,onChange:t=>{e.onChange&&e.onChange(t)}});case u.markdown:return T.createElement(Ke,{name:l,testid:l,defaultValue:r,onChange:e.onChange});case u.Address:return T.createElement(U,{name:l,defaultValue:r,onChange:e.onChange});case u.Annotation:return T.createElement(Ie,{name:l,defaultValue:r,onChange:e.onChange});case u.Attachment:return T.createElement(ne,{name:l,defaultValue:r,onChange:e.onChange});case u.CodeableConcept:return T.createElement(Re,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.Coding:return T.createElement(Ue,{property:n,name:l,defaultValue:r,onChange:e.onChange});case u.ContactDetail:return T.createElement(ze,{name:l,defaultValue:r,onChange:e.onChange});case u.ContactPoint:return T.createElement(Qe,{name:l,defaultValue:r,onChange:e.onChange});case u.Extension:return T.createElement(Ye,{name:l,defaultValue:r,onChange:e.onChange});case u.HumanName:return T.createElement(Je,{name:l,defaultValue:r,onChange:e.onChange});case u.Identifier:return T.createElement(Xe,{name:l,defaultValue:r,onChange:e.onChange});case u.Period:return T.createElement(Ze,{name:l,defaultValue:r,onChange:e.onChange});case u.Quantity:return T.createElement(et,{name:l,defaultValue:r,onChange:e.onChange});case u.Range:return T.createElement(nt,{name:l,defaultValue:r,onChange:e.onChange});case u.Ratio:return T.createElement(at,{name:l,defaultValue:r,onChange:e.onChange});case u.Reference:return T.createElement(ot,{name:l,defaultValue:r,targetTypes:mt(n),onChange:e.onChange});default:return T.createElement(dt,{typeName:c(null===(t=n.path)||void 0===t?void 0:t.split(".")),defaultValue:r,onChange:e.onChange,outcome:e.outcome})}}function mt(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 dt(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:{});function o(t){a(t),e.onChange&&e.onChange(t)}const i=e.typeName,c=l.types[i];if(!c)return T.createElement("div",null,i," not implemented");const u={type:i,value:n};return T.createElement(T.Fragment,null,Object.entries(c.properties).map((t=>{const a=t[0];if("id"===a||ue.indexOf(a)>=0)return null;const l=t[1];if(!l.type)return null;const[i,c]=Ae(u,a);return 1===l.type.length&&"boolean"===l.type[0].code?T.createElement(ce,{key:a,title:r(a),description:l.definition,htmlFor:a},T.createElement(ct,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(de(n,a,null!=l?l:a,t[1],e))}})):T.createElement(se,{key:a,title:r(a),description:l.definition,htmlFor:a,outcome:e.outcome},T.createElement(ct,{property:l,name:a,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(e,l)=>{o(de(n,a,null!=l?l:a,t[1],e))}}))})))}function pt(e){var t;return T.createElement("div",{className:"medplum-resource-badge"},T.createElement(ie,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),T.createElement(lt,{value:e.value,link:e.link}))}function vt(e){var t,n;const l=oe(e.value),r=oe(null===(t=null==l?void 0:l.specimen)||void 0===t?void 0:t[0]);if(!l)return null;let o="";if(l.presentedForm&&l.presentedForm.length>0){const e=l.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 T.createElement("div",{className:"medplum-diagnostic-report"},T.createElement("h1",null,"Diagnostic Report"),T.createElement("div",{className:"medplum-diagnostic-report-header"},l.subject&&T.createElement("dl",null,T.createElement("dt",null,"Subject"),T.createElement("dd",null,T.createElement(pt,{value:l.subject,link:!0}))),l.resultsInterpreter&&l.resultsInterpreter.map((e=>T.createElement("dl",{key:e.reference},T.createElement("dt",null,"Interpreter"),T.createElement("dd",null,T.createElement(pt,{value:e,link:!0}))))),l.issued&&T.createElement("dl",null,T.createElement("dt",null,"Issued"),T.createElement("dd",null,T.createElement(be,{value:l.issued}))),l.status&&T.createElement("dl",null,T.createElement("dt",null,"Status"),T.createElement("dd",null,a(l.status)))),l.result&&T.createElement(ht,{value:l.result}),o&&T.createElement("pre",null,o.trim()))}function ht(e){var t;return T.createElement("table",{className:"medplum-table"},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Test"),T.createElement("th",null,"Value"),T.createElement("th",null,"Reference Range"),T.createElement("th",null,"Interpretation"))),T.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>T.createElement(Et,{key:"obs-"+t,value:e})))))}function Et(e){const t=oe(e.value);return t?T.createElement("tr",null,T.createElement("td",null,T.createElement(le,{to:t},T.createElement(fe,{value:t.code}))),T.createElement("td",null,T.createElement(ft,{value:t})),T.createElement("td",null,T.createElement(gt,{value:t.referenceRange})),T.createElement("td",null,t.interpretation&&t.interpretation.length>0&&T.createElement(fe,{value:t.interpretation[0]}))):null}function ft(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?T.createElement(Te,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?T.createElement(T.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?T.createElement(T.Fragment,null,n.component.map(((e,t)=>T.createElement(ft,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function gt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?T.createElement(we,{value:t}):null}function yt(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?bt(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&Ct(t,n);return t}function bt(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function Ct(e,t){e[t.name]=t.value}function kt(e){return T.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=yt(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function Ot(){return T.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},T.createElement("div",{className:"medplum-loading-container"},T.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},T.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function Tt(e){return T.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function Nt(e){const t=K(),[n,a]=N();if(S((()=>{t.requestSchema(e.original.resourceType).then(a)}),[t,e.original.resourceType]),!n)return null;const l=n.types[e.original.resourceType];return l?T.createElement("table",{className:"medplum-diff-table"},T.createElement("colgroup",null,T.createElement("col",{style:{width:"30%"}}),T.createElement("col",{style:{width:"35%"}}),T.createElement("col",{style:{width:"35%"}})),T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Property"),T.createElement("th",null,"Before"),T.createElement("th",null,"After"))),T.createElement("tbody",null,Object.entries(l.properties).map((t=>{const n=t[0];if("id"===n||"meta"===n)return null;const a=t[1],[l,o]=Ae(d(e.original),n),[c,u]=Ae(d(e.revised),n);return wt(l)&&wt(c)||i(l)===i(c)?null:T.createElement("tr",{key:n},T.createElement("td",null,r(n)),T.createElement("td",{className:"medplum-diff-removed"},T.createElement(De,{property:a,propertyType:o,value:l,ignoreMissingValues:!0})),T.createElement("td",{className:"medplum-diff-added"},T.createElement(De,{property:a,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 jt(e){const t=K(),n=oe(e.value),[a,l]=N();return S((()=>{n&&t.requestSchema(n.resourceType).then(l)}),[t,n]),a&&n?T.createElement(he,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}function St(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return T.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},T.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class xt extends T.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?T.createElement("h1",null,"Something went wrong."):this.props.children}}function Vt(e){const t=w(null),n=I(),a=w();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=w();l.current=e,S((()=>{function n(n){var a,r;(null===(a=l.current)||void 0===a?void 0:a.visible)&&(null===(r=l.current)||void 0===r?void 0:r.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&e.onClose()}return document.addEventListener("click",n,!0),()=>document.removeEventListener("click",n,!0)}),[e]),S((()=>{e.visible&&n!==a.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"),T.createElement(T.Fragment,null,e.modal&&T.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),T.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function Dt(e){return T.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function At(e){var t,n,a;const[l,r]=N(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return T.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},T.createElement("div",{className:"medplum-timeline-item-header"},T.createElement("div",{className:"medplum-timeline-item-avatar"},T.createElement(ie,{value:o,link:!0,size:"medium"})),T.createElement("div",{className:"medplum-timeline-item-title"},T.createElement(lt,{value:o,link:!0}),T.createElement("div",{className:"medplum-timeline-item-subtitle"},T.createElement(le,{to:e.resource},T.createElement(be,{value:null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated})),T.createElement("span",null,"·"),T.createElement(le,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&T.createElement("div",{className:"medplum-timeline-item-actions"},T.createElement("a",{href:"#","aria-label":`Actions for ${p(e.resource)}`,onClick:e=>{J(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},T.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},T.createElement("g",{transform:"translate(-446 -350)"},T.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"})))))),T.createElement(xt,null,e.padding&&T.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&T.createElement(T.Fragment,null,e.children)),e.socialEnabled&&T.createElement("div",{className:"medplum-timeline-item-footer"},T.createElement(H,{borderless:!0},"Like"),T.createElement(H,{borderless:!0},"Comment")),e.popupMenuItems&&T.createElement(Vt,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function It(e){e.sort(Pt)}function Pt(e,t){const n=Rt(e),a=Rt(t);return n>a?1:n<a?-1:Ft(e)-Ft(t)}function Rt(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function Ft(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 Lt(e){const t=A(),n=K(),a=n.getProfile(),l=w(null),r=oe(e.value),[o,i]=N(),[c,u]=N([]),s=e.buildSearchRequests,m=w(c);m.current=c;const d=V((()=>{if(!r)return u([]),void i({});n.executeBatch(s(r)).then(p)}),[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)t.push(n.resource)}It(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];It(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function E(e){h(e,"stat").then(d)}function f(e){h(e,"routine").then(d)}function g(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 S((()=>{d()}),[d]),r&&o?T.createElement(Dt,null,e.createCommunication&&T.createElement("article",{className:"medplum-timeline-item"},T.createElement("div",{className:"medplum-timeline-item-header"},T.createElement(kt,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,a,o)).then((e=>{v([e])}));const i=l.current;i&&(i.value="",i.focus())}},T.createElement(F,{name:"text",testid:"timeline-input",inputRef:l}),T.createElement(H,{type:"submit"},"Comment"),T.createElement(ee,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,a,t)).then((e=>{v([e])}))}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return T.createElement(qt,{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 T.createElement(Ut,{key:n,resource:e,onDetails:g});case"Communication":return T.createElement($t,{key:n,resource:e,onPin:"stat"!==e.priority?E:void 0,onUnpin:"stat"===e.priority?f:void 0,onDetails:g,onEdit:y,onDelete:b});case"DiagnosticReport":return T.createElement(Qt,{key:n,resource:e,onDetails:g,onEdit:y,onDelete:b});case"Media":return T.createElement(_t,{key:n,resource:e,onDetails:g,onEdit:y,onDelete:b});default:return T.createElement(At,{key:n,resource:e,padding:!0},T.createElement(jt,{value:e,ignoreMissingValues:!0}))}}))):T.createElement(Ot,null)}function Mt(e){return T.createElement(T.Fragment,null,e.onPin&&T.createElement(Tt,{onClick:()=>e.onPin(e.resource),label:`Pin ${p(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Tt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${p(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Tt,{onClick:()=>e.onDetails(e.resource),label:`Details ${p(e.resource)}`},"Details"),e.onEdit&&T.createElement(Tt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${p(e.resource)}`},"Edit"),e.onDelete&&T.createElement(Tt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${p(e.resource)}`},"Delete"))}function qt(e){const t=function(e,t){const n=e.entry,a=n.findIndex((e=>{var n,a,l;return(null===(a=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===a?void 0:a.versionId)===(null===(l=t.meta)||void 0===l?void 0:l.versionId)}));if(a>=n.length-1)return;return n[a+1].resource}(e.history,e.resource);return t?T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(Nt,{original:t,revised:e.resource})):T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement("h3",null,"Created"),T.createElement(jt,{value:e.resource,ignoreMissingValues:!0}))}function $t(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return T.createElement(At,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.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 _t(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 T.createElement(At,{resource:e.resource,padding:!!a,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(Q,{value:e.resource.content}))}function Ut(e){return T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(St,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function Qt(e){return T.createElement(At,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mt,Object.assign({},e))},T.createElement(vt,{value:e.resource}))}function zt(e){return T.createElement(Lt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${p(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${p(e)}&_sort=-_lastUpdated`}}]})})}function Ht(e){return T.createElement("main",{className:"medplum-document"},T.createElement("article",{style:{maxWidth:e.width}},e.children))}function Bt(e){return T.createElement(Lt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${p(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${p(e)}`}},{request:{method:"GET",url:`Media?encounter=${p(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:m(e),subject:e.subject,sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:m(e),subject:e.subject,operator:m(t),issued:(new Date).toISOString(),content:n})})}function Wt(e){let t;try{t=v(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 T.createElement(De,{value:t[0]||"",propertyType:e.propertyType})}function Gt(e,t,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===n)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const l=e.types[t],r=l.properties[n],o=null===(a=l.searchParams)||void 0===a?void 0:a[n.toLowerCase()];if(r&&o)return{name:n,elementDefinition:r,searchParams:[o]};if(r){let e;if(l.searchParams){const a=`${t}.${n.replaceAll("[x]","")}`;e=Object.values(l.searchParams).filter((e=>{var t;return null===(t=e.expression)||void 0===t?void 0:t.includes(a)})),0===e.length&&(e=void 0)}return{name:n,elementDefinition:r,searchParams:e}}if(o){return{name:n,elementDefinition:h(e,t,o).elementDefinition,searchParams:[o]}}return{name:n}}function Kt(e){const[t,n]=N(100),[a,l]=N(100);if(!e.visible)return null;return T.createElement(T.Fragment,null,T.createElement("div",{className:"modal-dialog-bg"}),T.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},T.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){J(e);const r=e.clientX-t,o=e.clientY-a;function i(e){J(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){J(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},T.createElement("span",{className:"modal-dialog-title-text"},e.title),T.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},T.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},T.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),T.createElement("div",{className:"modal-dialog-content"},e.children),T.createElement("div",{className:"modal-dialog-buttons"},T.createElement(H,{testid:"dialog-ok",onClick:e.onOk},"OK"),T.createElement(H,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Yt={string:[E.EQUALS,E.NOT,E.CONTAINS,E.EXACT],fulltext:[E.EQUALS,E.NOT,E.CONTAINS,E.EXACT],token:[E.EQUALS,E.NOT],reference:[E.EQUALS,E.NOT],numeric:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS],quantity:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS],date:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS,E.STARTS_AFTER,E.ENDS_BEFORE,E.APPROXIMATELY],datetime:[E.EQUALS,E.NOT_EQUALS,E.GREATER_THAN,E.LESS_THAN,E.GREATER_THAN_OR_EQUALS,E.LESS_THAN_OR_EQUALS,E.STARTS_AFTER,E.ENDS_BEFORE,E.APPROXIMATELY]},Jt={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 Xt(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function Zt(e){return Xt(e,[])}function en(e,t){return Xt(e,(e.filters||[]).filter((e=>e.code!==t)))}function tn(e,t,n,a,l){l&&(e=en(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),Xt(e,r)}function nn(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 an(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 ln(e,t){return cn(e,t,-1)}function rn(e,t){return cn(e,t,0)}function on(e,t){return cn(e,t,1)}function cn(e,t,n){const a=new Date;a.setDate(a.getDate()+n),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setDate(l.getDate()+1),l.setTime(l.getTime()-1),En(e,t,a,l)}function un(e,t){return dn(e,t,-1)}function sn(e,t){return dn(e,t,0)}function mn(e,t){return dn(e,t,1)}function dn(e,t,n){const a=new Date;a.setMonth(a.getMonth()+n),a.setDate(1),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setMonth(l.getMonth()+1),l.setDate(1),l.setHours(0,0,0,0),l.setTime(l.getTime()-1),En(e,t,a,l)}function pn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return En(e,t,n,new Date)}function vn(e,t,n){return En(e,t,n,n)}function hn(e,t,n,a){return fn(e=en(e,t),t,n,a)}function En(e,t,n,a){return e=fn(e=en(e,t),t,E.GREATER_THAN_OR_EQUALS,n),e=fn(e,t,E.LESS_THAN_OR_EQUALS,a)}function fn(e,t,n,a){return tn(e,t,n,a.toISOString())}function gn(e,t,n=!0){return tn(e,t,E.MISSING,n.toString())}function yn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function bn(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Cn(e,t){var n,a;const l=null!==(n=e.count)&&void 0!==n?n:20,r=(null!==(a=e.offset)&&void 0!==a?a:0)+t*l;return bn(e,Math.max(r,0))}function kn(e,t,n){return t===Tn(e)&&void 0!==n&&n===Nn(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function On(e,t){let n=!1;return Tn(e)===t&&(n=!Nn(e)),kn(e,t,n)}function Tn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Nn(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function wn(e){return Yt[e.type]}function jn(e){var t;return null!==(t=Jt[e])&&void 0!==t?t:""}function Sn(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(a).join(" "))}function xn(e,t){var n,a;const l=t.name;return"id"===l?e.id:"meta.versionId"===l?null===(n=e.meta)||void 0===n?void 0:n.versionId:"_lastUpdated"===l?T.createElement(be,{value: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,l;const r=(null===(l=null===(a=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===a?void 0:a.pop())||void 0===l?void 0:l.replaceAll("[x]",""))||"",[o,i]=Ae({type:e.resourceType,value:e},r);if(!o)return null;return T.createElement(De,{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=f(t.expression,[{type:e.resourceType,value:e}]);if(!a||0===a.length)return null;if(n)return T.createElement(De,{propertyType:a[0].type,value:a[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return T.createElement(T.Fragment,null,a.map(((e,t)=>T.createElement("span",{key:`${t}-${a.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function Vn(e){var t;const[n,a]=N({search:JSON.parse(i(e.search))}),l=w(null),r=w(null);function o(){var e,t;const r=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=l.current)||void 0===t?void 0:t.value;if(o){const e=[...r,o];a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function c(){var e,t;const l=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=[...l];e.splice(e.indexOf(o),1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(S((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const s=e.search.resourceType,m=e.schema.types[s],d=null!==(t=n.search.fields)&&void 0!==t?t:[],p=function(e){const t=[],n=new Set,a=new Set;for(const l of Object.keys(e.properties))t.push(l),n.add(l.toLowerCase()),a.add(Sn(l));if(e.searchParams)for(const l of Object.keys(e.searchParams)){const e=Sn(l);n.has(l)||a.has(e)||(t.push(l),n.add(l),a.add(Sn(l)))}return t}(m).filter((e=>!(null==d?void 0:d.includes(e)))).sort();return T.createElement(Kt,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},T.createElement("div",null,T.createElement("table",{style:{margin:"auto"}},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",{colSpan:2,align:"center"},"Available"),T.createElement("th",{colSpan:2,align:"center"},"Selected"))),T.createElement("tbody",null,T.createElement("tr",null,T.createElement("td",{colSpan:2,align:"center"},T.createElement("select",{ref:l,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&o()}(e),onDoubleClick:()=>{o()},"data-testid":"available"},p.map((e=>T.createElement("option",{key:e,value:e},Sn(e)))))),T.createElement("td",{colSpan:2,align:"center"},T.createElement("select",{ref:r,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"selected"},d.map((e=>T.createElement("option",{key:e,value:e},Sn(e)))))))),T.createElement("tfoot",null,T.createElement("tr",null,T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:o},"Add")),T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:c},"Remove")),T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:function(){var e,t;const l=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=[...l],t=e.indexOf(o);u(e,t,t-1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),T.createElement("td",{align:"center"},T.createElement(H,{size:"small",onClick:function(){var e,t;const l=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=[...l],t=e.indexOf(o);u(e,t,t+1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function Dn(e){var t,n;const a=null===(n=null===(t=K().getSchema().types[e.resourceType])||void 0===t?void 0:t.searchParams)||void 0===n?void 0:n[e.filter.code],l=e.filter;return"reference"===(null==a?void 0:a.type)?T.createElement(lt,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?T.createElement(be,{value:l.value}):T.createElement(T.Fragment,null,l.value)}function An(e){var t;const n="filter-value";switch(h(e.schema,e.resourceType,e.searchParam).type){case g.REFERENCE:return T.createElement(ot,{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 g.BOOLEAN:return T.createElement(Pe,{name:n,testid:n,defaultValue:"true"===e.defaultValue,onChange:t=>e.onChange(t.toString())});case g.DATE:return T.createElement(F,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case g.DATETIME:return T.createElement(He,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case g.NUMBER:return T.createElement(F,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case g.QUANTITY:return T.createElement(et,{name:n,defaultValue:In(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return T.createElement(F,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function In(e){if(e){const[t,n,a]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:a}}}function Pn(e){const[t,n]=N(JSON.parse(i(e.search))),[a,l]=N(-1),r=w(t);if(r.current=t,S((()=>{n(JSON.parse(i(e.search)))}),[e.search]),!e.visible)return null;const o=e.schema,c=e.search.resourceType,u=o.types[c].searchParams,s=t.filters||[];return T.createElement(Kt,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(r.current),onCancel:e.onCancel},T.createElement("div",{className:"medplum-filter-editor"},T.createElement("table",{className:"medplum-filter-editor-table"},T.createElement("colgroup",null,T.createElement("col",{style:{width:200}}),T.createElement("col",{style:{width:200}}),T.createElement("col",{style:{width:380}}),T.createElement("col",{style:{width:120}})),T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Field"),T.createElement("th",null,"Operation"),T.createElement("th",null,"Value"),T.createElement("th",null,"Actions"))),T.createElement("tbody",null,s.map(((e,t)=>t===a?T.createElement(Fn,{key:`filter-${t}-${s.length}-input`,schema:o,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const a=[...s];a[t]=e,n(Xt(r.current,a)),l(-1)},onCancel:()=>l(-1)}):T.createElement(Rn,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>l(t),onDelete:()=>n(an(r.current,t))}))),T.createElement(Fn,{schema:o,resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(tn(r.current,e.code,e.operator,e.value))}})))))}function Rn(e){const{filter:t}=e;return T.createElement("tr",null,T.createElement("td",null,Sn(t.code)),T.createElement("td",null,jn(t.operator)),T.createElement("td",null,T.createElement(Dn,{resourceType:e.resourceType,filter:t})),T.createElement("td",null,T.createElement(H,{size:"small",onClick:e.onEdit},"Edit"),T.createElement(H,{size:"small",onClick:e.onDelete},"Delete")))}function Fn(e){var t;const[n,a]=N(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=w(n);l.current=n;const r=e.searchParams[n.code],o=r&&wn(r);return T.createElement("tr",null,T.createElement("td",null,T.createElement(q,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},T.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>T.createElement("option",{key:e,value:e},Sn(e)))))),T.createElement("td",null,o&&T.createElement(q,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},T.createElement("option",{value:""}),o.map((e=>T.createElement("option",{key:e,value:e},jn(e)))))),T.createElement("td",null,r&&n.operator&&T.createElement(An,{schema:e.schema,resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),T.createElement("td",null,n.code&&n.operator&&n.value&&T.createElement(H,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&T.createElement(H,{size:"small",onClick:e.onCancel},"Cancel")))}function Ln(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 l(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return T.createElement(Kt,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},T.createElement("div",{style:{width:500}},T.createElement(kt,{onSubmit:l},T.createElement(An,{schema:e.schema,resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function Mn(){return T.createElement("div",{className:"medplum-menu-separator"})}function qn(e){const[t,n]=N(!1),[a,l]=N(!1),[r,o]=N(void 0),i=w(null),c=w(!1);c.current=t;const u=w(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,S((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),T.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,T.createElement("span",{className:"medplum-submenu-arrow"},"►"),T.createElement(Vt,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function $n(e){if(!e.searchParams)return null;function t(t,n){l(kn(e.search,t.code,n))}function n(t){l(en(e.search,t.code))}function a(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})}function l(t){e.onChange(t)}const r={left:e.x,right:e.x,top:e.y,bottom:e.y};return 1===e.searchParams.length?T.createElement(Vt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},T.createElement(_n,{search:e.search,searchParam:e.searchParams[0],onSort:t,onPrompt:a,onChange:l,onClear:n})):T.createElement(Vt,{visible:e.visible,anchor:r,autoClose:!0,onClose:e.onClose},e.searchParams.map((r=>T.createElement(qn,{key:r.code,title:Sn(r.code)},T.createElement(_n,{search:e.search,searchParam:r,onSort:t,onPrompt:a,onChange:l,onClear:n})))))}function _n(e){switch(e.searchParam.type){case"date":return T.createElement(Un,Object.assign({},e));case"number":case"quantity":return T.createElement(Qn,Object.assign({},e));case"reference":return T.createElement(zn,Object.assign({},e));case"string":case"token":case"uri":return T.createElement(Hn,Object.assign({},e));default:return T.createElement(T.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Un(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),T.createElement(Tt,{onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT_EQUALS)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.ENDS_BEFORE)},"Before..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.STARTS_AFTER)},"After..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Between..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(on(e.search,n))},"Tomorrow"),T.createElement(Tt,{onClick:()=>e.onChange(rn(e.search,n))},"Today"),T.createElement(Tt,{onClick:()=>e.onChange(ln(e.search,n))},"Yesterday"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(mn(e.search,n))},"Next Month"),T.createElement(Tt,{onClick:()=>e.onChange(sn(e.search,n))},"This Month"),T.createElement(Tt,{onClick:()=>e.onChange(un(e.search,n))},"Last Month"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(pn(e.search,n))},"Year to date"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function Qn(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),T.createElement(Tt,{onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT_EQUALS)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.GREATER_THAN)},"Greater than..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.LESS_THAN)},"Less than..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function zn(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function Hn(e){const{searchParam:t}=e,n=t.code;return T.createElement(T.Fragment,null,T.createElement(Tt,{onClick:()=>e.onSort(t,!1)},"Sort A to Z"),T.createElement(Tt,{onClick:()=>e.onSort(t,!0)},"Sort Z to A"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Equals..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.NOT)},"Does not equal..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.CONTAINS)},"Contains..."),T.createElement(Tt,{onClick:()=>e.onPrompt(t,E.EQUALS)},"Does not contain..."),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n))},"Missing"),T.createElement(Tt,{onClick:()=>e.onChange(gn(e.search,n,!1))},"Not missing"),T.createElement(Mn,null),T.createElement(Tt,{onClick:()=>e.onClear(t)},"Clear filters"))}function Bn(e){return T.createElement("div",{className:"medplum-title-bar"},e.children)}class Wn extends Event{constructor(e){super("change"),this.definition=e}}class Gn extends Event{constructor(e){super("load"),this.response=e}}class Kn extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function Yn(e){var t,n,a,l;const r=K(),[o,i]=N(),[c,u]=N(),{search:s,onLoad:m}=e,[d,p]=N({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParams:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=w(d);function h(t){e.onChange&&e.onChange(new Wn(t))}function E(t,n){X(t.target)||(J(t),1!==t.button&&e.onClick&&e.onClick(new Kn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Kn(n,t)))}v.current=d,S((()=>{u(void 0),r.search(s.resourceType,y(Object.assign(Object.assign({},s),{total:"accurate"}))).then((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:e})),m&&m(new Gn(e))})).catch((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),u(e)}))}),[r,s,m]),S((()=>{r.requestSchema(e.search.resourceType).then((e=>{i(Object.assign({},e))}))}),[r,e.search.resourceType]);if(!(null===(t=null==o?void 0:o.types)||void 0===t?void 0:t[e.search.resourceType]))return T.createElement(Ot,null);const f=e.checkboxesEnabled,g=function(e,t){const n=t.resourceType,a=[];for(const l of t.fields||["id","_lastUpdated"])a.push(Gt(e,n,l));return a}(o,s),k=s.resourceType,O=d.searchResponse,j=null==O?void 0:O.entry,x=null==j?void 0:j.map((e=>e.resource)),V=null===(a=null===(n=e.userConfig)||void 0===n?void 0:n.search)||void 0===a?void 0:a.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(k)}));return T.createElement("div",{className:"medplum-search-control",onContextMenu:e=>J(e),"data-testid":"search-control"},!e.hideToolbar&&T.createElement(Bn,null,T.createElement("div",null,T.createElement("h1",null,T.createElement("a",{href:`https://www.hl7.org/fhir/${k.toLowerCase()}.html`,target:"_blank",rel:"noopener"},k)),V&&T.createElement(q,{testid:"saved-search-select",style:{width:80},onChange:e=>{h(b(e))}},T.createElement("option",null),V.map(((e,t)=>T.createElement("option",{key:`${t}-${V.length}`,value:e.criteria},e.name)))),T.createElement(H,{testid:"fields-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),T.createElement(H,{testid:"filters-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&T.createElement(H,{size:"small",onClick:e.onNew},"New..."),e.onExport&&T.createElement(H,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&T.createElement(H,{size:"small",onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),e.onBulk&&T.createElement(H,{size:"small",onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),O&&T.createElement("div",null,T.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,O.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,O.total)," of"," ",null===(l=O.total)||void 0===l?void 0:l.toLocaleString()),T.createElement(H,{testid:"prev-page-button",size:"small",onClick:()=>h(Cn(s,-1))},"<<"),T.createElement(H,{testid:"next-page-button",size:"small",onClick:()=>h(Cn(s,1))},">>"))),T.createElement("table",null,T.createElement("thead",null,T.createElement("tr",null,f&&T.createElement("th",{className:"medplum-search-icon-cell"},T.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={},l=null===(t=v.current)||void 0===t?void 0:t.searchResponse;n&&(null==l?void 0:l.entry)&&l.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)})),g.map((e=>T.createElement("th",{key:e.name,onClick:t=>function(e,t){p(Object.assign(Object.assign({},v.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParams:t}))}(t,e.searchParams)},Sn(e.name),e.searchParams&&T.createElement(Zn,null))))),!e.hideFilters&&T.createElement("tr",null,f&&T.createElement("th",{className:"filters medplum-search-icon-cell"}),g.map((t=>T.createElement("th",{key:t.name,className:"filters"},t.searchParams&&T.createElement(Xn,{resourceType:k,searchParams:t.searchParams,filters:e.search.filters})))))),T.createElement("tbody",null,null==x?void 0:x.map((e=>e&&T.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>E(t,e),onAuxClick:t=>E(t,e)},f&&T.createElement("td",{className:"medplum-search-icon-cell"},T.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)})),g.map((t=>T.createElement("td",{key:t.name},xn(e,t))))))))),0===(null==x?void 0:x.length)&&T.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),c&&T.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},T.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),T.createElement($n,{schema:o,search:e.search,visible:d.popupVisible,x:d.popupX,y:d.popupY,searchParams:d.popupSearchParams,onPrompt:(e,t)=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t}))},onChange:e=>{h(e),p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))},onClose:()=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParams:void 0}))}}),T.createElement(Vn,{schema:o,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}))}}),T.createElement(Pn,{schema:o,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}))}}),T.createElement(Ln,{visible:v.current.filterDialogVisible,title:"Input",schema:o,resourceType:k,searchParam:d.filterDialogSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(tn(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 Jn=T.memo(Yn);function Xn(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?T.createElement("span",null,"no filters"):T.createElement(T.Fragment,null,n.map(((t,a)=>T.createElement("div",{key:`filter-${a}-${n.length}`},jn(t.operator)," ",T.createElement(Dn,{resourceType:e.resourceType,filter:t})))))}function Zn(){return T.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},T.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function ea(e){var t,n,a,l,r;const o=K(),[i,c]=N(),[u,s]=N(),{query:m,fields:d}=e,[p,v]=N(),[h,E]=N({}),f=w();f.current=p;const g=w({});function y(t,n){X(t.target)||(J(t),1!==t.button&&e.onClick&&e.onClick(new Kn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Kn(n,t)))}g.current=h,S((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),S((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))}))}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return T.createElement(Ot,null);const b=e.checkboxesEnabled;return T.createElement("div",{className:"medplum-search-control",onContextMenu:e=>J(e),"data-testid":"search-control"},T.createElement("table",null,T.createElement("thead",null,T.createElement("tr",null,b&&T.createElement("th",{className:"medplum-search-icon-cell"},T.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=f.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!g.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const a=e.target.checked,l={},r=null===(n=null===(t=f.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;a&&r&&r.forEach((e=>{(null==e?void 0:e.id)&&(l[e.id]=!0)})),E(l)}(e)})),d.map((e=>T.createElement("th",{key:e.name},e.name))))),T.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&&T.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>y(t,e),onAuxClick:t=>y(t,e)},b&&T.createElement("td",{className:"medplum-search-icon-cell"},T.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({},g.current);n?a[t]=!0:delete a[t],E(a)}(t,e.id)})),d.map((t=>T.createElement("td",{key:t.name},T.createElement(Wt,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(r=null===(l=null==p?void 0:p.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.length)&&T.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&T.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},T.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&T.createElement(H,{size:"small",onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}const ta=T.memo(ea);function na(e){return T.createElement("div",{className:"medplum-footer"},e.children)}function aa(e,t,n,a){return new(n||(n=Promise))((function(l,r){function o(e){try{c(a.next(e))}catch(e){r(e)}}function i(e){try{c(a.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?l(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 la(e){const t=K();return T.createElement(ae,{loadOptions:(e,n)=>aa(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)=>ra(n,t)-ra(e,t)))}(function(e){const t=new Set,n=[];for(const a of e)t.has(a.id)||(t.add(a.id),n.push(a));return n}(n),t).slice(0,5)}(yield t.graphql(function(e){const t=JSON.stringify(e);if(k(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=>T.createElement(ie,{value:e}),getDisplay:e=>T.createElement(lt,{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 ra(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,oa(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,oa(o(a),t));return n}function oa(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function ia(e){var t,n,a,l,r,o;const i=A(),c=I(),u=G(),s=u.medplum,m=s.getLogins(),[d,v]=N(!1),[h,E]=N(!1);return T.createElement(T.Fragment,null,T.createElement("header",{role:"banner","data-testid":"header",style:{background:e.bgColor}},T.createElement("div",null,T.createElement(le,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>E(!h)},T.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},T.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"}))),T.createElement(le,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},e.title||"Medplum"),u.profile&&T.createElement(la,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&T.createElement("div",{className:"medplum-nav-menu-container"},T.createElement(le,{testid:"header-profile-menu-button",onClick:()=>v(!0)},T.createElement(ie,{size:"small",color:"#f68d42",value:u.profile})),T.createElement(Vt,{visible:d,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>v(!1)},T.createElement("div",{className:"medplum-nav-menu"},T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement(ie,{size:"large",value:u.profile})),T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},T.createElement(Ce,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),T.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(l=null===(a=s.getActiveLogin())||void 0===a?void 0:a.project)||void 0===l?void 0:l.display),T.createElement(H,{testid:"header-profile-link",onClick:()=>{v(!1),e.onProfile&&e.onProfile()}},"Manage your account")),m.length>1&&T.createElement("div",null,T.createElement("hr",null),m.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==p(u.profile)&&T.createElement("div",{className:"medplum-nav-menu-profile",key:null===(n=e.profile)||void 0===n?void 0:n.reference,onClick:()=>{s.setActiveLogin(e),v(!1),window.location.reload()}},T.createElement("div",{className:"medplum-nav-menu-profile-icon"},T.createElement(ie,null)),T.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,T.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),T.createElement("hr",null),T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement(H,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),T.createElement("hr",null),T.createElement("div",{style:{margin:"auto",padding:"8px"}},T.createElement(H,{testid:"header-signout-button",onClick:()=>{v(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),T.createElement("hr",null),T.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},T.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),T.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),T.createElement(Vt,{modal:!0,autoClose:!0,visible:h,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>E(!1)},null===(o=null===(r=e.config)||void 0===r?void 0:r.menu)||void 0===o?void 0:o.map(((t,n)=>{var a,l,r;return T.createElement(T.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},T.createElement("h5",null,t.title),T.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>T.createElement("li",{key:e.target},T.createElement(le,{to:e.target},e.name))))))})),T.createElement("h5",null,"Settings"),T.createElement("ul",null,T.createElement("li",null,T.createElement(le,{to:u.profile},"Profile")),T.createElement("li",null,T.createElement(le,{to:"/changepassword"},"Change password")))))}function ca(e){return T.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},T.createElement("title",null,"Medplum Logo"),T.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),T.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"}),T.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"}),T.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),T.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}const ua=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function sa(e){return T.createElement(Lt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:ua.map((t=>({request:{method:"GET",url:t.replaceAll("$",p(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:m(e),sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:m(e),operator:m(t),issued:(new Date).toISOString(),content:n})})}function ma(e){const t=oe(e.value),[n,a]=N(),l=w();if(l.current=n,S((()=>{var e;a((e=null!=t?t:{resourceType:"PlanDefinition"},Object.assign(Object.assign({},e),{action:ga(e.action)})))}),[t]),!n)return null;function r(e,t){a(Object.assign(Object.assign({},l.current),{[e]:t}))}return T.createElement("div",{className:"medplum-questionnaire-builder"},T.createElement(kt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},T.createElement(se,{title:"Plan Title",description:"The display name of the 'Plan', something that can be ordered.",htmlFor:"title"},T.createElement(F,{defaultValue:n.title,onChange:e=>r("title",e)})),T.createElement(da,{actions:n.action||[],onChange:e=>r("action",e)}),T.createElement(H,{type:"submit",size:"large"},"Save")))}function da(e){const t=w();function n(n){e.onChange(t.current.map((e=>e.id===n.id?n:e)))}return t.current=e.actions,T.createElement("div",{className:"section"},e.actions.map((a=>T.createElement("div",{key:a.id},T.createElement(pa,{action:a,onChange:n,onRemove:()=>{return n=a,void e.onChange(t.current.filter((e=>e!==n)));var n}})))),T.createElement("div",{className:"bottom-actions"},T.createElement("a",{href:"#",onClick:n=>{var a;n.preventDefault(),a={id:fa()},e.onChange([...t.current,a])}},"Add action")))}function pa(e){const{action:t}=e,[n,a]=N(function(e){var t;if(null===(t=e.definitionCanonical)||void 0===t?void 0:t.startsWith("Questionnaire/"))return"questionnaire";return}(t)),l=w();function r(t,n){e.onChange(Object.assign(Object.assign({},l.current),{[t]:n}))}return l.current=e.action,T.createElement("div",{className:"section"},T.createElement(se,{title:"Action Title",description:"The name of the action, an operational task to be completed.",htmlFor:`actionTitle-${t.id}`},T.createElement(F,{name:`actionTitle-${t.id}`,defaultValue:t.title,onChange:e=>r("title",e)})),T.createElement(se,{title:"Action Type",description:"The type of the action to be performed.",htmlFor:`actionType-${t.id}`},T.createElement(q,{name:`actionType-${t.id}`,defaultValue:n,onChange:a},T.createElement("option",null),T.createElement("option",{value:"appointment"},"Appointment"),T.createElement("option",{value:"documentation"},"Documentation"),T.createElement("option",{value:"lab"},"Lab"),T.createElement("option",{value:"questionnaire"},"Questionnaire"),T.createElement("option",{value:"shipping"},"Shipping"),T.createElement("option",{value:"task"},"Task"))),t.action&&t.action.length>0&&T.createElement(da,{actions:t.action,onChange:e=>r("action",e)}),(()=>{switch(n){case"appointment":return T.createElement("div",null,"Appointment details");case"documentation":return T.createElement("div",null,"Documentation details");case"lab":return T.createElement(va,{action:t,onChange:e.onChange});case"questionnaire":return T.createElement(ha,{action:t,onChange:e.onChange});case"shipping":return T.createElement("div",null,"Shipping details");case"task":return T.createElement("div",null,"Task details");default:return null}})(),T.createElement("div",{className:"bottom-actions"},T.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}function va(e){return T.createElement(se,{title:"Lab Details",description:"Choose observations definitions",htmlFor:e.action.id},T.createElement("a",{href:"#",onClick:()=>e.onChange(e.action)},"Add"))}function ha(e){const{id:t,definitionCanonical:n}=e.action,a=(null==n?void 0:n.startsWith("Questionnaire/"))?{reference:n}:void 0;return T.createElement(se,{title:"Questionnaire",description:"Choose questionnaire",htmlFor:t},T.createElement(rt,{name:t,resourceType:"Questionnaire",defaultValue:a,onChange:t=>{t?e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:p(t)})):e.onChange(Object.assign(Object.assign({},e.action),{definitionCanonical:void 0}))}}))}let Ea=1;function fa(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Ea=Math.max(Ea,t+1))}return e}return"id-"+Ea++}function ga(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:fa(e.id),action:ga(e.action)})))}var ya;function ba(e,t){return Object.assign(Object.assign({},e),{item:Ca(e.item,t)})}function Ca(e,t){if(e)return e.map((e=>function(e,t){const{linkId:n,type:a}=e;if(!n||!a)return e;if("group"===a)return Object.assign(Object.assign({},e),{item:Ca(e.item,t)});const l=t[n];if(!l)return e;let r;switch(a){case u.boolean:r={valueBoolean:"true"===l};break;case u.code:case u.Coding:r={valueCoding:{code:l}};break;case u.date:r={valueDate:l};break;case u.dateTime:case u.instant:r={valueDateTime:l};break;case u.decimal:r={valueDecimal:parseFloat(l)};break;case u.integer:case u.positiveInt:case u.unsignedInt:r={valueInteger:parseInt(l)};break;case u.SystemString:case u.string:case u.markdown:r={valueString:l};break;case u.time:r={valueTime:l};break;case u.uri:case u.url:r={valueUri:l};break;case u.canonical:case u.Reference:r={valueReference:{reference:l}}}if(!r)return e;return Object.assign(Object.assign({},e),{initial:[r]})}(e,t)))}function ka(e){return"choice"===e.type||"open-choice"===e.type}function Oa(e){const t=K(),n=t.getProfile(),[a,l]=N(),r=oe(e.questionnaire),[o,i]=N();return S((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),S((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:p(e),item:Sa(e.item)}}(r):void 0)}),[r]),a&&r?T.createElement(kt,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:p(r),subject:e.subject,source:m(n),authored:(new Date).toISOString()}))}},r.title&&T.createElement("h1",null,r.title),r.item&&T.createElement(Ta,{items:r.item,onChange:function(e){i({resourceType:"QuestionnaireResponse",item:e})}}),T.createElement(H,{type:"submit",size:"large"},"OK")):null}function Ta(e){const[t,n]=N(Sa(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return T.createElement(T.Fragment,null,e.items.map(((e,t)=>{if(e.type===ya.display)return T.createElement("p",{key:e.linkId},e.text);if(e.type===ya.group)return T.createElement(Na,{key:e.linkId,item:e,onChange:e=>a(t,e)});if(e.type===ya.boolean){const n=e.initial&&e.initial.length>0?e.initial[0]:void 0;return T.createElement(ce,{key:e.linkId,title:e.text,htmlFor:e.linkId},T.createElement(Pe,{name:e.linkId,defaultValue:null==n?void 0:n.valueBoolean,onChange:n=>a(t,{linkId:e.linkId,answer:[{valueBoolean:n}]})}))}return T.createElement(se,{key:e.linkId,htmlFor:e.linkId,title:e.text||""},T.createElement(Na,{item:e,onChange:e=>a(t,e)}))})))}function Na(e){const t=e.item,n=t.type;if(!n)return null;const a=t.linkId;if(!a)return null;const l=t.initial&&t.initial.length>0?t.initial[0]:void 0;function r(n){e.onChange({linkId:t.linkId,answer:[n]})}switch(n){case ya.group:return T.createElement("div",null,T.createElement("h3",null,t.text),t.item&&T.createElement(Ta,{items:t.item,onChange:function(n){e.onChange({linkId:t.linkId,item:n})}}));case ya.boolean:return T.createElement(Pe,{name:a,defaultValue:null==l?void 0:l.valueBoolean,onChange:e=>r({valueBoolean:e})});case ya.decimal:return T.createElement(F,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>r({valueDecimal:parseFloat(e)})});case ya.integer:return T.createElement(F,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>r({valueInteger:parseInt(e)})});case ya.date:return T.createElement(F,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>r({valueDate:e})});case ya.dateTime:return T.createElement(He,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>r({valueDateTime:e})});case ya.time:return T.createElement(F,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>r({valueTime:e})});case ya.string:return T.createElement(F,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case ya.text:return T.createElement(Ke,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>r({valueString:e})});case ya.url:return T.createElement(F,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>r({valueUri:e})});case ya.attachment:return T.createElement(ne,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>r({valueAttachment:e})});case ya.reference:return T.createElement(ot,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>r({valueReference:e})});case ya.quantity:return T.createElement(et,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>r({valueQuantity:e})});case ya.choice:case ya.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)?T.createElement(wa,{name:a,item:t,initial:l,onChangeAnswer:r}):T.createElement(ja,{name:a,item:t,initial:l,onChangeAnswer:r})}return null}function wa(e){const{name:t,item:n,initial:r}=e,o=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],c=s({type:"QuestionnaireItemInitial",value:r},"value");return T.createElement("select",{id:t,name:t,className:"medplum-select",onChange:t=>{const l=t.currentTarget.selectedIndex;if(0===l)return void e.onChangeAnswer({});const r=n.answerOption[l-1],o=s({type:"QuestionnaireItemAnswerOption",value:r},"value"),i="value"+a(o.type);e.onChangeAnswer({[i]:o.value})}},T.createElement("option",null),n.answerOption&&n.answerOption.map(((e,n)=>{const a=s({type:"QuestionnaireItemAnswerOption",value:e},"value"),l=`${t}-option-${n}`;return T.createElement("option",{key:l,value:a.value,selected:c&&i(a)===i(c)},T.createElement(De,{property:o,propertyType:a.type,value:a.value}))})))}function ja(e){const{name:t,item:n,initial:r,onChangeAnswer:o}=e,c=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=s({type:"QuestionnaireItemInitial",value:r},"value");return T.createElement(T.Fragment,null,n.answerOption&&n.answerOption.map(((e,n)=>{const l=s({type:"QuestionnaireItemAnswerOption",value:e},"value"),r="value"+a(l.type),m=`${t}-option-${n}`;return T.createElement("div",{key:m,className:"medplum-questionnaire-option-row"},T.createElement("div",{className:"medplum-questionnaire-option-checkbox"},T.createElement("input",{type:"radio",id:m,name:t,value:l.value,defaultChecked:u&&i(l)===i(u),onChange:()=>o({[r]:l.value})})),T.createElement("div",null,T.createElement("label",{htmlFor:m},T.createElement(De,{property:c,propertyType:l.type,value:l.value}))))})))}function Sa(e){var t;return null!==(t=null==e?void 0:e.map(xa))&&void 0!==t?t:[]}function xa(e){var t,n;return{linkId:e.linkId,item:Sa(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Va))&&void 0!==n?n:[]}}function Va(e){return Object.assign({},e)}function Da(e){const t=K(),n=oe(e.questionnaire),[a,l]=N(),[r,o]=N(),[i,c]=N(),[u,s]=N();function m(){s(void 0)}function d(){c(void 0)}return S((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),S((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||La(),item:Ma(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?T.createElement("div",{className:"medplum-questionnaire-builder"},T.createElement(kt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},T.createElement(Aa,{item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),T.createElement(H,{type:"submit",size:"large"},"Save"))):null}function Aa(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===ya.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=w();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 T.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){J(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){J(t),e.setHoverKey(e.item.id)}},i?T.createElement(T.Fragment,null,l&&T.createElement("div",null,T.createElement(F,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&T.createElement("div",null,T.createElement(q,{defaultValue:a.type,onChange:e=>d("type",e)},T.createElement("option",{value:"display"},"Display"),T.createElement("optgroup",{label:"Question"},T.createElement("option",{value:"boolean"},"Boolean"),T.createElement("option",{value:"decimal"},"Decimal"),T.createElement("option",{value:"integer"},"Integer"),T.createElement("option",{value:"date"},"Date"),T.createElement("option",{value:"dateTime"},"Date/Time"),T.createElement("option",{value:"time"},"Time"),T.createElement("option",{value:"string"},"String"),T.createElement("option",{value:"text"},"Text"),T.createElement("option",{value:"url"},"URL"),T.createElement("option",{value:"choice"},"Choice"),T.createElement("option",{value:"open-choice"},"Open Choice"),T.createElement("option",{value:"attachment"},"Attachment"),T.createElement("option",{value:"reference"},"Reference"),T.createElement("option",{value:"quantity"},"Quantity")))),!l&&T.createElement(Ke,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),ka(a)&&T.createElement(Ia,{options:a.answerOption,onChange:e=>d("answerOption",e)})):T.createElement(T.Fragment,null,n.title&&T.createElement("h1",null,n.title),a.text&&T.createElement("p",null,a.text),!r&&T.createElement(Na,{item:a,onChange:()=>{}})),a.item&&a.item.map((t=>T.createElement("div",{key:t.id},T.createElement(Aa,{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)})))),!r&&T.createElement("div",{className:"top-actions"},i?T.createElement(F,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):T.createElement("div",null,o)),T.createElement("div",{className:"bottom-actions"},r&&T.createElement(T.Fragment,null,T.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:La(),linkId:Fa("q"),type:"string",text:"Question"})}},"Add item"),T.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:La(),linkId:Fa("g"),type:"group",text:"Group"})}},"Add group")),!l&&T.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Ia(e){var t;const n=l.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return T.createElement("div",null,a.map((t=>{const[l,r]=Ae({type:"QuestionnaireItemAnswerOption",value:t},"value");return T.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},T.createElement("div",null,T.createElement(ct,{key:t.id,name:"value[x]",property:n,defaultPropertyType:r,defaultValue:l,onChange:(n,l)=>{const r=[...a],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[l]:n},e.onChange(r)}})),T.createElement("div",null,T.createElement("a",{href:"#",onClick:n=>{J(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),T.createElement("a",{href:"#",onClick:t=>{J(t),e.onChange([...a,{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"}(ya||(ya={}));let Pa=1,Ra=1;function Fa(e){return e+Pa++}function La(){return"id-"+Ra++}function Ma(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||La(),item:Ma(e.item),answerOption:qa(e.answerOption)})))}function qa(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||La()})))}function $a(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 _a(e){const t=K(),{googleClientId:n,handleGoogleCredential:a}=e,l=w(null),[r,o]=N("undefined"!=typeof google),[i,c]=N(!1),[u,s]=N(!1);return S((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:n,callback:a}),c(!0)),l.current&&!u&&(google.accounts.id.renderButton(l.current,{}),s(!0))):$a("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,i,r,l,u,a]),n?T.createElement("div",{ref:l}):null}function Ua(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;return(null!==(n=null===(t="undefined")?void 0:t.split(","))&&void 0!==n?n:[]).includes(a)?"undefined":void 0}function Qa(e){"undefined"==typeof grecaptcha&&$a("https://www.google.com/recaptcha/api.js?render="+e)}function za(e){return new Promise((t=>{grecaptcha.ready((()=>{grecaptcha.execute(e,{action:"submit"}).then(t)}))}))}function Ha(e){const t=K(),n=Ua(e.googleClientId),a=e.recaptchaSiteKey,[l,r]=N(),o=R(l,void 0);function i(n,a){return aa(this,void 0,void 0,(function*(){try{let l;l="patient"===e.type?yield t.startNewPatient(n,a):yield t.startNewProject(n,a),yield t.processCode(l.code),e.onSuccess()}catch(e){r(e)}}))}return S((()=>Qa(a)),[a]),T.createElement(Ht,{width:450},T.createElement(kt,{style:{maxWidth:400},onSubmit:n=>aa(this,void 0,void 0,(function*(){try{const l=yield za(a),r={projectId:e.projectId,projectName:n.projectName,firstName:n.firstName,lastName:n.lastName,email:n.email,password:n.password,remember:"true"===n.remember,recaptchaSiteKey:a,recaptchaToken:l};i(r,yield t.startNewUser(r))}catch(e){r(e)}}))},T.createElement("div",{className:"medplum-center"},e.children),o&&T.createElement("div",{className:"medplum-input-error"},o.map((e=>{var t,n;return T.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&&T.createElement(T.Fragment,null,T.createElement("div",{className:"medplum-signin-google-container"},T.createElement(_a,{googleClientId:n,handleGoogleCredential:n=>aa(this,void 0,void 0,(function*(){try{const a={googleClientId:n.clientId,googleCredential:n.credential},l=yield t.startGoogleLogin(a),r=O(a.googleCredential);i({projectId:e.projectId,firstName:r.given_name,lastName:r.family_name,email:r.email},l)}catch(e){r(e)}}))})),T.createElement("div",{className:"medplum-signin-separator"},"or")),T.createElement(se,{title:"First Name",htmlFor:"firstName",outcome:l},T.createElement(F,{name:"firstName",type:"text",testid:"firstName",placeholder:"First name",required:!0,autoFocus:!0,outcome:l})),T.createElement(se,{title:"Last Name",htmlFor:"lastName",outcome:l},T.createElement(F,{name:"lastName",type:"text",testid:"lastName",placeholder:"Last name",required:!0,outcome:l})),"project"===e.type&&T.createElement(se,{title:"Project Name",htmlFor:"projectName",outcome:l},T.createElement(F,{name:"projectName",type:"text",testid:"projectName",placeholder:"My Project",required:!0,outcome:l})),T.createElement(se,{title:"Email",htmlFor:"email",outcome:l},T.createElement(F,{name:"email",type:"email",testid:"email",placeholder:"name@domain.com",required:!0,outcome:l})),T.createElement(se,{title:"Password",htmlFor:"password",outcome:l},T.createElement(F,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:l})),T.createElement("p",{style:{fontSize:"12px",color:"#888"}},"By clicking submit you agree to the Medplum ",T.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",T.createElement("a",{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),T.createElement("p",{style:{fontSize:"12px",color:"#888"}},"This site is protected by reCAPTCHA and the Google"," ",T.createElement("a",{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",T.createElement("a",{href:"https://policies.google.com/terms"},"Terms of Service")," apply."),T.createElement("div",{className:"medplum-signin-buttons"},T.createElement("div",null,T.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),T.createElement("label",{htmlFor:"remember"},"Remember me")),T.createElement("div",null,T.createElement(H,{type:"submit",testid:"submit"},"Create account")))))}function Ba(e){return T.createElement("span",{className:`medplum-status medplum-status-${e.status}`},e.status)}function Wa(e){var t;const n=K(),a=oe(e.value),[l,r]=N(!1),[o,i]=N();return S((()=>{a&&!l&&(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),r(!0))}),[n,a,l]),a&&o?T.createElement("div",{className:"medplum-request-group"},null===(t=a.action)||void 0===t?void 0:t.map(((t,n)=>{var a,l,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===p(t.resource))return t.resource;return}(t.resource),m=null===(l=null===(a=null==s?void 0:s.input)||void 0===a?void 0:a[0])||void 0===l?void 0:l.valueReference,d=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 T.createElement("div",{className:"medplum-request-group-task",key:`action-${n}`},T.createElement("div",{className:"medplum-request-group-task-checkmark"},"completed"===(null==s?void 0:s.status)?"🗹":"☐"),T.createElement("div",{className:"medplum-request-group-task-details"},T.createElement("div",{className:"medplum-request-group-task-title"},t.title),T.createElement("div",null,"Last edited by ",T.createElement(lt,{value:null===(c=null==s?void 0:s.meta)||void 0===c?void 0:c.author})," on ",T.createElement(be,{value:null===(u=null==s?void 0:s.meta)||void 0===u?void 0:u.lastUpdated})),T.createElement("div",null,"Status: ",T.createElement(Ba,{status:(null==s?void 0:s.status)||"unknown"}))),T.createElement("div",{className:"medplum-request-group-task-actions"},m&&!d&&T.createElement(H,{onClick:()=>e.onStart(s,m)},"Start"),m&&d&&T.createElement(H,{onClick:()=>e.onEdit(s,m,d)},"Edit")))}))):null}function Ga(e,t){return function(e,t,n){const a=[];let l=e;l.snake&&(l=l.prev);for(;l&&l.prev&&l.prev.j>=0;){const e=l.i,r=l.j;l=l.prev;const o=l.i,i=l.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",a.push({original:c,revised:u,type:s}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,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<l;r++){for(let l=-r;l<=r;l+=2){const c=o+l,u=c-1,s=i[c+1],m=i[u];let d,p=0;l===-r||l!==r&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let v=p-l,h={i:p,j:v,prev:Ka(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+r-1]=void 0}return}(e,t),e,t)}function Ka(e){return e&&!e.snake&&e.prev?e.prev:e}function Ya(e){const t=e.entry.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 a=Ga(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,o=l.revised.lines;if("delete"!==l.type&&"change"!==l.type||e.splice(a,r.length),"insert"===l.type||"change"===l.type)for(let r=0;r<l.revised.lines.length;r++)e.splice(a+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 Ja(e){var t,n;const a=K(),[l,r]=N(e.history);if(S((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then((e=>r(e)))}),[a,e.history,e.resourceType,e.id]),!l)return T.createElement("div",null,"Loading...");const o=null===(n=null===(t=l.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=Ya(l);return T.createElement("div",{className:"medplum-blame-container"},T.createElement("table",{className:"medplum-blame"},T.createElement("tbody",null,i.map(((e,t)=>T.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&T.createElement("td",{className:"details",rowSpan:e.span},T.createElement(M,{justifyContent:"space-between"},T.createElement(pt,{value:e.meta.author,size:"xsmall",link:!0}),T.createElement(le,{to:Xa(o,e.meta.versionId)},Za(e.meta.lastUpdated)))),T.createElement("td",{className:"line-number"},t+1),T.createElement("td",{className:"line"},T.createElement("pre",{className:"line-pre"},e.value))))))))}function Xa(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function Za(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return el(n,"year");const a=Math.floor(t/2592e3);if(a>0)return el(a,"month");const l=Math.floor(t/86400);if(l>0)return el(l,"day");const r=Math.floor(t/3600);if(r>0)return el(r,"hour");const o=Math.floor(t/60);return o>0?el(o,"minute"):el(t,"second")}function el(e,t){return`${e} ${1===e?t:t+"s"} ago`}function tl(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=Ga(i(t,!0).match(/[^\r\n]+/g),i(n,!0).match(/[^\r\n]+/g));return T.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>T.createElement(nl,{key:"delta"+t,delta:e}))))}function nl(e){return T.createElement(T.Fragment,null,"...",T.createElement("br",null),e.delta.original.lines.length>0&&T.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&T.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",T.createElement("br",null))}function al(e){var t;const n=K(),[a,l]=N(e.history);return S((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then((e=>l(e)))}),[n,e.history,e.resourceType,e.id]),a?T.createElement("table",{className:"medplum-table"},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"Author"),T.createElement("th",null,"Date"),T.createElement("th",null,"Version"))),T.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map((e=>{var t,n;return T.createElement(ll,{key:null===(n=null===(t=e.resource)||void 0===t?void 0:t.meta)||void 0===n?void 0:n.versionId,version:e.resource})})))):T.createElement("div",null,"Loading...")}function ll(e){var t,n,a;return T.createElement("tr",null,T.createElement("td",null,T.createElement(pt,{value:null===(t=e.version.meta)||void 0===t?void 0:t.author,link:!0})),T.createElement("td",null,T.createElement(be,{value:null===(n=e.version.meta)||void 0===n?void 0:n.lastUpdated})),T.createElement("td",null,T.createElement(le,{to:rl(e.version)},null===(a=e.version.meta)||void 0===a?void 0:a.versionId)))}function rl(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function ol(e){const[t,n]=N(il);function a(e){n((t=>{const n=new Date(t.getTime());return n.setMonth(t.getMonth()+e),n}))}const l=D((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),a=[];let l=[];for(let e=0;e<n.getDay();e++)l.push(void 0);for(;n.getMonth()===e.getMonth();)l.push({date:new Date(n.getTime()),available:cl(n,t)}),6===n.getDay()&&(a.push(l),l=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)l.push(void 0);a.push(l)}return a}(t,e.slots)),[t,e.slots]);return T.createElement("div",null,T.createElement(M,null,T.createElement("p",{style:{flex:1}},(r=t).toLocaleString("default",{month:"long"})+" "+r.getFullYear()),T.createElement("p",null,T.createElement(H,{label:"Previous month",onClick:()=>a(-1)},"<"),T.createElement(H,{label:"Next month",onClick:()=>a(1)},">"))),T.createElement("table",{className:"medplum-calendar-table"},T.createElement("thead",null,T.createElement("tr",null,T.createElement("th",null,"SUN"),T.createElement("th",null,"MON"),T.createElement("th",null,"TUE"),T.createElement("th",null,"WED"),T.createElement("th",null,"THU"),T.createElement("th",null,"FRI"),T.createElement("th",null,"SAT"))),T.createElement("tbody",null,l.map(((t,n)=>T.createElement("tr",{key:"week-"+n},t.map(((t,n)=>T.createElement("td",{key:"day-"+n},t&&T.createElement("button",{disabled:!t.available,onClick:()=>e.onClick(t.date)},t.date.getDate()))))))))));var r}function il(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function cl(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 ul(e){var t;const n=K(),a=oe(e.schedule),[l,r]=N();w().current=l;const[o,i]=N(),[c,u]=N(),[s,m]=N(),[d,v]=N();if(S((()=>{a?n.search("Slot","schedule="+p(a)).then((e=>{r(e.entry.map((e=>e.resource)))})):r(void 0)}),[n,a]),!a||!l)return null;const h=null===(t=a.actor)||void 0===t?void 0:t[0];return T.createElement("div",{className:"medplum-calendar-container","data-testid":"scheduler"},T.createElement("div",{className:"medplum-calendar-info-pane"},h&&T.createElement(ie,{value:h,size:"large"}),h&&T.createElement("h1",null,T.createElement(lt,{value:h})),T.createElement("p",null,"1 hour"),o&&T.createElement("p",null,o.toLocaleDateString()),c&&T.createElement("p",null,sl(new Date(c.start)))),T.createElement("div",{className:"medplum-calendar-selection-pane"},!o&&T.createElement("div",null,T.createElement("h3",null,"Select date"),T.createElement(ol,{slots:l,onClick:i})),o&&!c&&T.createElement("div",null,T.createElement("h3",null,"Select time"),l.map((e=>{const t=new Date(e.start);return t.getTime()>o.getTime()&&t.getTime()<o.getTime()+864e5&&T.createElement("div",{key:e.id},T.createElement(H,{style:{width:150},onClick:()=>u(e)},sl(t)))}))),o&&c&&!s&&T.createElement("div",null,T.createElement("h3",null,"Enter your info"),T.createElement(se,{title:"Name",htmlFor:"name"},T.createElement(F,{name:"name"})),T.createElement(se,{title:"Email",htmlFor:"email"},T.createElement(F,{name:"email"})),T.createElement(H,{primary:!0,onClick:()=>m("info")},"Next")),o&&c&&s&&!d&&T.createElement("div",null,T.createElement("h3",null,"Custom questions"),T.createElement(se,{title:"Question 1",htmlFor:"q1"},T.createElement(F,{name:"q1"})),T.createElement(se,{title:"Question 2",htmlFor:"q2"},T.createElement(F,{name:"email"})),T.createElement(se,{title:"Question 3",htmlFor:"q3"},T.createElement(F,{name:"email"})),T.createElement(H,{primary:!0,onClick:()=>v("form")},"Next")),o&&c&&s&&d&&T.createElement("div",null,T.createElement("h3",null,"You're all set!"),T.createElement("p",null,"Check your email for a calendar invite."))))}function sl(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function ml(e){return T.createElement(Lt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${p(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${p(e)}`}},{request:{method:"GET",url:`Media?_count=100&based-on=${p(e)}`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${p(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[m(e)],subject:e.subject,sender:m(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[m(e)],subject:e.subject,operator:m(t),issued:(new Date).toISOString(),content:n})})}function dl(e){const t=K(),[n,a]=N(void 0),[l,r]=N(void 0);function o(n){n.login&&a(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 T.createElement(Ht,{width:450},n?l?T.createElement(vl,{login:n,memberships:l,handleAuthResponse:o}):T.createElement("div",null,"Success"):T.createElement(pl,{clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:e.googleClientId,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function pl(e){const t=K(),n=Ua(e.googleClientId),[a,l]=N(),r=R(a,void 0);return T.createElement(kt,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({clientId:e.clientId,scope:e.scope,nonce:e.nonce,email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(l)}},T.createElement("div",{className:"medplum-center"},e.children),r&&T.createElement("div",{className:"medplum-input-error"},r.map((e=>{var t,n;return T.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&&T.createElement(T.Fragment,null,T.createElement("div",{className:"medplum-signin-google-container"},T.createElement(_a,{googleClientId:n,handleGoogleCredential:n=>{t.startGoogleLogin({clientId:e.clientId,scope:e.scope,nonce:e.nonce,googleClientId:n.clientId,googleCredential:n.credential}).then(e.handleAuthResponse).catch(l)}})),T.createElement("div",{className:"medplum-signin-separator"},"or")),T.createElement(se,{title:"Email",htmlFor:"email",outcome:a},T.createElement(F,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:a})),T.createElement(se,{title:"Password",htmlFor:"password",outcome:a},T.createElement(F,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:a})),T.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&T.createElement("div",null,e.onForgotPassword&&T.createElement(le,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&T.createElement(le,{testid:"register",onClick:e.onRegister},"Register")),T.createElement("div",null,T.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),T.createElement("label",{htmlFor:"remember"},"Remember me")),T.createElement("div",null,T.createElement(H,{type:"submit",testid:"submit"},"Sign in"))))}function vl(e){const t=K();return T.createElement("div",null,T.createElement("div",{className:"medplum-center"},T.createElement(ca,{size:32}),T.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return T.createElement("div",{className:"medplum-nav-menu-profile",key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse)}},T.createElement("div",{className:"medplum-nav-menu-profile-icon"},T.createElement(ie,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),T.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,T.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function hl(e){let t="medplum-tab";function n(t){J(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),T.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function El(e){return T.createElement(St,{className:"medplum-surface",height:50},T.createElement("div",{role:"tablist",className:"medplum-tablist"},T.createElement("div",{className:"medplum-tablist-foreground"},T.Children.map(e.children,((t,n)=>T.isValidElement(t)&&t.type===hl?T.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function fl(e){return T.createElement("div",{role:"tabpanel"},e.children)}function gl(e){return T.createElement(T.Fragment,null,T.Children.map(e.children,(t=>T.isValidElement(t)&&t.type===fl&&t.props.name===e.value?t:null)))}export{P as AddressDisplay,U as AddressInput,z as AttachmentArrayDisplay,te as AttachmentArrayInput,ne as AttachmentInput,ae as Autocomplete,ie as Avatar,dt as BackboneElementInput,H as Button,Pe as Checkbox,ce as CheckboxFormSection,_e as CodeInput,fe as CodeableConceptDisplay,Re as CodeableConceptInput,ye as ContactDetailDisplay,ze as ContactDetailInput,ge as ContactPointDisplay,Qe as ContactPointInput,be as DateTimeDisplay,He as DateTimeInput,zt as DefaultResourceTimeline,vt as DiagnosticReportDisplay,Ht as Document,ut as ElementDefinitionInputSelector,st as ElementDefinitionTypeInput,Bt as EncounterTimeline,xt as ErrorBoundary,ea as FhirPathTable,na as FooterLinks,kt as Form,se as FormSection,ia as Header,Ce as HumanNameDisplay,Je as HumanNameInput,Xe as IdentifierInput,F as Input,M as InputRow,Ot as Loading,ca as Logo,le as MedplumLink,W as MedplumProvider,ta as MemoizedFhirPathTable,Jn as MemoizedSearchControl,Tt as MenuItem,ht as ObservationTable,sa as PatientTimeline,ma as PlanDefinitionBuilder,Vt as Popup,Da as QuestionnaireBuilder,Oa as QuestionnaireForm,Na as QuestionnaireFormItem,ya as QuestionnaireItemType,we as RangeDisplay,nt as RangeInput,ot as ReferenceInput,Ha as RegisterForm,Wa as RequestGroupDisplay,Ve as ResourceArrayDisplay,it as ResourceArrayInput,pt as ResourceBadge,Ja as ResourceBlame,tl as ResourceDiff,me as ResourceForm,al as ResourceHistoryTable,rt as ResourceInput,lt as ResourceName,De as ResourcePropertyDisplay,ct as ResourcePropertyInput,jt as ResourceTable,Lt as ResourceTimeline,ul as Scheduler,St as Scrollable,Wn as SearchChangeEvent,Kn as SearchClickEvent,Yn as SearchControl,Vn as SearchFieldEditor,Pn as SearchFilterEditor,Gn as SearchLoadEvent,q as Select,ml as ServiceRequestTimeline,dl as SignInForm,Ba as StatusBadge,hl as Tab,El as TabList,fl as TabPanel,gl as TabSwitch,Ke as TextArea,Dt as Timeline,At as TimelineItem,Bn as TitleBar,ee as UploadButton,vn as addDateEqualsFilter,hn as addDateFilter,En as addDateFilterBetween,nn as addField,tn as addFilter,un as addLastMonthFilter,gn as addMissingFilter,mn as addNextMonthFilter,ba as addQuestionnaireInitialValues,sn as addThisMonthFilter,rn as addTodayFilter,on as addTomorrowFilter,pn as addYearToDateFilter,ln as addYesterdayFilter,Sn as buildFieldNameString,Zt as clearFilters,en as clearFiltersOnField,Be as convertIsoToLocal,We as convertLocalToIso,$a as createScriptTag,an as deleteFilter,je as formatRangeString,jn as getOpString,za as getRecaptcha,wn as getSearchOperators,Tn as getSortField,Za as getTimeString,Ae as getValueAndType,yn as hasFilterOnField,Qa as initRecaptcha,ka as isChoiceQuestion,Nn as isSortDescending,Cn as movePage,yt as parseForm,xn as renderValue,Xt as setFilters,bn as setOffset,de as setPropertyValue,kn as setSort,It as sortByDateAndPriority,On as toggleSort,K as useMedplum,G as useMedplumContext,Y as useMedplumProfile,oe as useResource};
2
2
  //# sourceMappingURL=index.min.js.map