@medplum/react 1.0.4 → 1.0.6

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 (379) hide show
  1. package/README.md +2 -1
  2. package/dist/cjs/AsyncAutocomplete/AsyncAutocomplete.d.ts +14 -0
  3. package/dist/cjs/DiagnosticReportDisplay/DiagnosticReportDisplay.stories.d.ts +1 -0
  4. package/dist/cjs/FhirPathTable/FhirPathTable.d.ts +2 -2
  5. package/dist/cjs/MoneyDisplay/MoneyDisplay.d.ts +6 -0
  6. package/dist/cjs/MoneyInput/MoneyInput.d.ts +10 -0
  7. package/dist/cjs/MoneyInput/MoneyInput.stories.d.ts +6 -0
  8. package/dist/cjs/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +3 -6
  9. package/dist/cjs/auth/ChooseProfileForm.d.ts +2 -1
  10. package/dist/cjs/auth/ChooseScopeForm.d.ts +2 -1
  11. package/dist/cjs/auth/MfaForm.d.ts +7 -0
  12. package/dist/cjs/auth/SignInForm.d.ts +10 -0
  13. package/dist/cjs/{index.js → index.cjs} +860 -642
  14. package/dist/cjs/index.cjs.map +1 -0
  15. package/dist/cjs/index.d.ts +3 -0
  16. package/dist/cjs/index.min.cjs +1 -0
  17. package/dist/cjs/stories/referenceLab.d.ts +3 -1
  18. package/dist/esm/AddressDisplay/{AddressDisplay.js → AddressDisplay.mjs} +1 -1
  19. package/dist/esm/AddressDisplay/AddressDisplay.mjs.map +1 -0
  20. package/dist/esm/AddressInput/{AddressInput.js → AddressInput.mjs} +9 -9
  21. package/dist/esm/AddressInput/AddressInput.mjs.map +1 -0
  22. package/dist/esm/AnnotationInput/{AnnotationInput.js → AnnotationInput.mjs} +2 -2
  23. package/dist/esm/AnnotationInput/AnnotationInput.mjs.map +1 -0
  24. package/dist/esm/AsyncAutocomplete/AsyncAutocomplete.d.ts +14 -0
  25. package/dist/esm/AsyncAutocomplete/AsyncAutocomplete.mjs +113 -0
  26. package/dist/esm/AsyncAutocomplete/AsyncAutocomplete.mjs.map +1 -0
  27. package/dist/esm/AttachmentArrayDisplay/{AttachmentArrayDisplay.js → AttachmentArrayDisplay.mjs} +2 -2
  28. package/dist/esm/AttachmentArrayDisplay/AttachmentArrayDisplay.mjs.map +1 -0
  29. package/dist/esm/AttachmentArrayInput/{AttachmentArrayInput.js → AttachmentArrayInput.mjs} +6 -7
  30. package/dist/esm/AttachmentArrayInput/AttachmentArrayInput.mjs.map +1 -0
  31. package/dist/esm/AttachmentButton/{AttachmentButton.js → AttachmentButton.mjs} +5 -7
  32. package/dist/esm/AttachmentButton/AttachmentButton.mjs.map +1 -0
  33. package/dist/esm/AttachmentDisplay/AttachmentDisplay.mjs +21 -0
  34. package/dist/esm/AttachmentDisplay/AttachmentDisplay.mjs.map +1 -0
  35. package/dist/esm/AttachmentInput/{AttachmentInput.js → AttachmentInput.mjs} +5 -5
  36. package/dist/esm/AttachmentInput/AttachmentInput.mjs.map +1 -0
  37. package/dist/esm/BackboneElementDisplay/{BackboneElementDisplay.js → BackboneElementDisplay.mjs} +4 -4
  38. package/dist/esm/BackboneElementDisplay/BackboneElementDisplay.mjs.map +1 -0
  39. package/dist/esm/BackboneElementInput/{BackboneElementInput.js → BackboneElementInput.mjs} +10 -11
  40. package/dist/esm/BackboneElementInput/BackboneElementInput.mjs.map +1 -0
  41. package/dist/esm/CalendarInput/{CalendarInput.js → CalendarInput.mjs} +1 -1
  42. package/dist/esm/CalendarInput/CalendarInput.mjs.map +1 -0
  43. package/dist/esm/CheckboxFormSection/{CheckboxFormSection.js → CheckboxFormSection.mjs} +1 -1
  44. package/dist/esm/CheckboxFormSection/CheckboxFormSection.mjs.map +1 -0
  45. package/dist/esm/CodeInput/{CodeInput.js → CodeInput.mjs} +6 -5
  46. package/dist/esm/CodeInput/CodeInput.mjs.map +1 -0
  47. package/dist/esm/CodeableConceptDisplay/{CodeableConceptDisplay.js → CodeableConceptDisplay.mjs} +1 -1
  48. package/dist/esm/CodeableConceptDisplay/CodeableConceptDisplay.mjs.map +1 -0
  49. package/dist/esm/CodeableConceptInput/CodeableConceptInput.mjs +36 -0
  50. package/dist/esm/CodeableConceptInput/CodeableConceptInput.mjs.map +1 -0
  51. package/dist/esm/CodingDisplay/{CodingDisplay.js → CodingDisplay.mjs} +1 -1
  52. package/dist/esm/CodingDisplay/CodingDisplay.mjs.map +1 -0
  53. package/dist/esm/CodingInput/{CodingInput.js → CodingInput.mjs} +5 -4
  54. package/dist/esm/CodingInput/CodingInput.mjs.map +1 -0
  55. package/dist/esm/ContactDetailDisplay/{ContactDetailDisplay.js → ContactDetailDisplay.mjs} +4 -5
  56. package/dist/esm/ContactDetailDisplay/ContactDetailDisplay.mjs.map +1 -0
  57. package/dist/esm/ContactDetailInput/{ContactDetailInput.js → ContactDetailInput.mjs} +6 -7
  58. package/dist/esm/ContactDetailInput/ContactDetailInput.mjs.map +1 -0
  59. package/dist/esm/ContactPointDisplay/{ContactPointDisplay.js → ContactPointDisplay.mjs} +1 -1
  60. package/dist/esm/ContactPointDisplay/ContactPointDisplay.mjs.map +1 -0
  61. package/dist/esm/ContactPointInput/{ContactPointInput.js → ContactPointInput.mjs} +7 -7
  62. package/dist/esm/ContactPointInput/ContactPointInput.mjs.map +1 -0
  63. package/dist/esm/Container/{Container.js → Container.mjs} +3 -4
  64. package/dist/esm/Container/Container.mjs.map +1 -0
  65. package/dist/esm/DateTimeInput/{DateTimeInput.js → DateTimeInput.mjs} +2 -2
  66. package/dist/esm/DateTimeInput/DateTimeInput.mjs.map +1 -0
  67. package/dist/esm/DefaultResourceTimeline/{DefaultResourceTimeline.js → DefaultResourceTimeline.mjs} +2 -2
  68. package/dist/esm/DefaultResourceTimeline/DefaultResourceTimeline.mjs.map +1 -0
  69. package/dist/esm/DescriptionList/{DescriptionList.js → DescriptionList.mjs} +1 -1
  70. package/dist/esm/DescriptionList/DescriptionList.mjs.map +1 -0
  71. package/dist/esm/DiagnosticReportDisplay/{DiagnosticReportDisplay.js → DiagnosticReportDisplay.mjs} +19 -16
  72. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.mjs.map +1 -0
  73. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.stories.d.ts +1 -0
  74. package/dist/esm/Document/Document.mjs +12 -0
  75. package/dist/esm/Document/Document.mjs.map +1 -0
  76. package/dist/esm/EncounterTimeline/{EncounterTimeline.js → EncounterTimeline.mjs} +2 -2
  77. package/dist/esm/EncounterTimeline/EncounterTimeline.mjs.map +1 -0
  78. package/dist/esm/ErrorBoundary/{ErrorBoundary.js → ErrorBoundary.mjs} +1 -1
  79. package/dist/esm/ErrorBoundary/ErrorBoundary.mjs.map +1 -0
  80. package/dist/esm/ExtensionInput/{ExtensionInput.js → ExtensionInput.mjs} +1 -1
  81. package/dist/esm/ExtensionInput/ExtensionInput.mjs.map +1 -0
  82. package/dist/esm/FhirPathDisplay/{FhirPathDisplay.js → FhirPathDisplay.mjs} +2 -2
  83. package/dist/esm/FhirPathDisplay/FhirPathDisplay.mjs.map +1 -0
  84. package/dist/esm/FhirPathTable/FhirPathTable.d.ts +2 -2
  85. package/dist/esm/FhirPathTable/{FhirPathTable.js → FhirPathTable.mjs} +14 -17
  86. package/dist/esm/FhirPathTable/FhirPathTable.mjs.map +1 -0
  87. package/dist/esm/Form/{Form.js → Form.mjs} +2 -2
  88. package/dist/esm/Form/Form.mjs.map +1 -0
  89. package/dist/esm/Form/{FormUtils.js → FormUtils.mjs} +1 -1
  90. package/dist/esm/Form/FormUtils.mjs.map +1 -0
  91. package/dist/esm/FormSection/{FormSection.js → FormSection.mjs} +2 -2
  92. package/dist/esm/FormSection/FormSection.mjs.map +1 -0
  93. package/dist/esm/GoogleButton/{GoogleButton.js → GoogleButton.mjs} +4 -5
  94. package/dist/esm/GoogleButton/GoogleButton.mjs.map +1 -0
  95. package/dist/esm/HumanNameDisplay/{HumanNameDisplay.js → HumanNameDisplay.mjs} +1 -1
  96. package/dist/esm/HumanNameDisplay/HumanNameDisplay.mjs.map +1 -0
  97. package/dist/esm/HumanNameInput/HumanNameInput.mjs +50 -0
  98. package/dist/esm/HumanNameInput/HumanNameInput.mjs.map +1 -0
  99. package/dist/esm/IdentifierDisplay/IdentifierDisplay.mjs +11 -0
  100. package/dist/esm/IdentifierDisplay/IdentifierDisplay.mjs.map +1 -0
  101. package/dist/esm/IdentifierInput/{IdentifierInput.js → IdentifierInput.mjs} +3 -3
  102. package/dist/esm/IdentifierInput/IdentifierInput.mjs.map +1 -0
  103. package/dist/esm/Logo/{Logo.js → Logo.mjs} +1 -1
  104. package/dist/esm/Logo/Logo.mjs.map +1 -0
  105. package/dist/esm/MedplumLink/{MedplumLink.js → MedplumLink.mjs} +5 -6
  106. package/dist/esm/MedplumLink/MedplumLink.mjs.map +1 -0
  107. package/dist/esm/MedplumProvider/{MedplumProvider.js → MedplumProvider.mjs} +9 -3
  108. package/dist/esm/MedplumProvider/MedplumProvider.mjs.map +1 -0
  109. package/dist/esm/MoneyDisplay/MoneyDisplay.d.ts +6 -0
  110. package/dist/esm/MoneyDisplay/MoneyDisplay.mjs +9 -0
  111. package/dist/esm/MoneyDisplay/MoneyDisplay.mjs.map +1 -0
  112. package/dist/esm/MoneyInput/MoneyInput.d.ts +10 -0
  113. package/dist/esm/MoneyInput/MoneyInput.mjs +53 -0
  114. package/dist/esm/MoneyInput/MoneyInput.mjs.map +1 -0
  115. package/dist/esm/MoneyInput/MoneyInput.stories.d.ts +6 -0
  116. package/dist/esm/Panel/{Panel.js → Panel.mjs} +3 -4
  117. package/dist/esm/Panel/Panel.mjs.map +1 -0
  118. package/dist/esm/PatientTimeline/{PatientTimeline.js → PatientTimeline.mjs} +2 -2
  119. package/dist/esm/PatientTimeline/PatientTimeline.mjs.map +1 -0
  120. package/dist/esm/PeriodInput/{PeriodInput.js → PeriodInput.mjs} +4 -4
  121. package/dist/esm/PeriodInput/PeriodInput.mjs.map +1 -0
  122. package/dist/esm/PlanDefinitionBuilder/{PlanDefinitionBuilder.js → PlanDefinitionBuilder.mjs} +36 -24
  123. package/dist/esm/PlanDefinitionBuilder/PlanDefinitionBuilder.mjs.map +1 -0
  124. package/dist/esm/QuantityDisplay/{QuantityDisplay.js → QuantityDisplay.mjs} +1 -1
  125. package/dist/esm/QuantityDisplay/QuantityDisplay.mjs.map +1 -0
  126. package/dist/esm/QuantityInput/{QuantityInput.js → QuantityInput.mjs} +13 -5
  127. package/dist/esm/QuantityInput/QuantityInput.mjs.map +1 -0
  128. package/dist/esm/QuestionnaireBuilder/{QuestionnaireBuilder.js → QuestionnaireBuilder.mjs} +45 -27
  129. package/dist/esm/QuestionnaireBuilder/QuestionnaireBuilder.mjs.map +1 -0
  130. package/dist/esm/QuestionnaireForm/{QuestionnaireForm.js → QuestionnaireForm.mjs} +37 -36
  131. package/dist/esm/QuestionnaireForm/QuestionnaireForm.mjs.map +1 -0
  132. package/dist/esm/RangeDisplay/{RangeDisplay.js → RangeDisplay.mjs} +1 -1
  133. package/dist/esm/RangeDisplay/RangeDisplay.mjs.map +1 -0
  134. package/dist/esm/RangeInput/{RangeInput.js → RangeInput.mjs} +10 -4
  135. package/dist/esm/RangeInput/RangeInput.mjs.map +1 -0
  136. package/dist/esm/RatioDisplay/{RatioDisplay.js → RatioDisplay.mjs} +2 -2
  137. package/dist/esm/RatioDisplay/RatioDisplay.mjs.map +1 -0
  138. package/dist/esm/RatioInput/{RatioInput.js → RatioInput.mjs} +10 -4
  139. package/dist/esm/RatioInput/RatioInput.mjs.map +1 -0
  140. package/dist/esm/ReferenceDisplay/{ReferenceDisplay.js → ReferenceDisplay.mjs} +2 -2
  141. package/dist/esm/ReferenceDisplay/ReferenceDisplay.mjs.map +1 -0
  142. package/dist/esm/ReferenceInput/{ReferenceInput.js → ReferenceInput.mjs} +10 -5
  143. package/dist/esm/ReferenceInput/ReferenceInput.mjs.map +1 -0
  144. package/dist/esm/ReferenceRangeEditor/{ReferenceRangeEditor.js → ReferenceRangeEditor.mjs} +44 -38
  145. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.mjs.map +1 -0
  146. package/dist/esm/RequestGroupDisplay/{RequestGroupDisplay.js → RequestGroupDisplay.mjs} +14 -17
  147. package/dist/esm/RequestGroupDisplay/RequestGroupDisplay.mjs.map +1 -0
  148. package/dist/esm/ResourceArrayDisplay/{ResourceArrayDisplay.js → ResourceArrayDisplay.mjs} +4 -5
  149. package/dist/esm/ResourceArrayDisplay/ResourceArrayDisplay.mjs.map +1 -0
  150. package/dist/esm/ResourceArrayInput/{ResourceArrayInput.js → ResourceArrayInput.mjs} +3 -3
  151. package/dist/esm/ResourceArrayInput/ResourceArrayInput.mjs.map +1 -0
  152. package/dist/esm/ResourceAvatar/ResourceAvatar.mjs +23 -0
  153. package/dist/esm/ResourceAvatar/ResourceAvatar.mjs.map +1 -0
  154. package/dist/esm/ResourceBadge/{ResourceBadge.js → ResourceBadge.mjs} +3 -3
  155. package/dist/esm/ResourceBadge/ResourceBadge.mjs.map +1 -0
  156. package/dist/esm/ResourceBlame/{ResourceBlame.js → ResourceBlame.mjs} +6 -7
  157. package/dist/esm/ResourceBlame/ResourceBlame.mjs.map +1 -0
  158. package/dist/esm/ResourceDiff/{ResourceDiff.js → ResourceDiff.mjs} +4 -4
  159. package/dist/esm/ResourceDiff/ResourceDiff.mjs.map +1 -0
  160. package/dist/esm/ResourceDiffTable/{ResourceDiffTable.js → ResourceDiffTable.mjs} +3 -3
  161. package/dist/esm/ResourceDiffTable/ResourceDiffTable.mjs.map +1 -0
  162. package/dist/esm/ResourceForm/{ResourceForm.js → ResourceForm.mjs} +5 -5
  163. package/dist/esm/ResourceForm/ResourceForm.mjs.map +1 -0
  164. package/dist/esm/ResourceHistoryTable/{ResourceHistoryTable.js → ResourceHistoryTable.mjs} +10 -13
  165. package/dist/esm/ResourceHistoryTable/ResourceHistoryTable.mjs.map +1 -0
  166. package/dist/esm/ResourceInput/{ResourceInput.js → ResourceInput.mjs} +19 -25
  167. package/dist/esm/ResourceInput/ResourceInput.mjs.map +1 -0
  168. package/dist/esm/ResourceName/ResourceName.mjs +18 -0
  169. package/dist/esm/ResourceName/ResourceName.mjs.map +1 -0
  170. package/dist/esm/ResourcePropertyDisplay/{ResourcePropertyDisplay.js → ResourcePropertyDisplay.mjs} +23 -21
  171. package/dist/esm/ResourcePropertyDisplay/ResourcePropertyDisplay.mjs.map +1 -0
  172. package/dist/esm/ResourcePropertyInput/{ResourcePropertyInput.js → ResourcePropertyInput.mjs} +34 -34
  173. package/dist/esm/ResourcePropertyInput/ResourcePropertyInput.mjs.map +1 -0
  174. package/dist/esm/ResourceTable/{ResourceTable.js → ResourceTable.mjs} +4 -4
  175. package/dist/esm/ResourceTable/ResourceTable.mjs.map +1 -0
  176. package/dist/esm/ResourceTimeline/{ResourceTimeline.js → ResourceTimeline.mjs} +26 -30
  177. package/dist/esm/ResourceTimeline/ResourceTimeline.mjs.map +1 -0
  178. package/dist/esm/Scheduler/{Scheduler.js → Scheduler.mjs} +8 -9
  179. package/dist/esm/Scheduler/Scheduler.mjs.map +1 -0
  180. package/dist/esm/SearchControl/{SearchControl.js → SearchControl.mjs} +66 -50
  181. package/dist/esm/SearchControl/SearchControl.mjs.map +1 -0
  182. package/dist/esm/SearchControl/{SearchControlField.js → SearchControlField.mjs} +3 -4
  183. package/dist/esm/SearchControl/SearchControlField.mjs.map +1 -0
  184. package/dist/esm/SearchControl/{SearchUtils.js → SearchUtils.mjs} +34 -17
  185. package/dist/esm/SearchControl/SearchUtils.mjs.map +1 -0
  186. package/dist/esm/SearchFieldEditor/{SearchFieldEditor.js → SearchFieldEditor.mjs} +28 -21
  187. package/dist/esm/SearchFieldEditor/SearchFieldEditor.mjs.map +1 -0
  188. package/dist/esm/SearchFilterEditor/{SearchFilterEditor.js → SearchFilterEditor.mjs} +8 -9
  189. package/dist/esm/SearchFilterEditor/SearchFilterEditor.mjs.map +1 -0
  190. package/dist/esm/SearchFilterValueDialog/{SearchFilterValueDialog.js → SearchFilterValueDialog.mjs} +5 -6
  191. package/dist/esm/SearchFilterValueDialog/SearchFilterValueDialog.mjs.map +1 -0
  192. package/dist/esm/SearchFilterValueDisplay/{SearchFilterValueDisplay.js → SearchFilterValueDisplay.mjs} +3 -4
  193. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.mjs.map +1 -0
  194. package/dist/esm/SearchFilterValueInput/{SearchFilterValueInput.js → SearchFilterValueInput.mjs} +5 -6
  195. package/dist/esm/SearchFilterValueInput/SearchFilterValueInput.mjs.map +1 -0
  196. package/dist/esm/SearchPopupMenu/{SearchPopupMenu.js → SearchPopupMenu.mjs} +10 -10
  197. package/dist/esm/SearchPopupMenu/SearchPopupMenu.mjs.map +1 -0
  198. package/dist/esm/ServiceRequestTimeline/{ServiceRequestTimeline.js → ServiceRequestTimeline.mjs} +2 -2
  199. package/dist/esm/ServiceRequestTimeline/ServiceRequestTimeline.mjs.map +1 -0
  200. package/dist/esm/StatusBadge/{StatusBadge.js → StatusBadge.mjs} +3 -2
  201. package/dist/esm/StatusBadge/StatusBadge.mjs.map +1 -0
  202. package/dist/esm/Timeline/{Timeline.js → Timeline.mjs} +11 -13
  203. package/dist/esm/Timeline/Timeline.mjs.map +1 -0
  204. package/dist/esm/TimingInput/{TimingInput.js → TimingInput.mjs} +13 -18
  205. package/dist/esm/TimingInput/TimingInput.mjs.map +1 -0
  206. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +3 -6
  207. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs +43 -0
  208. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs.map +1 -0
  209. package/dist/esm/auth/{AuthenticationForm.js → AuthenticationForm.mjs} +21 -19
  210. package/dist/esm/auth/AuthenticationForm.mjs.map +1 -0
  211. package/dist/esm/auth/ChooseProfileForm.d.ts +2 -1
  212. package/dist/esm/auth/ChooseProfileForm.mjs +29 -0
  213. package/dist/esm/auth/ChooseProfileForm.mjs.map +1 -0
  214. package/dist/esm/auth/ChooseScopeForm.d.ts +2 -1
  215. package/dist/esm/auth/{ChooseScopeForm.js → ChooseScopeForm.mjs} +4 -4
  216. package/dist/esm/auth/ChooseScopeForm.mjs.map +1 -0
  217. package/dist/esm/auth/MfaForm.d.ts +7 -0
  218. package/dist/esm/auth/MfaForm.mjs +34 -0
  219. package/dist/esm/auth/MfaForm.mjs.map +1 -0
  220. package/dist/esm/auth/{NewProjectForm.js → NewProjectForm.mjs} +8 -9
  221. package/dist/esm/auth/NewProjectForm.mjs.map +1 -0
  222. package/dist/esm/auth/{NewUserForm.js → NewUserForm.mjs} +15 -19
  223. package/dist/esm/auth/NewUserForm.mjs.map +1 -0
  224. package/dist/esm/auth/{RegisterForm.js → RegisterForm.mjs} +5 -5
  225. package/dist/esm/auth/RegisterForm.mjs.map +1 -0
  226. package/dist/esm/auth/SignInForm.d.ts +10 -0
  227. package/dist/esm/auth/{SignInForm.js → SignInForm.mjs} +25 -10
  228. package/dist/esm/auth/SignInForm.mjs.map +1 -0
  229. package/dist/esm/{constants.js → constants.mjs} +1 -1
  230. package/dist/esm/constants.mjs.map +1 -0
  231. package/dist/esm/index.d.ts +3 -0
  232. package/dist/esm/index.min.mjs +1 -0
  233. package/dist/esm/{index.js → index.mjs} +88 -85
  234. package/dist/esm/index.mjs.map +1 -0
  235. package/dist/esm/stories/referenceLab.d.ts +3 -1
  236. package/dist/esm/useResource/{useResource.js → useResource.mjs} +2 -2
  237. package/dist/esm/useResource/useResource.mjs.map +1 -0
  238. package/dist/esm/utils/{blame.js → blame.mjs} +6 -9
  239. package/dist/esm/utils/blame.mjs.map +1 -0
  240. package/dist/esm/utils/{date.js → date.mjs} +2 -3
  241. package/dist/esm/utils/date.mjs.map +1 -0
  242. package/dist/esm/utils/{diff.js → diff.mjs} +1 -1
  243. package/dist/esm/utils/diff.mjs.map +1 -0
  244. package/dist/esm/utils/{dom.js → dom.mjs} +1 -1
  245. package/dist/esm/utils/dom.mjs.map +1 -0
  246. package/dist/esm/utils/outcomes.mjs +30 -0
  247. package/dist/esm/utils/outcomes.mjs.map +1 -0
  248. package/dist/esm/utils/{questionnaire.js → questionnaire.mjs} +1 -1
  249. package/dist/esm/utils/questionnaire.mjs.map +1 -0
  250. package/dist/esm/utils/{recaptcha.js → recaptcha.mjs} +5 -6
  251. package/dist/esm/utils/recaptcha.mjs.map +1 -0
  252. package/dist/esm/utils/{script.js → script.mjs} +1 -1
  253. package/dist/esm/utils/script.mjs.map +1 -0
  254. package/package.json +22 -22
  255. package/rollup.config.mjs +6 -7
  256. package/dist/cjs/index.js.map +0 -1
  257. package/dist/cjs/index.min.js +0 -2
  258. package/dist/cjs/index.min.js.map +0 -1
  259. package/dist/esm/AddressDisplay/AddressDisplay.js.map +0 -1
  260. package/dist/esm/AddressInput/AddressInput.js.map +0 -1
  261. package/dist/esm/AnnotationInput/AnnotationInput.js.map +0 -1
  262. package/dist/esm/AttachmentArrayDisplay/AttachmentArrayDisplay.js.map +0 -1
  263. package/dist/esm/AttachmentArrayInput/AttachmentArrayInput.js.map +0 -1
  264. package/dist/esm/AttachmentButton/AttachmentButton.js.map +0 -1
  265. package/dist/esm/AttachmentDisplay/AttachmentDisplay.js +0 -21
  266. package/dist/esm/AttachmentDisplay/AttachmentDisplay.js.map +0 -1
  267. package/dist/esm/AttachmentInput/AttachmentInput.js.map +0 -1
  268. package/dist/esm/BackboneElementDisplay/BackboneElementDisplay.js.map +0 -1
  269. package/dist/esm/BackboneElementInput/BackboneElementInput.js.map +0 -1
  270. package/dist/esm/CalendarInput/CalendarInput.js.map +0 -1
  271. package/dist/esm/CheckboxFormSection/CheckboxFormSection.js.map +0 -1
  272. package/dist/esm/CodeInput/CodeInput.js.map +0 -1
  273. package/dist/esm/CodeableConceptDisplay/CodeableConceptDisplay.js.map +0 -1
  274. package/dist/esm/CodeableConceptInput/CodeableConceptInput.js +0 -37
  275. package/dist/esm/CodeableConceptInput/CodeableConceptInput.js.map +0 -1
  276. package/dist/esm/CodingDisplay/CodingDisplay.js.map +0 -1
  277. package/dist/esm/CodingInput/CodingInput.js.map +0 -1
  278. package/dist/esm/ContactDetailDisplay/ContactDetailDisplay.js.map +0 -1
  279. package/dist/esm/ContactDetailInput/ContactDetailInput.js.map +0 -1
  280. package/dist/esm/ContactPointDisplay/ContactPointDisplay.js.map +0 -1
  281. package/dist/esm/ContactPointInput/ContactPointInput.js.map +0 -1
  282. package/dist/esm/Container/Container.js.map +0 -1
  283. package/dist/esm/DateTimeInput/DateTimeInput.js.map +0 -1
  284. package/dist/esm/DefaultResourceTimeline/DefaultResourceTimeline.js.map +0 -1
  285. package/dist/esm/DescriptionList/DescriptionList.js.map +0 -1
  286. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.js.map +0 -1
  287. package/dist/esm/Document/Document.js +0 -13
  288. package/dist/esm/Document/Document.js.map +0 -1
  289. package/dist/esm/EncounterTimeline/EncounterTimeline.js.map +0 -1
  290. package/dist/esm/ErrorBoundary/ErrorBoundary.js.map +0 -1
  291. package/dist/esm/ExtensionInput/ExtensionInput.js.map +0 -1
  292. package/dist/esm/FhirPathDisplay/FhirPathDisplay.js.map +0 -1
  293. package/dist/esm/FhirPathTable/FhirPathTable.js.map +0 -1
  294. package/dist/esm/Form/Form.js.map +0 -1
  295. package/dist/esm/Form/FormUtils.js.map +0 -1
  296. package/dist/esm/FormSection/FormSection.js.map +0 -1
  297. package/dist/esm/GoogleButton/GoogleButton.js.map +0 -1
  298. package/dist/esm/HumanNameDisplay/HumanNameDisplay.js.map +0 -1
  299. package/dist/esm/HumanNameInput/HumanNameInput.js +0 -39
  300. package/dist/esm/HumanNameInput/HumanNameInput.js.map +0 -1
  301. package/dist/esm/IdentifierDisplay/IdentifierDisplay.js +0 -12
  302. package/dist/esm/IdentifierDisplay/IdentifierDisplay.js.map +0 -1
  303. package/dist/esm/IdentifierInput/IdentifierInput.js.map +0 -1
  304. package/dist/esm/Logo/Logo.js.map +0 -1
  305. package/dist/esm/MedplumLink/MedplumLink.js.map +0 -1
  306. package/dist/esm/MedplumProvider/MedplumProvider.js.map +0 -1
  307. package/dist/esm/Panel/Panel.js.map +0 -1
  308. package/dist/esm/PatientTimeline/PatientTimeline.js.map +0 -1
  309. package/dist/esm/PeriodInput/PeriodInput.js.map +0 -1
  310. package/dist/esm/PlanDefinitionBuilder/PlanDefinitionBuilder.js.map +0 -1
  311. package/dist/esm/QuantityDisplay/QuantityDisplay.js.map +0 -1
  312. package/dist/esm/QuantityInput/QuantityInput.js.map +0 -1
  313. package/dist/esm/QuestionnaireBuilder/QuestionnaireBuilder.js.map +0 -1
  314. package/dist/esm/QuestionnaireForm/QuestionnaireForm.js.map +0 -1
  315. package/dist/esm/RangeDisplay/RangeDisplay.js.map +0 -1
  316. package/dist/esm/RangeInput/RangeInput.js.map +0 -1
  317. package/dist/esm/RatioDisplay/RatioDisplay.js.map +0 -1
  318. package/dist/esm/RatioInput/RatioInput.js.map +0 -1
  319. package/dist/esm/ReferenceDisplay/ReferenceDisplay.js.map +0 -1
  320. package/dist/esm/ReferenceInput/ReferenceInput.js.map +0 -1
  321. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.js.map +0 -1
  322. package/dist/esm/RequestGroupDisplay/RequestGroupDisplay.js.map +0 -1
  323. package/dist/esm/ResourceArrayDisplay/ResourceArrayDisplay.js.map +0 -1
  324. package/dist/esm/ResourceArrayInput/ResourceArrayInput.js.map +0 -1
  325. package/dist/esm/ResourceAvatar/ResourceAvatar.js +0 -24
  326. package/dist/esm/ResourceAvatar/ResourceAvatar.js.map +0 -1
  327. package/dist/esm/ResourceBadge/ResourceBadge.js.map +0 -1
  328. package/dist/esm/ResourceBlame/ResourceBlame.js.map +0 -1
  329. package/dist/esm/ResourceDiff/ResourceDiff.js.map +0 -1
  330. package/dist/esm/ResourceDiffTable/ResourceDiffTable.js.map +0 -1
  331. package/dist/esm/ResourceForm/ResourceForm.js.map +0 -1
  332. package/dist/esm/ResourceHistoryTable/ResourceHistoryTable.js.map +0 -1
  333. package/dist/esm/ResourceInput/ResourceInput.js.map +0 -1
  334. package/dist/esm/ResourceName/ResourceName.js +0 -19
  335. package/dist/esm/ResourceName/ResourceName.js.map +0 -1
  336. package/dist/esm/ResourcePropertyDisplay/ResourcePropertyDisplay.js.map +0 -1
  337. package/dist/esm/ResourcePropertyInput/ResourcePropertyInput.js.map +0 -1
  338. package/dist/esm/ResourceTable/ResourceTable.js.map +0 -1
  339. package/dist/esm/ResourceTimeline/ResourceTimeline.js.map +0 -1
  340. package/dist/esm/Scheduler/Scheduler.js.map +0 -1
  341. package/dist/esm/SearchControl/SearchControl.js.map +0 -1
  342. package/dist/esm/SearchControl/SearchControlField.js.map +0 -1
  343. package/dist/esm/SearchControl/SearchUtils.js.map +0 -1
  344. package/dist/esm/SearchFieldEditor/SearchFieldEditor.js.map +0 -1
  345. package/dist/esm/SearchFilterEditor/SearchFilterEditor.js.map +0 -1
  346. package/dist/esm/SearchFilterValueDialog/SearchFilterValueDialog.js.map +0 -1
  347. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.js.map +0 -1
  348. package/dist/esm/SearchFilterValueInput/SearchFilterValueInput.js.map +0 -1
  349. package/dist/esm/SearchPopupMenu/SearchPopupMenu.js.map +0 -1
  350. package/dist/esm/ServiceRequestTimeline/ServiceRequestTimeline.js.map +0 -1
  351. package/dist/esm/StatusBadge/StatusBadge.js.map +0 -1
  352. package/dist/esm/Timeline/Timeline.js.map +0 -1
  353. package/dist/esm/TimingInput/TimingInput.js.map +0 -1
  354. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.js +0 -65
  355. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.js.map +0 -1
  356. package/dist/esm/auth/AuthenticationForm.js.map +0 -1
  357. package/dist/esm/auth/ChooseProfileForm.js +0 -32
  358. package/dist/esm/auth/ChooseProfileForm.js.map +0 -1
  359. package/dist/esm/auth/ChooseScopeForm.js.map +0 -1
  360. package/dist/esm/auth/NewProjectForm.js.map +0 -1
  361. package/dist/esm/auth/NewUserForm.js.map +0 -1
  362. package/dist/esm/auth/RegisterForm.js.map +0 -1
  363. package/dist/esm/auth/SignInForm.js.map +0 -1
  364. package/dist/esm/constants.js.map +0 -1
  365. package/dist/esm/index.js.map +0 -1
  366. package/dist/esm/index.min.js +0 -2
  367. package/dist/esm/index.min.js.map +0 -1
  368. package/dist/esm/node_modules/tslib/tslib.es6.js +0 -39
  369. package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
  370. package/dist/esm/useResource/useResource.js.map +0 -1
  371. package/dist/esm/utils/blame.js.map +0 -1
  372. package/dist/esm/utils/date.js.map +0 -1
  373. package/dist/esm/utils/diff.js.map +0 -1
  374. package/dist/esm/utils/dom.js.map +0 -1
  375. package/dist/esm/utils/outcomes.js +0 -29
  376. package/dist/esm/utils/outcomes.js.map +0 -1
  377. package/dist/esm/utils/questionnaire.js.map +0 -1
  378. package/dist/esm/utils/recaptcha.js.map +0 -1
  379. package/dist/esm/utils/script.js.map +0 -1
@@ -1,18 +1,30 @@
1
- import { __rest } from '../node_modules/tslib/tslib.es6.js';
2
1
  import React, { useState } from 'react';
3
- import { Document } from '../Document/Document.js';
4
- import { useMedplum } from '../MedplumProvider/MedplumProvider.js';
5
- import { AuthenticationForm } from './AuthenticationForm.js';
6
- import { ChooseProfileForm } from './ChooseProfileForm.js';
7
- import { ChooseScopeForm } from './ChooseScopeForm.js';
8
- import { NewProjectForm } from './NewProjectForm.js';
2
+ import { Document } from '../Document/Document.mjs';
3
+ import { useMedplum } from '../MedplumProvider/MedplumProvider.mjs';
4
+ import { AuthenticationForm } from './AuthenticationForm.mjs';
5
+ import { ChooseProfileForm } from './ChooseProfileForm.mjs';
6
+ import { ChooseScopeForm } from './ChooseScopeForm.mjs';
7
+ import { MfaForm } from './MfaForm.mjs';
8
+ import { NewProjectForm } from './NewProjectForm.mjs';
9
9
 
10
+ /**
11
+ * The SignInForm component allows users to sign in to Medplum.
12
+ *
13
+ * "Signing in" is a multi-step process:
14
+ * 1) Authentication - identify the user
15
+ * 2) MFA - If MFA is enabled, prompt for MFA code
16
+ * 3) Choose profile - If the user has multiple profiles, prompt to choose one
17
+ * 4) Choose scope - If the user has multiple scopes, prompt to choose one
18
+ * 5) Success - Return to the caller with either a code or a redirect
19
+ */
10
20
  function SignInForm(props) {
11
- const { chooseScopes, onSuccess, onForgotPassword, onRegister, onCode } = props, baseLoginRequest = __rest(props, ["chooseScopes", "onSuccess", "onForgotPassword", "onRegister", "onCode"]);
21
+ const { chooseScopes, onSuccess, onForgotPassword, onRegister, onCode, ...baseLoginRequest } = props;
12
22
  const medplum = useMedplum();
13
23
  const [login, setLogin] = useState(undefined);
24
+ const [mfaRequired, setAuthenticatorRequired] = useState(false);
14
25
  const [memberships, setMemberships] = useState(undefined);
15
26
  function handleAuthResponse(response) {
27
+ setAuthenticatorRequired(!!response.mfaRequired);
16
28
  if (response.login) {
17
29
  setLogin(response.login);
18
30
  }
@@ -48,7 +60,10 @@ function SignInForm(props) {
48
60
  }
49
61
  return (React.createElement(Document, { width: 450 }, (() => {
50
62
  if (!login) {
51
- return (React.createElement(AuthenticationForm, Object.assign({ generatePkce: !onCode, onForgotPassword: onForgotPassword, onRegister: onRegister, handleAuthResponse: handleAuthResponse }, baseLoginRequest), props.children));
63
+ return (React.createElement(AuthenticationForm, { generatePkce: !onCode, onForgotPassword: onForgotPassword, onRegister: onRegister, handleAuthResponse: handleAuthResponse, ...baseLoginRequest }, props.children));
64
+ }
65
+ else if (mfaRequired) {
66
+ return React.createElement(MfaForm, { login: login, handleAuthResponse: handleAuthResponse });
52
67
  }
53
68
  else if (memberships) {
54
69
  return React.createElement(ChooseProfileForm, { login: login, memberships: memberships, handleAuthResponse: handleAuthResponse });
@@ -66,4 +81,4 @@ function SignInForm(props) {
66
81
  }
67
82
 
68
83
  export { SignInForm };
69
- //# sourceMappingURL=SignInForm.js.map
84
+ //# sourceMappingURL=SignInForm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignInForm.mjs","sources":["../../../src/auth/SignInForm.tsx"],"sourcesContent":["import { BaseLoginRequest, LoginAuthenticationResponse } from '@medplum/core';\nimport { ProjectMembership } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { Document } from '../Document/Document';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { AuthenticationForm } from './AuthenticationForm';\nimport { ChooseProfileForm } from './ChooseProfileForm';\nimport { ChooseScopeForm } from './ChooseScopeForm';\nimport { MfaForm } from './MfaForm';\nimport { NewProjectForm } from './NewProjectForm';\n\nexport interface SignInFormProps extends BaseLoginRequest {\n readonly chooseScopes?: boolean;\n readonly onSuccess?: () => void;\n readonly onForgotPassword?: () => void;\n readonly onRegister?: () => void;\n readonly onCode?: (code: string) => void;\n readonly children?: React.ReactNode;\n}\n\n/**\n * The SignInForm component allows users to sign in to Medplum.\n *\n * \"Signing in\" is a multi-step process:\n * 1) Authentication - identify the user\n * 2) MFA - If MFA is enabled, prompt for MFA code\n * 3) Choose profile - If the user has multiple profiles, prompt to choose one\n * 4) Choose scope - If the user has multiple scopes, prompt to choose one\n * 5) Success - Return to the caller with either a code or a redirect\n */\nexport function SignInForm(props: SignInFormProps): JSX.Element {\n const { chooseScopes, onSuccess, onForgotPassword, onRegister, onCode, ...baseLoginRequest } = props;\n const medplum = useMedplum();\n const [login, setLogin] = useState<string | undefined>(undefined);\n const [mfaRequired, setAuthenticatorRequired] = useState<boolean>(false);\n const [memberships, setMemberships] = useState<ProjectMembership[] | undefined>(undefined);\n\n function handleAuthResponse(response: LoginAuthenticationResponse): void {\n setAuthenticatorRequired(!!response.mfaRequired);\n\n if (response.login) {\n setLogin(response.login);\n }\n\n if (response.memberships) {\n setMemberships(response.memberships);\n }\n\n if (response.code) {\n if (chooseScopes) {\n setMemberships(undefined);\n } else {\n handleCode(response.code as string);\n }\n }\n }\n\n function handleScopeResponse(response: LoginAuthenticationResponse): void {\n handleCode(response.code as string);\n }\n\n function handleCode(code: string): void {\n if (onCode) {\n onCode(code);\n } else {\n medplum\n .processCode(code)\n .then(() => {\n if (onSuccess) {\n onSuccess();\n }\n })\n .catch(console.log);\n }\n }\n\n return (\n <Document width={450}>\n {(() => {\n if (!login) {\n return (\n <AuthenticationForm\n generatePkce={!onCode}\n onForgotPassword={onForgotPassword}\n onRegister={onRegister}\n handleAuthResponse={handleAuthResponse}\n {...baseLoginRequest}\n >\n {props.children}\n </AuthenticationForm>\n );\n } else if (mfaRequired) {\n return <MfaForm login={login} handleAuthResponse={handleAuthResponse} />;\n } else if (memberships) {\n return <ChooseProfileForm login={login} memberships={memberships} handleAuthResponse={handleAuthResponse} />;\n } else if (props.projectId === 'new') {\n return <NewProjectForm login={login} handleAuthResponse={handleAuthResponse} />;\n } else if (props.chooseScopes) {\n return <ChooseScopeForm login={login} scope={props.scope} handleAuthResponse={handleScopeResponse} />;\n } else {\n return <div>Success</div>;\n }\n })()}\n </Document>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAoBA;;;;;;;;;AASG;AACG,SAAU,UAAU,CAAC,KAAsB,EAAA;AAC/C,IAAA,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,GAAG,KAAK,CAAC;AACrG,IAAA,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAClE,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACzE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAkC,SAAS,CAAC,CAAC;IAE3F,SAAS,kBAAkB,CAAC,QAAqC,EAAA;AAC/D,QAAA,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,YAAA,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAA;QAED,IAAI,QAAQ,CAAC,WAAW,EAAE;AACxB,YAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtC,SAAA;QAED,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,YAAA,IAAI,YAAY,EAAE;gBAChB,cAAc,CAAC,SAAS,CAAC,CAAC;AAC3B,aAAA;AAAM,iBAAA;AACL,gBAAA,UAAU,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAC;AACrC,aAAA;AACF,SAAA;KACF;IAED,SAAS,mBAAmB,CAAC,QAAqC,EAAA;AAChE,QAAA,UAAU,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAC;KACrC;IAED,SAAS,UAAU,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,CAAC;AACd,SAAA;AAAM,aAAA;YACL,OAAO;iBACJ,WAAW,CAAC,IAAI,CAAC;iBACjB,IAAI,CAAC,MAAK;AACT,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,SAAS,EAAE,CAAC;AACb,iBAAA;AACH,aAAC,CAAC;AACD,iBAAA,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;KACF;IAED,QACE,KAAC,CAAA,aAAA,CAAA,QAAQ,EAAC,EAAA,KAAK,EAAE,GAAG,EAAA,EACjB,CAAC,MAAK;QACL,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,QACE,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,EACjB,YAAY,EAAE,CAAC,MAAM,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,kBAAkB,EAClC,GAAA,gBAAgB,EAEnB,EAAA,KAAK,CAAC,QAAQ,CACI,EACrB;AACH,SAAA;AAAM,aAAA,IAAI,WAAW,EAAE;YACtB,OAAO,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAA,CAAI,CAAC;AAC1E,SAAA;AAAM,aAAA,IAAI,WAAW,EAAE;AACtB,YAAA,OAAO,KAAC,CAAA,aAAA,CAAA,iBAAiB,EAAC,EAAA,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,GAAI,CAAC;AAC9G,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;YACpC,OAAO,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAA,CAAI,CAAC;AACjF,SAAA;aAAM,IAAI,KAAK,CAAC,YAAY,EAAE;AAC7B,YAAA,OAAO,oBAAC,eAAe,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,GAAI,CAAC;AACvG,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,2CAAkB,CAAC;AAC3B,SAAA;AACH,KAAC,GAAG,CACK,EACX;AACJ;;;;"}
@@ -9,4 +9,4 @@ const DEFAULT_IGNORED_PROPERTIES = [
9
9
  ];
10
10
 
11
11
  export { DEFAULT_IGNORED_PROPERTIES };
12
- //# sourceMappingURL=constants.js.map
12
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.mjs","sources":["../../src/constants.ts"],"sourcesContent":["export const DEFAULT_IGNORED_PROPERTIES = [\n 'meta',\n 'implicitRules',\n 'language',\n 'text',\n 'contained',\n 'extension',\n 'modifierExtension',\n];\n"],"names":[],"mappings":"AAAa,MAAA,0BAA0B,GAAG;IACxC,MAAM;IACN,eAAe;IACf,UAAU;IACV,MAAM;IACN,WAAW;IACX,WAAW;IACX,mBAAmB;;;;;"}
@@ -1,6 +1,7 @@
1
1
  export * from './AddressDisplay/AddressDisplay';
2
2
  export * from './AddressInput/AddressInput';
3
3
  export * from './AnnotationInput/AnnotationInput';
4
+ export * from './AsyncAutocomplete/AsyncAutocomplete';
4
5
  export * from './AttachmentArrayDisplay/AttachmentArrayDisplay';
5
6
  export * from './AttachmentArrayInput/AttachmentArrayInput';
6
7
  export * from './AttachmentButton/AttachmentButton';
@@ -40,6 +41,8 @@ export * from './IdentifierInput/IdentifierInput';
40
41
  export * from './Logo/Logo';
41
42
  export * from './MedplumLink/MedplumLink';
42
43
  export * from './MedplumProvider/MedplumProvider';
44
+ export * from './MoneyDisplay/MoneyDisplay';
45
+ export * from './MoneyInput/MoneyInput';
43
46
  export * from './Panel/Panel';
44
47
  export * from './PatientTimeline/PatientTimeline';
45
48
  export * from './PlanDefinitionBuilder/PlanDefinitionBuilder';
@@ -0,0 +1 @@
1
+ import{formatAddress as e,createReference as t,normalizeErrorString as n,formatCodeableConcept as r,formatCoding as a,formatHumanName as l,formatMoney as o,formatQuantity as c,formatRange as i,stringify as u,buildTypeName as s,PropertyType as m,formatTiming as d,formatPeriod as p,formatDateTime as h,getTypedPropertyValue as f,globalSchema as g,getPropertyDisplayName as E,capitalize as y,isValidDate as v,getDisplayString as C,getImageSrc as b,formatObservationValue as x,toTypedValue as T,getReferenceString as k,evalFhirPath as w,Operator as S,DEFAULT_SEARCH_COUNT as A,evalFhirPathTyped as D,getSearchParameterDetails as V,SearchParameterType as I,formatSearchQuery as R,deepEquals as N,getQuestionnaireAnswers as P,getCodeBySystem as $}from"@medplum/core";import O,{useState as z,useRef as L,createContext as F,useEffect as M,useContext as U,useCallback as _,forwardRef as q,useMemo as W}from"react";import{Group as j,NativeSelect as K,TextInput as Q,MultiSelect as H,Loader as B,Anchor as G,ActionIcon as J,Button as Y,createStyles as X,Container as Z,useComponentDefaultProps as ee,Paper as te,Center as ne,Title as re,Stack as ae,Text as le,Alert as oe,Divider as ce,PasswordInput as ie,Checkbox as ue,UnstyledButton as se,Avatar as me,Input as de,JsonInput as pe,Autocomplete as he,Modal as fe,Textarea as ge,Badge as Ee,Menu as ye,ScrollArea as ve,Table as Ce,Pagination as be,Radio as xe,Grid as Te}from"@mantine/core";import{IconCircleMinus as ke,IconCloudUpload as we,IconAlertCircle as Se,IconCurrencyDollar as Ae,IconCirclePlus as De,IconDots as Ve,IconMessage as Ie,IconCheck as Re,IconFileAlert as Ne,IconPin as Pe,IconPinnedOff as $e,IconListDetails as Oe,IconEdit as ze,IconTrash as Le,IconSortAscending as Fe,IconSortDescending as Me,IconEqual as Ue,IconEqualNot as _e,IconMathLower as qe,IconMathGreater as We,IconBracketsContain as je,IconCalendar as Ke,IconSettings as Qe,IconBucket as He,IconBucketOff as Be,IconBleach as Ge,IconBleachOff as Je,IconX as Ye,IconFilter as Xe,IconColumns as Ze,IconFilePlus as et,IconTableExport as tt,IconBoxMultiple as nt,IconAdjustmentsHorizontal as rt,IconCheckbox as at,IconSquare as lt}from"@tabler/icons";import{useNavigate as ot}from"react-router-dom";import{updateNotification as ct,showNotification as it}from"@mantine/notifications";function ut(t){const n=t.value;return n?O.createElement(O.Fragment,null,e(n)):null}function st(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function mt(e,t,n){const r=e.line||[];for(;r.length<=t;)r.push("");return r[t]=n,{...e,line:r}}function dt(e){const[t,n]=z(e.defaultValue||{}),r=L();function a(t){n(t),e.onChange&&e.onChange(t)}return r.current=t,O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(K,{"data-testid":"address-use",defaultValue:t?.use,onChange:e=>{return t=e.currentTarget.value,void a({...r.current,use:t});var t},data:["","home","work","temp","old","billing"]}),O.createElement(K,{"data-testid":"address-type",defaultValue:t?.type,onChange:e=>{return t=e.currentTarget.value,void a({...r.current,type:t});var t},data:["","postal","physical","both"]}),O.createElement(Q,{placeholder:"Line 1",defaultValue:st(t,0),onChange:e=>{return t=e.currentTarget.value,void a(mt(r.current||{},0,t));var t}}),O.createElement(Q,{placeholder:"Line 2",defaultValue:st(t,1),onChange:e=>{return t=e.currentTarget.value,void a(mt(r.current||{},1,t));var t}}),O.createElement(Q,{placeholder:"City",defaultValue:t.city,onChange:e=>{return t=e.currentTarget.value,void a({...r.current,city:t});var t}}),O.createElement(Q,{placeholder:"State",defaultValue:t.state,onChange:e=>{return t=e.currentTarget.value,void a({...r.current,state:t});var t}}),O.createElement(Q,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:e=>{return t=e.currentTarget.value,void a({...r.current,postalCode:t});var t}}))}const pt=F(void 0);function ht(e){const t=e.medplum,[n,r]=z({profile:t.getProfile(),loading:!1});M((()=>{function e(){r({...n,profile:t.getProfile()})}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const a={...n,medplum:t};return O.createElement(pt.Provider,{value:a},e.children)}function ft(){return U(pt)}function gt(){return ft().medplum}function Et(){return ft().profile}function yt(e){const n=Et(),[r,a]=z(e.defaultValue||{});return L().current=r,O.createElement(Q,{name:e.name,placeholder:"Annotation text",defaultValue:r.text,onChange:r=>function(r){const l=r?{text:r,authorReference:n&&t(n),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}(r.currentTarget.value)})}function vt(e){e.preventDefault(),e.stopPropagation()}function Ct(e){if(bt(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&bt(t[0]))return!0}return!1}function bt(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function xt(e){const{defaultValue:t,toKey:n,toOption:r,loadOptions:a,onChange:l,onCreate:o,...c}=e,i=function(e){if(!e)return[];if(Array.isArray(e))return e;return[e]}(t),u=L(null),[s,m]=z(void 0),[d,p]=z(),[h,f]=z(),[g,E]=z(),[y,v]=z(i?.map(r)),C=L();C.current=s;const b=L();b.current=d;const x=L();x.current=h;const T=L();T.current=g;const k=L();k.current=y;const w=_((()=>{p(void 0);const e=u.current?.value?.trim()||"";if(e===C.current)return;m(e);const t=new AbortController;f(t),a(e,t.signal).then((e=>{t.signal.aborted||(v(e.map(r)),f(void 0),T.current&&(e.length>0&&l(e.slice(0,1)),E(!1)))})).catch(console.log)}),[a,l,r]),S=_((()=>{x.current&&(x.current.abort(),f(void 0)),void 0!==b.current&&window.clearTimeout(b.current);const e=window.setTimeout((()=>w()),100);p(e)}),[w]),A=_((e=>{const t=[];for(const n of e){let e=k.current?.find((e=>e.value===n))?.resource;e||(e=o(n)),t.push(e)}l(t)}),[l,o]),D=_((e=>{"Enter"===e.key&&(b.current||x.current?E(!0):(vt(e),k.current&&k.current.length>0&&(v(k.current.slice(0,1)),A([k.current[0].value]))))}),[A]),V=_((e=>{const t=r(o(e));return v([...k.current,t]),t}),[o,v,r]),I=_(((e,t)=>!t),[]);return M((()=>()=>{x.current&&x.current.abort()}),[]),O.createElement(H,{...c,ref:u,defaultValue:i.map(n),searchable:!0,onKeyDown:D,onSearchChange:S,data:y,onFocus:w,onChange:A,onCreate:V,rightSectionWidth:40,rightSection:h?O.createElement(B,{size:16}):null,filter:I})}function Tt(e){const t=e.value,{contentType:n,url:r,title:a}=t??{};return r?O.createElement("div",{"data-testid":"attachment-display"},n?.startsWith("image/")&&O.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:t?.title}),n?.startsWith("video/")&&O.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},O.createElement("source",{type:n,src:r})),"application/pdf"===n&&!a?.endsWith(".pdf")&&O.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},O.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),O.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},O.createElement(G,{href:t?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},t?.title||"Download"))):null}function kt(e){return O.createElement("div",null,e.values&&e.values.map(((t,n)=>O.createElement("div",{key:"attatchment-"+n},O.createElement(Tt,{value:t,maxWidth:e.maxWidth})))))}function wt(e){const t=gt(),n=L(null);function r(n){if(!n)return;if(!n.name)return;e.onUploadStart&&e.onUploadStart();const r=n.name,a=n.type||"application/octet-stream";t.createBinary(n,r,a,e.onUploadProgress).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:r})})).catch((e=>{alert(e?.issue?.[0]?.details?.text)}))}return O.createElement(O.Fragment,null,O.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){vt(e);const t=e.target.files;t&&Array.from(t).forEach(r)}(e)}),e.children({onClick:function(e){vt(e),n.current?.click()}}))}function St(e){const[t,n]=z(e.defaultValue??[]),r=L();function a(t){n(t),e.onChange&&e.onChange(t)}return r.current=t,O.createElement("table",{style:{width:"100%"}},O.createElement("colgroup",null,O.createElement("col",{width:"97%"}),O.createElement("col",{width:"3%"})),O.createElement("tbody",null,t.map(((e,n)=>O.createElement("tr",{key:`${n}-${t.length}`},O.createElement("td",null,O.createElement(Tt,{value:e,maxWidth:200})),O.createElement("td",null,O.createElement(J,{title:"Remove",size:"sm",onClick:e=>{vt(e);const r=t.slice();r.splice(n,1),a(r)}},O.createElement(ke,null)))))),O.createElement("tr",null,O.createElement("td",null),O.createElement("td",null,O.createElement(wt,{onUpload:e=>{a([...r.current,e])}},(e=>O.createElement(J,{...e,title:"Add",size:"sm",color:"green"},O.createElement(we,{size:16}))))))))}function At(e){const[t,n]=z(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return t?O.createElement(O.Fragment,null,O.createElement(Tt,{value:t,maxWidth:200}),O.createElement(Y,{onClick:e=>{vt(e),r(void 0)}},"Remove")):O.createElement(wt,{onUpload:r},(e=>O.createElement(Y,{...e},"Upload...")))}const Dt=X((()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}})));function Vt(e){const{children:t,...n}=e,{classes:r}=Dt();return O.createElement(Z,{className:r.root,...n},t)}const It=X(((e,{width:t,fill:n})=>({paper:{maxWidth:t,margin:`${e.spacing.xl}px auto`,padding:n?0:e.spacing.md,"@media (max-width: 800px)":{padding:n?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}}))),Rt={shadow:"xs",radius:"md",withBorder:!0};function Nt(e){const{className:t,children:n,width:r,fill:a,unstyled:l,...o}=ee("Panel",Rt,e),{classes:c,cx:i}=It({width:r,fill:a},{name:"Panel",unstyled:l});return O.createElement(te,{className:i(c.paper,t),...o},n)}function Pt(e){const{children:t,...n}=e;return O.createElement(Vt,null,O.createElement(Nt,{...n},t))}function $t(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?Ot(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&zt(t,n);return t}function Ot(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function zt(e,t){e[t.name]=t.value}function Lt(e){return O.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=$t(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function Ft(e){return O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},O.createElement("title",null,"Medplum Logo"),O.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),O.createElement("path",{fill:e.fill||"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),O.createElement("path",{fill:e.fill||"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),O.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),O.createElement("path",{fill:e.fill||"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function Mt(e,t){return e?.issue?.filter((e=>_t(e.expression?.[0],t)))?.map((e=>e.details?.text))?.join("\n")}function Ut(e,t){return e?.issue?.filter((e=>_t(e.expression?.[0],t)))}function _t(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=e.indexOf(".");if(n>=0&&e.substring(n+1)===t)return!0;const r=t.indexOf(".");return r>=0&&t.substring(r+1)===e}function qt(e){const t=gt(),[n,r]=z();return O.createElement(Lt,{style:{maxWidth:400},onSubmit:async n=>{try{e.handleAuthResponse(await t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){r(e)}}},O.createElement(ne,{sx:{flexDirection:"column"}},O.createElement(Ft,{size:32}),O.createElement(re,null,"Create project")),O.createElement(ae,{spacing:"xl"},O.createElement(Q,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:Mt(n,"firstName")}),O.createElement(le,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",O.createElement(G,{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",O.createElement(G,{href:"https://www.medplum.com/terms"},"Terms of Service"),".")),O.createElement(j,{position:"right",mt:"xl",noWrap:!0},O.createElement(Y,{type:"submit"},"Create project")))}function Wt(e,t){const n=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=t||null,n.appendChild(r)}function jt(e){const t=gt(),{googleClientId:n,handleGoogleCredential:r}=e,a=L(null),[l,o]=z("undefined"!=typeof google),[c,i]=z(!1),[u,s]=z(!1);return M((()=>{"undefined"!=typeof google?(c||(google.accounts.id.initialize({client_id:n,callback:r}),i(!0)),a.current&&!u&&(google.accounts.id.renderButton(a.current,{}),s(!0))):Wt("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,n,c,l,a,u,r]),n?O.createElement("div",{ref:a}):null}function Kt(e){if(e)return e;const t=window.location.protocol+"//"+window.location.host;return("http://localhost:3000,http://127.0.0.1:3000,http://localhost:6006,http://127.0.0.1:6006,https://app.medplum.com,https://docs.medplum.com,https://storybook.medplum.com,https://graphiql.medplum.com,https://www.medplum.com"?.split(",")??[]).includes(t)?"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com":void 0}function Qt(e){"undefined"==typeof grecaptcha&&Wt("https://www.google.com/recaptcha/api.js?render="+e)}function Ht(e){return new Promise(((t,n)=>{grecaptcha.ready((async()=>{try{t(await grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))}))}function Bt(e){const t=Kt(e.googleClientId),n=e.recaptchaSiteKey,r=gt(),[a,l]=z(),o=Ut(a,void 0);return M((()=>Qt(n)),[n]),O.createElement(Lt,{style:{maxWidth:400},onSubmit:async t=>{try{const a=await Ht(n);e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:n,recaptchaToken:a}))}catch(e){l(e)}}},O.createElement(ne,{sx:{flexDirection:"column"}},e.children),o&&O.createElement(oe,{icon:O.createElement(Se,{size:16}),color:"red"},o.map((e=>O.createElement("div",{"data-testid":"text-field-error",key:e.details?.text},e.details?.text)))),t&&O.createElement(O.Fragment,null,O.createElement(j,{position:"center",p:"xl",style:{height:70}},O.createElement(jt,{googleClientId:t,handleGoogleCredential:async t=>{try{await r.startPkce(),e.handleAuthResponse(await r.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){l(e)}}})),O.createElement(ce,{label:"or",labelPosition:"center",my:"lg"})),O.createElement(ae,{spacing:"xl"},O.createElement(Q,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:Mt(a,"firstName")}),O.createElement(Q,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:Mt(a,"lastName")}),O.createElement(Q,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:Mt(a,"email")}),O.createElement(ie,{name:"password",label:"Password",autoComplete:"off",required:!0,error:Mt(a,"password")}),O.createElement(le,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",O.createElement(G,{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",O.createElement(G,{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),O.createElement(le,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",O.createElement(G,{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",O.createElement(G,{href:"https://policies.google.com/terms"},"Terms of Service")," apply.")),O.createElement(j,{position:"apart",mt:"xl",noWrap:!0},O.createElement(ue,{name:"remember",label:"Remember me",size:"xs"}),O.createElement(Y,{type:"submit"},"Create account")))}function Gt(e){const{type:t,projectId:n,googleClientId:r,recaptchaSiteKey:a,onSuccess:l}=e,o=gt(),[c,i]=z(void 0),[u,s]=z();function m(e){e.code?o.processCode(e.code).then((()=>l())).catch(console.log):e.login&&i(e.login)}return M((()=>{"patient"===t&&c&&o.startNewPatient({login:c,projectId:n}).then((e=>o.processCode(e.code))).then((()=>l())).catch((e=>s(e)))}),[o,t,n,c,l]),O.createElement(Pt,{width:450},u&&O.createElement("pre",null,JSON.stringify(u,null,2)),!c&&O.createElement(Bt,{projectId:n,googleClientId:r,recaptchaSiteKey:a,handleAuthResponse:m},e.children),c&&"project"===t&&O.createElement(qt,{login:c,handleAuthResponse:m}))}function Jt(e){const{generatePkce:t,onForgotPassword:n,onRegister:r,handleAuthResponse:a,children:l,...o}=e,c=gt(),i=Kt(e.googleClientId),[u,s]=z(),m=Ut(u,void 0);async function d(){t&&await c.startPkce()}return O.createElement(Lt,{style:{maxWidth:400},onSubmit:e=>{d().then((()=>c.startLogin({...o,email:e.email,password:e.password,remember:"on"===e.remember}))).then(a).catch(s)}},O.createElement(ne,{sx:{flexDirection:"column"}},l),m&&O.createElement(oe,{icon:O.createElement(Se,{size:16}),color:"red"},m.map((e=>O.createElement("div",{"data-testid":"text-field-error",key:e.details?.text},e.details?.text)))),i&&O.createElement(O.Fragment,null,O.createElement(j,{position:"center",p:"xl",style:{height:70}},O.createElement(jt,{googleClientId:i,handleGoogleCredential:t=>{d().then((()=>c.startGoogleLogin({...o,googleCredential:t.credential}))).then(e.handleAuthResponse).catch(s)}})),O.createElement(ce,{label:"or",labelPosition:"center",my:"lg"})),O.createElement(ae,{spacing:"xl"},O.createElement(Q,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:Mt(u,"email")}),O.createElement(ie,{name:"password",type:"password",label:"Password",autoComplete:"off",required:!0,error:Mt(u,"password")})),O.createElement(j,{position:"apart",mt:"xl",spacing:0,noWrap:!0},n&&O.createElement(G,{component:"button",type:"button",color:"dimmed",onClick:n,size:"xs"},"Forgot password"),r&&O.createElement(G,{component:"button",type:"button",color:"dimmed",onClick:r,size:"xs"},"Register"),O.createElement(ue,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),O.createElement(Y,{type:"submit"},"Sign in")))}function Yt(e){const t=gt();return O.createElement(ae,null,O.createElement(ne,{sx:{flexDirection:"column"}},O.createElement(Ft,{size:32}),O.createElement(re,null,"Choose profile")),e.memberships.map((n=>O.createElement(se,{key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse).catch(console.log)}},O.createElement(j,null,O.createElement(me,{radius:"xl"}),O.createElement("div",{style:{flex:1}},O.createElement(le,{size:"sm",weight:500},n.profile?.display),O.createElement(le,{color:"dimmed",size:"xs"},n.project?.display)))))))}function Xt(e){const t=gt();return O.createElement(Lt,{style:{maxWidth:400},onSubmit:n=>{t.post("auth/scope",{login:e.login,scope:Object.keys(n).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},O.createElement(ae,null,O.createElement(ne,{sx:{flexDirection:"column"}},O.createElement(Ft,{size:32}),O.createElement(re,null,"Choose scope")),O.createElement(ae,null,(e.scope||"openid").split(" ").map((e=>O.createElement(ue,{key:e,id:e,name:e,label:e,defaultChecked:!0})))),O.createElement(j,{position:"right",mt:"xl"},O.createElement(Y,{type:"submit"},"Set scope"))))}function Zt(e){const t=gt(),[r,a]=z(void 0);return O.createElement(Lt,{style:{maxWidth:400},onSubmit:r=>{a(void 0),t.post("auth/mfa/verify",{login:e.login,token:r.token}).then(e.handleAuthResponse).catch((e=>a(n(e))))}},O.createElement(ae,null,O.createElement(ne,{sx:{flexDirection:"column"}},O.createElement(Ft,{size:32}),O.createElement(re,null,"Enter MFA code")),r&&O.createElement(oe,{icon:O.createElement(Se,{size:16}),title:"Error",color:"red"},r),O.createElement(ae,null,O.createElement(Q,{name:"token",label:"MFA code",required:!0})),O.createElement(j,{position:"right",mt:"xl"},O.createElement(Y,{type:"submit"},"Submit code"))))}function en(e){const{chooseScopes:t,onSuccess:n,onForgotPassword:r,onRegister:a,onCode:l,...o}=e,c=gt(),[i,u]=z(void 0),[s,m]=z(!1),[d,p]=z(void 0);function h(e){m(!!e.mfaRequired),e.login&&u(e.login),e.memberships&&p(e.memberships),e.code&&(t?p(void 0):g(e.code))}function f(e){g(e.code)}function g(e){l?l(e):c.processCode(e).then((()=>{n&&n()})).catch(console.log)}return O.createElement(Pt,{width:450},i?s?O.createElement(Zt,{login:i,handleAuthResponse:h}):d?O.createElement(Yt,{login:i,memberships:d,handleAuthResponse:h}):"new"===e.projectId?O.createElement(qt,{login:i,handleAuthResponse:h}):e.chooseScopes?O.createElement(Xt,{login:i,scope:e.scope,handleAuthResponse:f}):O.createElement("div",null,"Success"):O.createElement(Jt,{generatePkce:!l,onForgotPassword:r,onRegister:a,handleAuthResponse:h,...o},e.children))}const tn=["meta","implicitRules","language","text","contained","extension","modifierExtension"],nn=X((e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm}px ${e.spacing.sm}px`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs}px ${e.spacing.xs}px 0`,border:0}}})));function rn(e){const{children:t,compact:n}=e,{classes:r,cx:a}=nn();return O.createElement("dl",{className:a(r.root,{[r.compact]:n})},t)}function an(e){return O.createElement(O.Fragment,null,O.createElement("dt",null,e.term),O.createElement("dd",null,e.children))}function ln(e){return O.createElement(O.Fragment,null,r(e.value))}function on(e){return O.createElement(O.Fragment,null,a(e.value))}function cn(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("]")),O.createElement(O.Fragment,null,n.join("").trim())}function un(e){const t=e.value;return t?O.createElement(O.Fragment,null,t.name,t.name&&": ",t.telecom?.map(((e,t)=>O.createElement(cn,{key:"telecom-"+t,value:e})))):null}function sn(e){const t=e.value;return t?O.createElement(O.Fragment,null,l(t,e.options)):null}function mn(e){return O.createElement("div",null,e.value?.system,": ",e.value?.value)}function dn(e){return O.createElement(O.Fragment,null,o(e.value))}function pn(e){return O.createElement(O.Fragment,null,c(e.value))}function hn(e){return O.createElement(O.Fragment,null,i(e.value))}function fn(e){const t=e.value;return t?O.createElement(O.Fragment,null,O.createElement(pn,{value:t.numerator})," / ",O.createElement(pn,{value:t.denominator})):null}function gn(e){const t=ot(),{to:n,suffix:r,label:a,onClick:l,children:o,...c}=e;let i=function(e){if(e){if("string"==typeof e)return function(e){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/"))return e;return"/"+e}(e);if("resourceType"in e)return function(e){return`/${e.resourceType}/${e.id}`}(e);if("reference"in e)return function(e){return`/${e.reference}`}(e)}return"#"}(n);return r&&(i+="/"+r),O.createElement(G,{href:i,"aria-label":a,onClick:e=>{vt(e),l?l():n&&t(i)},...c},o)}function En(e){if(!e.value)return null;const t=e.value.display||e.value.reference||u(e.value);return!1!==e.link&&e.value.reference?O.createElement(gn,{to:e.value},t):O.createElement(O.Fragment,null,t)}function yn(e){const t=e.property,n=e.values??[],r=t.type?.[0]?.code;return O.createElement(O.Fragment,null,n.map(((a,l)=>O.createElement("div",{key:`${l}-${n.length}`},O.createElement(vn,{arrayElement:!0,property:t,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function vn(e){const{property:t,propertyType:n,value:r}=e;if("*"===t?.max&&!e.arrayElement)return"Attachment"===n?O.createElement(kt,{values:r,maxWidth:e.maxWidth}):O.createElement(yn,{property:t,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(n){case m.boolean:return O.createElement(O.Fragment,null,void 0===r?"":Boolean(r).toString());case m.SystemString:case m.code:case m.date:case m.integer:case m.positiveInt:case m.string:case m.unsignedInt:case m.uri:case m.url:return O.createElement(O.Fragment,null,r);case m.canonical:return O.createElement(En,{value:{reference:r},link:e.link});case m.dateTime:case m.instant:return O.createElement(O.Fragment,null,h(r));case m.markdown:return O.createElement("pre",null,r);case m.Address:return O.createElement(ut,{value:r});case m.Annotation:return O.createElement(O.Fragment,null,r?.text);case m.Attachment:return O.createElement(Tt,{value:r,maxWidth:e.maxWidth});case m.CodeableConcept:return O.createElement(ln,{value:r});case m.Coding:return O.createElement(on,{value:r});case m.ContactDetail:return O.createElement(un,{value:r});case m.ContactPoint:return O.createElement(cn,{value:r});case m.HumanName:return O.createElement(sn,{value:r});case m.Identifier:return O.createElement(mn,{value:r});case m.Money:return O.createElement(dn,{value:r});case m.Period:return O.createElement(O.Fragment,null,p(r));case m.Quantity:case m.Duration:return O.createElement(pn,{value:r});case m.Range:return O.createElement(hn,{value:r});case m.Ratio:return O.createElement(fn,{value:r});case m.Reference:return O.createElement(En,{value:r,link:e.link});case m.Timing:return O.createElement(O.Fragment,null,d(r));case m.Dosage:case m.UsageContext:return O.createElement(bn,{value:{type:n,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!t?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return O.createElement(bn,{value:{type:s(t?.path?.split(".")),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Cn(e,t){const n=f(e,t);return n?Array.isArray(n)?[n.map((e=>e.value)),n[0].type]:[n.value,n.type]:[void 0,"undefined"]}function bn(e){const t=e.value,n=t.value;if(!n)return null;const r=t.type,a=g.types[r];return a?"object"==typeof n&&"name"in n&&1===Object.keys(n).length&&"string"==typeof n.name?O.createElement("div",null,n.name):O.createElement(rn,{compact:e.compact},Object.entries(a.properties).map((n=>{const a=n[0];if(tn.indexOf(a)>=0)return null;const l=n[1];l.path||(l.path=r+"."+a);const[o,c]=Cn(t,a);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:O.createElement(an,{key:a,term:E(a)},O.createElement(vn,{property:l,propertyType:c,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):O.createElement("div",null,r," not implemented")}function xn(e){return O.createElement(j,{noWrap:!0},O.createElement("div",null,e.children),O.createElement("div",null,O.createElement(de.Wrapper,{id:e.htmlFor,label:e.title,description:e.description},null)))}function Tn(e){return O.createElement(de.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,error:Mt(e.outcome,e.htmlFor)},e.children)}const kn={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function wn(e){const t=gt(),[n,r]=z(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?kn:e.getCachedReference(t);return}(t,e));return M((()=>{let a=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{a&&r(e)})).catch((()=>r(void 0))),()=>a=!1}),[t,n,e]),n}function Sn(e){const t=gt(),n=wn(e.defaultValue),[r,a]=z(),[l,o]=z();return M((()=>{n&&(o(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(a).catch(console.log))}),[t,n]),r&&l?O.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(l)}},O.createElement(ae,{mb:"xl"},O.createElement(Tn,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},O.createElement(Q,{name:"resourceType",defaultValue:l.resourceType,disabled:!0})),O.createElement(Tn,{title:"ID",htmlFor:"id",outcome:e.outcome},O.createElement(Q,{name:"id",defaultValue:l.id,disabled:!0}))),O.createElement(ur,{typeName:l.resourceType,defaultValue:l,outcome:e.outcome,onChange:o}),O.createElement(j,{position:"right",mt:"xl"},O.createElement(Y,{type:"submit"},"OK"),e.onDelete&&O.createElement(Y,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(l)}},"Delete"))):O.createElement("div",null,"Loading...")}function An(e,t,n,r,a){const l=r.type;if(l.length>1)for(const n of l){const r=t.replace("[x]",y(n.code));r in e&&delete e[r]}return e[n]=a,e}function Dn(e){return e.code}function Vn(e){return{value:e.code,label:(t=e,t.display||t.code||""),resource:e};var t}function In(e){return{code:e,display:e}}function Rn(e){const t=gt(),{elementDefinition:n,...r}=e,a=_((async(e,r)=>{const a=n.binding?.valueSet,l=(await t.searchValueSet(a,e,{signal:r})).expansion?.contains,o=[];for(const e of l)e.code&&!o.some((t=>t.code===e.code))&&o.push(e);return o}),[t,n]);return O.createElement(xt,{...r,creatable:!0,clearable:!0,toKey:Dn,toOption:Vn,loadOptions:a,getCreateLabel:e=>`+ Create ${e}`,onCreate:In})}function Nn(e){const[t,n]=z(e.defaultValue);return O.createElement(Rn,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(r=t,r.coding?.map((e=>({system:e.system,code:e.code,display:e.display})))),onChange:function(t){const r=function(e){if(0===e.length)return;return{coding:e.map((e=>({system:e.system,code:e.code,display:e.display})))}}(t);n(r),e.onChange&&e.onChange(r)}});var r}function Pn(e){const[t,n]=z(e.defaultValue);return O.createElement(Rn,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:(r=t,r?{code:r}:void 0),onChange:function(t){const r=t[0]?.code;n(r),e.onChange&&e.onChange(r)}});var r}function $n(e){const[t,n]=z(e.defaultValue);return O.createElement(Rn,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(r=t,{system:r.system,code:r.code,display:r.display}),onChange:function(t){const r=t[0],a=r&&{system:(l=r).system,code:l.code,display:l.display};var l;n(a),e.onChange&&e.onChange(a)}});var r}function On(e){const[t,n]=z(e.defaultValue),r=L();function a(t){t&&0===Object.keys(t).length&&(t=void 0),n(t),e.onChange&&e.onChange(t)}return r.current=t,O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(K,{"data-testid":"system",defaultValue:t?.system,onChange:e=>function(e){const t={...r.current,system:e};e||delete t.system,a(t)}(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),O.createElement(K,{"data-testid":"use",defaultValue:t?.use,onChange:e=>function(e){const t={...r.current,use:e};e||delete t.use,a(t)}(e.currentTarget.value),data:["","home","work","temp","old","mobile"]}),O.createElement(Q,{placeholder:"Value",defaultValue:t?.value,onChange:e=>function(e){const t={...r.current,value:e};e||delete t.value,a(t)}(e.currentTarget.value)}))}function zn(e){const[t,n]=z(e.defaultValue),r=L();function a(t){n(t),e.onChange&&e.onChange(t)}return r.current=t,O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(Q,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:t?.name,onChange:e=>function(e){const t={...r.current,name:e};e||delete t.name,a(t)}(e.currentTarget.value)}),O.createElement(On,{name:e.name+"-telecom",defaultValue:t?.telecom?.[0],onChange:function(e){const t={...r.current,telecom:e&&[e]};e||delete t.telecom,a(t)}}))}function Ln(e){return O.createElement(Q,{id:e.name,name:e.name,"data-testid":e.name,placeholder:e.placeholder,type:"datetime-local",defaultValue:Fn(e.defaultValue),error:Mt(e.outcome,e.name),onChange:t=>{if(e.onChange){const n=t.currentTarget.value;e.onChange(Mn(n))}}})}function Fn(e){if(!e)return"";const t=new Date(e);return v(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function Mn(e){if(!e)return"";const t=new Date(e);return v(t)?t.toISOString():""}function Un(e){return O.createElement(pe,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:u(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function _n(e){const[t,n]=z(e.defaultValue),r=L();function a(t){n(t),e.onChange&&e.onChange(t)}return r.current=t,O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(K,{defaultValue:t?.use,"data-testid":"use",onChange:e=>{return t=e.currentTarget.value,void a({...r.current,use:t||void 0});var t},data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),O.createElement(Q,{placeholder:"Prefix",defaultValue:t?.prefix?.join(" "),onChange:e=>{return t=e.currentTarget.value,void a({...r.current,prefix:t?t.split(" "):void 0});var t}}),O.createElement(Q,{placeholder:"Given",defaultValue:t?.given?.join(" "),onChange:e=>{return t=e.currentTarget.value,void a({...r.current,given:t?t.split(" "):void 0});var t}}),O.createElement(Q,{placeholder:"Family",defaultValue:t?.family,onChange:e=>{return t=e.currentTarget.value,void a({...r.current,family:t||void 0});var t}}),O.createElement(Q,{placeholder:"Suffix",defaultValue:t?.suffix?.join(" "),onChange:e=>{return t=e.currentTarget.value,void a({...r.current,suffix:t?t.split(" "):void 0});var t}}))}function qn(e){const[t,n]=z(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(Q,{placeholder:"System",defaultValue:t?.system,onChange:e=>r({...t,system:e.currentTarget.value})}),O.createElement(Q,{placeholder:"Value",defaultValue:t?.value,onChange:e=>r({...t,value:e.currentTarget.value})}))}const Wn=["USD","EUR","CAD","GBP","AUD"];function jn(e){const{onChange:t}=e,[n,r]=z(e.defaultValue),a=_((e=>{r(e),t&&t(e)}),[t]),l=_((e=>{a({...n,currency:e.currentTarget.value})}),[n,a]),o=_((e=>{a({...n,value:e.currentTarget.valueAsNumber})}),[n,a]),c=O.createElement(K,{defaultValue:n?.currency,data:Wn,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:l});return O.createElement(Q,{type:"number",label:e.label,placeholder:e.placeholder||"Value",defaultValue:n?.value?.toString()||"USD",icon:O.createElement(Ae,{size:14}),rightSection:c,rightSectionWidth:92,onChange:o})}function Kn(e){const[t,n]=z(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(Ln,{name:e.name+".start",placeholder:"Start",defaultValue:t?.start,onChange:e=>r({...t,start:e})}),O.createElement(Ln,{name:e.name+".end",placeholder:"End",defaultValue:t?.end,onChange:e=>r({...t,end:e})}))}function Qn(e){const[t,n]=z(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(K,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:t?.comparator,data:["","<","<=",">=",">"],onChange:e=>r({...t,comparator:e.currentTarget.value})}),O.createElement(Q,{id:e.name,name:e.name,"data-testid":e.name+"-value",type:"number",step:"any",placeholder:"Value",defaultValue:t?.value?.toString(),onChange:e=>r({...t,value:Hn(e.currentTarget.value)})}),O.createElement(Q,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:t?.unit,onChange:e=>r({...t,unit:e.currentTarget.value})}))}function Hn(e){if(e)return parseFloat(e)}function Bn(e){const[t,n]=z(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(Qn,{name:e.name+"-low",defaultValue:t?.low,onChange:e=>r({...t,low:e})}),O.createElement(Qn,{name:e.name+"-high",defaultValue:t?.high,onChange:e=>r({...t,high:e})}))}function Gn(e){const[t,n]=z(e.defaultValue);function r(t){n(t),e.onChange&&e.onChange(t)}return O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(Qn,{name:e.name+"-numerator",defaultValue:t?.numerator,onChange:e=>r({...t,numerator:e})}),O.createElement(Qn,{name:e.name+"-denominator",defaultValue:t?.denominator,onChange:e=>r({...t,denominator:e})}))}function Jn(e){const t=wn(e.value),n=t?C(t):e.alt??"",r=(t&&b(t))??e.src,a=e.radius??"xl",l={...e};return delete l.value,delete l.link,e.link?O.createElement(gn,{to:t},O.createElement(me,{src:r,alt:n,radius:a,...l})):O.createElement(me,{src:r,alt:n,radius:a,...l})}const Yn={Schedule:"_id",Task:"_id",Patient:"name",Practitioner:"name",Questionnaire:"name",ServiceRequest:"_id",DiagnosticReport:"_id",Specimen:"_id",Observation:"code",RequestGroup:"_id",ActivityDefinition:"name",User:"email:contains"};function Xn(e){const t=gt(),n=wn(e.defaultValue),[r,a]=z(n?C(n):""),[l,o]=z(!1),[c,i]=z([]);async function u(n){o(!0);const r=Yn[e.resourceType]||"name",a=new URLSearchParams({[r]:n,_count:"10"}),l=await t.searchResources(e.resourceType,a);i(l.map((e=>({value:C(e),resource:e})))),o(!1)}return M((()=>{n&&a(C(n))}),[n,a]),O.createElement(he,{itemComponent:Zn,value:r,data:c,placeholder:e.placeholder,onFocus:()=>u(r),onChange:async function(e){return a(e),u(e)},onItemSubmit:function(t){a(t.value),i([]),e.onChange&&e.onChange(t.resource)},rightSection:l?O.createElement(B,{size:16}):null})}const Zn=q((({value:e,resource:t,...n},r)=>O.createElement("div",{ref:r,...n},O.createElement(j,{noWrap:!0},O.createElement(Jn,{value:t}),O.createElement("div",null,O.createElement(le,null,e),O.createElement(le,{size:"xs",color:"dimmed"},t.birthDate))))));function er(e){const n=function(e){if(!e||0===e.length||1===e.length&&"Resource"===e[0])return;return e}(e.targetTypes),r=function(e,t){const n=e?.reference?.split("/")[0];if(n)return n;if(t&&t.length>0)return t[0];return}(e.defaultValue,n),[a,l]=z(e.defaultValue),[o,c]=z(r);L().current=a;return L().current=o,O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},n?O.createElement(K,{"data-testid":"reference-input-resource-type-select",defaultValue:o,onChange:e=>c(e.currentTarget.value),data:n}):O.createElement(Q,{"data-testid":"reference-input-resource-type-input",defaultValue:o,onChange:e=>c(e.currentTarget.value)}),O.createElement(Xn,{resourceType:o,name:e.name+"-id",placeholder:e.placeholder,defaultValue:a,onChange:n=>{var r;r=n?t(n):void 0,l(r),e.onChange&&e.onChange(r)}}))}function tr(e){const[t,n]=z(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=L();function a(t){n(t),e.onChange&&e.onChange(t)}return r.current=t,O.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},O.createElement("colgroup",null,O.createElement("col",{width:"97%"}),O.createElement("col",{width:"3%"})),O.createElement("tbody",null,t.map(((n,l)=>O.createElement("tr",{key:`${l}-${t.length}`},O.createElement("td",null,O.createElement(lr,{arrayElement:!0,property:e.property,name:e.name+"."+l,defaultValue:n,onChange:e=>{const t=[...r.current];t[l]=e,a(t)}})),O.createElement("td",{style:{textAlign:"right"}},O.createElement(J,{title:"Remove",size:"sm",onClick:e=>{vt(e);const t=[...r.current];t.splice(l,1),a(t)}},O.createElement(ke,null)))))),O.createElement("tr",null,O.createElement("td",null),O.createElement("td",{style:{textAlign:"right"}},O.createElement(J,{title:"Add",size:"sm",color:"green",onClick:e=>{vt(e);const t=[...r.current];t.push(void 0),a(t)}},O.createElement(De,null))))))}const nr=["sun","mon","tue","wed","thu","fri","sat"];function rr(e){const[t,n]=z(e.defaultValue||{}),[r,a]=z(!1),l=L();return l.current=t,O.createElement(O.Fragment,null,O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement("span",null,d(l.current)||"No repeat"),O.createElement(Y,{onClick:()=>a(!0)},"Edit")),O.createElement(ar,{visible:r,defaultValue:l.current,onOk:t=>{e.onChange&&e.onChange(t),n(t),a(!1)},onCancel:()=>a(!1)}))}function ar(e){const[t,n]=z(e.defaultValue||{}),r=L();function a(e){n({...r.current,repeat:e})}function l(e,t){t?function(e){const t=r.current?.repeat?.dayOfWeek||[];t.includes(e)||a({...r.current?.repeat,dayOfWeek:[...t,e]})}(e):function(e){const t=r.current?.repeat?.dayOfWeek||[];t.includes(e)&&a({...r.current?.repeat,dayOfWeek:t.filter((t=>t!==e))})}(e)}return r.current=t,O.createElement(fe,{title:"Timing",closeButtonLabel:"Close",opened:e.visible,onClose:()=>e.onCancel()},O.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},O.createElement(Tn,{title:"Starts on",htmlFor:"timing-dialog-start"},O.createElement(Ln,{name:"timing-dialog-start",onChange:e=>{return t=e,void n({...r.current,event:[t]});var t}})),O.createElement(Tn,{title:"Repeat every",htmlFor:"timing-dialog-period"},O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(Q,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:t?.repeat?.period,onChange:e=>{return t=parseInt(e.currentTarget.value),void a({...r.current?.repeat,period:t});var t}}),O.createElement(K,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:t?.repeat?.periodUnit,onChange:e=>{return t=e.currentTarget.value,void a({...r.current?.repeat,periodUnit:t});var t},data:[{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),O.createElement(Tn,{title:"Repeat on"},O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},nr.map((e=>O.createElement(O.Fragment,{key:e},O.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),O.createElement(ue,{id:"timing-dialog-repeat-"+e,name:"timing-dialog-repeat-"+e,onChange:t=>l(e,t.currentTarget.checked)}))))))),O.createElement(Y,{onClick:()=>e.onOk(t)},"OK"))}function lr(e){const t=e.property,n=e.defaultPropertyType??t.type?.[0]?.code,r=e.name,a=e.defaultValue;if("*"===t.max&&!e.arrayElement)return"Attachment"===n?O.createElement(St,{name:r,defaultValue:a,onChange:e.onChange}):O.createElement(tr,{property:t,name:r,defaultValue:a,onChange:e.onChange});const l=t.type;return l.length>1?O.createElement(or,{elementDefinitionTypes:l,...e}):O.createElement(cr,{elementDefinitionType:l[0],...e})}function or(e){const t=e.elementDefinitionTypes;let n;e.defaultPropertyType&&(n=t.find((t=>t.code===e.defaultPropertyType))),n||(n=t[0]);const[r,a]=z(n);return O.createElement(j,{spacing:"xs",grow:!0,noWrap:!0},O.createElement(K,{style:{width:"200px"},defaultValue:r?.code,onChange:e=>{a(t.find((t=>t.code===e.currentTarget.value)))},data:t.map((e=>({value:e.code,label:e.code})))}),O.createElement(cr,{...e,elementDefinitionType:r,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",y(r.code)))}}))}function cr(e){const t=e.property,n=e.elementDefinitionType.code,r=e.name,a=e.defaultValue;switch(n){case m.SystemString:case m.canonical:case m.string:case m.time:case m.uri:case m.url:return O.createElement(Q,{id:r,name:r,"data-testid":r,defaultValue:a,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:Mt(e.outcome,r)});case m.date:return O.createElement(Q,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:Mt(e.outcome,r)});case m.dateTime:case m.instant:return O.createElement(Ln,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case m.decimal:case m.integer:case m.positiveInt:case m.unsignedInt:return O.createElement(Q,{type:"number",step:n===m.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.valueAsNumber)}});case m.code:return O.createElement(Pn,{property:t,name:r,defaultValue:a,onChange:e.onChange});case m.boolean:return O.createElement(ue,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}});case m.markdown:return O.createElement(ge,{id:r,name:r,"data-testid":r,defaultValue:a,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}});case m.Address:return O.createElement(dt,{name:r,defaultValue:a,onChange:e.onChange});case m.Annotation:return O.createElement(yt,{name:r,defaultValue:a,onChange:e.onChange});case m.Attachment:return O.createElement(At,{name:r,defaultValue:a,onChange:e.onChange});case m.CodeableConcept:return O.createElement(Nn,{property:t,name:r,defaultValue:a,onChange:e.onChange});case m.Coding:return O.createElement($n,{property:t,name:r,defaultValue:a,onChange:e.onChange});case m.ContactDetail:return O.createElement(zn,{name:r,defaultValue:a,onChange:e.onChange});case m.ContactPoint:return O.createElement(On,{name:r,defaultValue:a,onChange:e.onChange});case m.Extension:return O.createElement(Un,{name:r,defaultValue:a,onChange:e.onChange});case m.HumanName:return O.createElement(_n,{name:r,defaultValue:a,onChange:e.onChange});case m.Identifier:return O.createElement(qn,{name:r,defaultValue:a,onChange:e.onChange});case m.Money:return O.createElement(jn,{name:r,defaultValue:a,onChange:e.onChange});case m.Period:return O.createElement(Kn,{name:r,defaultValue:a,onChange:e.onChange});case m.Duration:case m.Quantity:return O.createElement(Qn,{name:r,defaultValue:a,onChange:e.onChange});case m.Range:return O.createElement(Bn,{name:r,defaultValue:a,onChange:e.onChange});case m.Ratio:return O.createElement(Gn,{name:r,defaultValue:a,onChange:e.onChange});case m.Reference:return O.createElement(er,{name:r,defaultValue:a,targetTypes:ir(t),onChange:e.onChange});case m.Timing:return O.createElement(rr,{name:r,defaultValue:a,onChange:e.onChange});case m.Dosage:case m.UsageContext:return O.createElement(ur,{typeName:n,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return O.createElement(ur,{typeName:s(t.path?.split(".")),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function ir(e){return e?.type?.[0]?.targetProfile?.map((e=>e.split("/").pop()))}function ur(e){const[t,n]=z(e.defaultValue??{});function r(t){n(t),e.onChange&&e.onChange(t)}const a=e.typeName,l=g.types[a];if(!l)return O.createElement("div",null,a," not implemented");const o={type:a,value:t};return O.createElement(ae,null,Object.entries(l.properties).map((n=>{const a=n[0];if("id"===a||tn.indexOf(a)>=0)return null;const l=n[1];if(!l.type)return null;const[c,i]=Cn(o,a);return 1===l.type.length&&"boolean"===l.type[0].code?O.createElement(xn,{key:a,title:E(a),description:l.definition,htmlFor:a},O.createElement(lr,{property:l,name:a,defaultValue:c,defaultPropertyType:i,outcome:e.outcome,onChange:(e,l)=>{r(An(t,a,l??a,n[1],e))}})):O.createElement(Tn,{key:a,title:E(a),description:l.definition,htmlFor:a,outcome:e.outcome},O.createElement(lr,{property:l,name:a,defaultValue:c,defaultPropertyType:i,outcome:e.outcome,onChange:(e,l)=>{r(An(t,a,l??a,n[1],e))}}))})))}const sr=X((e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}})));function mr(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function dr(e){const{classes:t}=sr(),{onChangeMonth:n,onClick:r}=e,[a,l]=z(pr);function o(e){l((t=>{const r=new Date(t.getTime());return r.setMonth(t.getMonth()+e),n(r),r}))}const c=W((()=>function(e,t){const n=new Date(e.getFullYear(),e.getMonth()),r=[];let a=[];for(let e=0;e<n.getDay();e++)a.push(void 0);for(;n.getMonth()===e.getMonth();)a.push({date:new Date(n.getTime()),available:hr(n,t)}),6===n.getDay()&&(r.push(a),a=[]),n.setDate(n.getDate()+1);if(0!==n.getDay()){for(let e=n.getDay();e<7;e++)a.push(void 0);r.push(a)}return r}(a,e.slots)),[a,e.slots]);return O.createElement("div",null,O.createElement(j,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},O.createElement("p",{style:{flex:1}},mr(a)),O.createElement(j,{position:"right",spacing:"xs"},O.createElement(Y,{variant:"outline","aria-label":"Previous month",onClick:()=>o(-1)},"<"),O.createElement(Y,{variant:"outline","aria-label":"Next month",onClick:()=>o(1)},">"))),O.createElement("table",{className:t.table},O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",null,"SUN"),O.createElement("th",null,"MON"),O.createElement("th",null,"TUE"),O.createElement("th",null,"WED"),O.createElement("th",null,"THU"),O.createElement("th",null,"FRI"),O.createElement("th",null,"SAT"))),O.createElement("tbody",null,c.map(((e,t)=>O.createElement("tr",{key:"week-"+t},e.map(((e,t)=>O.createElement("td",{key:"day-"+t},e&&O.createElement(Y,{disabled:!e.available,onClick:()=>r(e.date)},e.date.getDate()))))))))))}function pr(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function hr(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 fr(e){const{value:t,link:n,...r}=e,a=wn(t);if(!a)return null;const l=C(a);return n?O.createElement(gn,{to:a,...r},l):O.createElement(le,{component:"span",...r},l)}function gr(e){return O.createElement(j,{spacing:"xs"},O.createElement(Jn,{size:24,radius:12,value:e.value,link:e.link}),O.createElement(fr,{value:e.value,link:e.link}))}const Er={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function yr(e){return O.createElement(Ee,{color:Er[e.status]},e.status)}const vr=X((e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:"dark"===e.colorScheme?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}}})));function Cr(e){const t=wn(e.value),n=wn(t?.specimen?.[0]);if(!t)return null;let r="";if(t.presentedForm&&t.presentedForm.length>0){const e=t.presentedForm[0];e.contentType?.startsWith("text/plain")&&e.data&&(r=window.atob(e.data))}if(n?.note)for(const e of n.note)r+=e.text+"\n\n";return O.createElement(ae,null,O.createElement(re,null,"Diagnostic Report"),O.createElement(j,{mt:"md",spacing:30},t.subject&&O.createElement("div",null,O.createElement(le,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),O.createElement(le,null,O.createElement(gr,{value:t.subject,link:!0}))),t.resultsInterpreter&&t.resultsInterpreter.map((e=>O.createElement("div",{key:e.reference},O.createElement(le,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),O.createElement(le,null,O.createElement(gr,{value:e,link:!0}))))),t.issued&&O.createElement("div",null,O.createElement(le,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),O.createElement(le,null,h(t.issued))),t.status&&O.createElement("div",null,O.createElement(le,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),O.createElement(le,null,y(t.status)))),t.result&&O.createElement(br,{value:t.result}),r&&O.createElement("pre",null,r.trim()))}function br(e){const{classes:t}=vr();return O.createElement("table",{className:t.table},O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",null,"Test"),O.createElement("th",null,"Value"),O.createElement("th",null,"Reference Range"),O.createElement("th",null,"Interpretation"),O.createElement("th",null,"Category"),O.createElement("th",null,"Status"))),O.createElement("tbody",null,e.value?.map(((e,t)=>O.createElement(xr,{key:"obs-"+t,value:e})))))}function xr(e){const{classes:t,cx:n}=vr(),r=wn(e.value);if(!r)return null;const a=function(e){const t=e.interpretation?.[0]?.coding?.[0]?.code;return"AA"===t||"LL"===t||"HH"===t||"A"===t}(r);return O.createElement("tr",{className:n({[t.criticalRow]:a})},O.createElement("td",null,O.createElement(gn,{to:r},O.createElement(ln,{value:r.code}))),O.createElement("td",null,O.createElement(Tr,{value:r})),O.createElement("td",null,O.createElement(kr,{value:r.referenceRange})),O.createElement("td",null,r.interpretation&&r.interpretation.length>0&&O.createElement(ln,{value:r.interpretation[0]})),O.createElement("td",null,r.category&&r.category.length>0&&O.createElement("ul",null,r.category.map(((e,t)=>O.createElement("li",{key:`category-${t}`},O.createElement(ln,{value:e})))))),O.createElement("td",null,r.status&&O.createElement(yr,{status:r.status})))}function Tr(e){const t=e.value;return O.createElement(O.Fragment,null,x(t))}function kr(e){const t=e.value&&e.value.length>0&&e.value[0];return t?t.text?O.createElement(O.Fragment,null,t.text):O.createElement(hn,{value:t}):null}const wr=X((e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm}px ${e.spacing.sm}px`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}})));function Sr(e){const{classes:t}=wr(),n=gt(),[r,a]=z();if(M((()=>{n.requestSchema(e.original.resourceType).then(a).catch(console.log)}),[n,e.original.resourceType]),!r)return null;const l=r.types[e.original.resourceType];return l?O.createElement("table",{className:t.root},O.createElement("colgroup",null,O.createElement("col",{style:{width:"30%"}}),O.createElement("col",{style:{width:"35%"}}),O.createElement("col",{style:{width:"35%"}})),O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",null,"Property"),O.createElement("th",null,"Before"),O.createElement("th",null,"After"))),O.createElement("tbody",null,Object.entries(l.properties).map((n=>{const r=n[0];if("id"===r||"meta"===r)return null;const a=n[1],[l,o]=Cn(T(e.original),r),[c,i]=Cn(T(e.revised),r);return Ar(l)&&Ar(c)||u(l)===u(c)?null:O.createElement("tr",{key:r},O.createElement("td",null,E(r)),O.createElement("td",{className:t.removed},O.createElement(vn,{property:a,propertyType:o,value:l,ignoreMissingValues:!0})),O.createElement("td",{className:t.added},O.createElement(vn,{property:a,propertyType:i,value:c,ignoreMissingValues:!0})))})))):null}function Ar(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function Dr(e){const t=gt(),n=wn(e.value),[r,a]=z();return M((()=>{n&&t.requestSchema(n.resourceType).then(a).catch(console.log)}),[t,n]),r&&n?O.createElement(bn,{value:{type:n.resourceType,value:n},ignoreMissingValues:e.ignoreMissingValues}):null}class Vr extends O.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?O.createElement(oe,{icon:O.createElement(Se,{size:16}),title:"Something went wrong",color:"red"},n(this.state.error)):this.props.children}}function Ir(e){return O.createElement(Vt,null,e.children)}function Rr(e){const{resource:t,profile:n,padding:r,popupMenuItems:a,...l}=e,o=n??t.meta?.author;return O.createElement(Nt,{"data-testid":"timeline-item",fill:!0,...l},O.createElement(j,{position:"apart",spacing:8,mx:"xs",my:"sm"},O.createElement(Jn,{value:o,link:!0,size:"md"}),O.createElement("div",{style:{flex:1}},O.createElement(le,{size:"sm"},O.createElement(fr,{color:"dark",weight:500,value:o,link:!0})),O.createElement(le,{size:"xs"},O.createElement(gn,{color:"dimmed",to:e.resource},h(e.resource.meta?.lastUpdated)),O.createElement(le,{component:"span",color:"dimmed",mx:8},"·"),O.createElement(gn,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&O.createElement(ye,{position:"bottom-end",shadow:"md",width:200},O.createElement(ye.Target,null,O.createElement(J,{radius:"xl","aria-label":`Actions for ${k(e.resource)}`},O.createElement(Ve,null))),a)),O.createElement(Vr,null,r&&O.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&O.createElement(O.Fragment,null,e.children)))}function Nr(e){e.sort(Pr)}function Pr(e,t){const n=$r(e),r=$r(t);return n>r?1:n<r?-1:Or(e)-Or(t)}function $r(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function Or(e){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 t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}const zr=X((e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}})));function Lr(e){const t=ot(),r=gt(),a=r.getProfile(),l=L(null),o=wn(e.value),[c,i]=z(),[u,s]=z([]),m=e.buildSearchRequests,d=L(u);d.current=u;const p=_((()=>{if(!o)return s([]),void i({});r.executeBatch(m(o)).then(h).catch(console.log)}),[r,o,m]);function h(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&i(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}Nr(t),t.reverse()}s(t)}function f(e){const t=[...d.current,...e];Nr(t),t.reverse(),s(t)}function g(e,t){return r.updateResource({...e,priority:t})}function E(e){g(e,"stat").then(p).catch(console.log)}function y(e){g(e,"routine").then(p).catch(console.log)}function v(e){t(`/${e.resourceType}/${e.id}`)}function C(e){t(`/${e.resourceType}/${e.id}/edit`)}function b(e){t(`/${e.resourceType}/${e.id}/delete`)}function x(e){t(`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`)}return M((()=>{p()}),[p]),o?O.createElement(Ir,null,e.createCommunication&&O.createElement(Nt,null,O.createElement(Lt,{testid:"timeline-form",onSubmit:t=>{var n;n=t.text,o&&e.createCommunication&&r.createResource(e.createCommunication(o,a,n)).then((e=>{f([e])})).catch(console.log);const c=l.current;c&&(c.value="",c.focus())}},O.createElement(j,{spacing:"xs",noWrap:!0,style:{width:"100%"}},O.createElement(Jn,{value:a}),O.createElement(Q,{name:"text",ref:l,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),O.createElement(J,{type:"submit",radius:"xl",color:"blue",variant:"filled"},O.createElement(Ie,{size:16})),O.createElement(wt,{onUpload:function(t){o&&e.createMedia&&r.createResource(e.createMedia(o,a,t)).then((e=>f([e]))).then((()=>ct({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:O.createElement(Re,{size:16}),autoClose:2e3}))).catch((e=>ct({id:"upload-notification",color:"red",title:"Upload error",message:n(e),icon:O.createElement(Ne,{size:16}),autoClose:2e3})))},onUploadStart:function(){it({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,disallowClose:!0})},onUploadProgress:function(e){ct({id:"upload-notification",loading:!0,title:"Uploading...",message:jr(e),autoClose:!1,disallowClose:!0})}},(e=>O.createElement(J,{...e,radius:"xl",color:"blue",variant:"filled"},O.createElement(we,{size:16}))))))),u.map((e=>{if(e.resourceType===o.resourceType&&e.id===o.id)return O.createElement(Mr,{key:e.meta?.versionId,history:c,resource:e,onDetails:x});const t=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return O.createElement(qr,{key:t,resource:e,onDetails:v});case"Communication":return O.createElement(Ur,{key:t,resource:e,onPin:"stat"!==e.priority?E:void 0,onUnpin:"stat"===e.priority?y:void 0,onDetails:v,onEdit:C,onDelete:b});case"DiagnosticReport":return O.createElement(Wr,{key:t,resource:e,onDetails:v,onEdit:C,onDelete:b});case"Media":return O.createElement(_r,{key:t,resource:e,onDetails:v,onEdit:C,onDelete:b});default:return O.createElement(Rr,{key:t,resource:e,padding:!0},O.createElement(Dr,{value:e,ignoreMissingValues:!0}))}}))):O.createElement(ne,{style:{width:"100%",height:"100%"}},O.createElement(B,null))}function Fr(e){return O.createElement(ye.Dropdown,null,O.createElement(ye.Label,null,"Resource"),e.onPin&&O.createElement(ye.Item,{icon:O.createElement(Pe,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${k(e.resource)}`},"Pin"),e.onUnpin&&O.createElement(ye.Item,{icon:O.createElement($e,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${k(e.resource)}`},"Unpin"),e.onDetails&&O.createElement(ye.Item,{icon:O.createElement(Oe,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${k(e.resource)}`},"Details"),e.onEdit&&O.createElement(ye.Item,{icon:O.createElement(ze,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${k(e.resource)}`},"Edit"),e.onDelete&&O.createElement(O.Fragment,null,O.createElement(ye.Divider,null),O.createElement(ye.Label,null,"Danger zone"),O.createElement(ye.Item,{color:"red",icon:O.createElement(Le,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${k(e.resource)}`},"Delete")))}function Mr(e){const t=function(e,t){const n=e.entry,r=n.findIndex((e=>e.resource?.meta?.versionId===t.meta?.versionId));if(r>=n.length-1)return;return n[r+1].resource}(e.history,e.resource);return t?O.createElement(Rr,{resource:e.resource,padding:!0,popupMenuItems:O.createElement(Fr,{...e})},O.createElement(Sr,{original:t,revised:e.resource})):O.createElement(Rr,{resource:e.resource,padding:!0,popupMenuItems:O.createElement(Fr,{...e})},O.createElement("h3",null,"Created"),O.createElement(Dr,{value:e.resource,ignoreMissingValues:!0}))}function Ur(e){const{classes:t}=zr(),n=!e.resource.priority||"routine"===e.resource.priority?void 0:t.pinnedComment;return O.createElement(Rr,{resource:e.resource,profile:e.resource.sender,padding:!0,className:n,popupMenuItems:O.createElement(Fr,{...e})},O.createElement("p",null,e.resource.payload?.[0]?.contentString))}function _r(e){const t=e.resource.content?.contentType,n=t&&!t.startsWith("image/")&&!t.startsWith("video/")&&"application/pdf"!==t;return O.createElement(Rr,{resource:e.resource,padding:!!n,popupMenuItems:O.createElement(Fr,{...e})},O.createElement(Tt,{value:e.resource.content}))}function qr(e){return O.createElement(Rr,{resource:e.resource,padding:!0,popupMenuItems:O.createElement(Fr,{...e})},O.createElement(ve,null,O.createElement("pre",null,e.resource.outcomeDesc)))}function Wr(e){return O.createElement(Rr,{resource:e.resource,padding:!0,popupMenuItems:O.createElement(Fr,{...e})},O.createElement(Cr,{value:e.resource}))}function jr(e){if(e.lengthComputable){const t=100*e.loaded/e.total;return`Uploaded: ${Kr(e.loaded)} / ${Kr(e.total)} ${t.toFixed(2)}%`}return`Uploaded: ${Kr(e.loaded)}`}function Kr(e){if(0==e)return"0.00 B";const t=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,t)).toFixed(2)+" "+" KMGTP".charAt(t)+"B"}function Qr(e){return O.createElement(Lr,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${k(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${k(e)}&_sort=-_lastUpdated`}}]})})}function Hr(e){return O.createElement(Lr,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${k(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${k(e)}`}},{request:{method:"GET",url:`Media?encounter=${k(e)}`}}]}),createCommunication:(e,n,r)=>({resourceType:"Communication",status:"completed",encounter:t(e),subject:e.subject,sender:t(n),sent:(new Date).toISOString(),payload:[{contentString:r}]}),createMedia:(e,n,r)=>({resourceType:"Media",status:"completed",encounter:t(e),subject:e.subject,operator:t(n),issued:(new Date).toISOString(),content:r})})}function Br(e){let t;try{t=w(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 O.createElement(vn,{value:t[0]||"",propertyType:e.propertyType})}const Gr={string:[S.EQUALS,S.NOT,S.CONTAINS,S.EXACT],fulltext:[S.EQUALS,S.NOT,S.CONTAINS,S.EXACT],token:[S.EQUALS,S.NOT],reference:[S.EQUALS,S.NOT],numeric:[S.EQUALS,S.NOT_EQUALS,S.GREATER_THAN,S.LESS_THAN,S.GREATER_THAN_OR_EQUALS,S.LESS_THAN_OR_EQUALS],quantity:[S.EQUALS,S.NOT_EQUALS,S.GREATER_THAN,S.LESS_THAN,S.GREATER_THAN_OR_EQUALS,S.LESS_THAN_OR_EQUALS],date:[S.EQUALS,S.NOT_EQUALS,S.GREATER_THAN,S.LESS_THAN,S.GREATER_THAN_OR_EQUALS,S.LESS_THAN_OR_EQUALS,S.STARTS_AFTER,S.ENDS_BEFORE,S.APPROXIMATELY],datetime:[S.EQUALS,S.NOT_EQUALS,S.GREATER_THAN,S.LESS_THAN,S.GREATER_THAN_OR_EQUALS,S.LESS_THAN_OR_EQUALS,S.STARTS_AFTER,S.ENDS_BEFORE,S.APPROXIMATELY]},Jr={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 Yr(e,t){return{...e,filters:t,offset:0,name:void 0}}function Xr(e){return Yr(e,[])}function Zr(e,t){return Yr(e,(e.filters||[]).filter((e=>e.code!==t)))}function ea(e,t,n,r,a){a&&(e=Zr(e,t));const l=[];return e.filters&&l.push(...e.filters),l.push({code:t,operator:n,value:r||""}),Yr(e,l)}function ta(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),{...e,fields:n,name:void 0}}function na(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),{...e,filters:n,name:void 0}}function ra(e,t){return oa(e,t,-1)}function aa(e,t){return oa(e,t,0)}function la(e,t){return oa(e,t,1)}function oa(e,t,n){const r=new Date;r.setDate(r.getDate()+n),r.setHours(0,0,0,0);const a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),da(e,t,r,a)}function ca(e,t){return sa(e,t,-1)}function ia(e,t){return sa(e,t,0)}function ua(e,t){return sa(e,t,1)}function sa(e,t,n){const r=new Date;r.setMonth(r.getMonth()+n),r.setDate(1),r.setHours(0,0,0,0);const a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),da(e,t,r,a)}function ma(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return da(e,t,n,new Date)}function da(e,t,n,r){return e=pa(e=Zr(e,t),t,S.GREATER_THAN_OR_EQUALS,n),e=pa(e,t,S.LESS_THAN_OR_EQUALS,r)}function pa(e,t,n,r){return ea(e,t,n,r.toISOString())}function ha(e,t,n=!0){return ea(e,t,S.MISSING,n.toString())}function fa(e,t){return e.offset===t?e:{...e,offset:t,name:void 0}}function ga(e,t){return fa(e,(t-1)*(e.count??A))}function Ea(e,t,n){return t===va(e)&&void 0!==n&&n===Ca(e)?e:{...e,sortRules:[{code:t,descending:!!n}],name:void 0}}function ya(e,t){let n=!1;return va(e)===t&&(n=!Ca(e)),Ea(e,t,n)}function va(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Ca(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function ba(e){return Gr[e.type]}function xa(e){return Jr[e]??""}function Ta(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(y).join(" "))}function ka(e,t){const n=t.name;return"id"===n?e.id:"meta.versionId"===n?e.meta?.versionId:"_lastUpdated"===n?h(e.meta?.lastUpdated):t.elementDefinition&&`${e.resourceType}.${t.name}`===t.elementDefinition.path?function(e,t){const n=t.path?.split(".")?.pop()?.replaceAll("[x]","")||"",[r,a]=Cn({type:e.resourceType,value:e},n);if(!r)return null;return O.createElement(vn,{property:t,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,t.elementDefinition):t.searchParams&&1===t.searchParams.length&&t.name===t.searchParams[0].code?function(e,t,n){const r=D(t.expression,[{type:e.resourceType,value:e}]);if(!r||0===r.length)return null;if(n)return O.createElement(vn,{propertyType:r[0].type,value:r[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return O.createElement(O.Fragment,null,r.map(((e,t)=>O.createElement("span",{key:`${t}-${r.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t.searchParams[0],t.elementDefinition):null}function wa(e){const[t,n]=z({search:JSON.parse(u(e.search))}),r=L(null),a=L(null);function l(){const e=t.search.fields??[],a=r.current?.value;if(a){const r=[...e,a];n({search:{...t.search,fields:r}})}}function o(){const e=t.search.fields??[],r=a.current?.value;if(r){const a=[...e];a.splice(a.indexOf(r),1),n({search:{...t.search,fields:a}})}}function c(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}if(M((()=>{n({search:e.search})}),[e.search]),!e.visible)return null;const i=e.search.resourceType,s=g.types[i],m=t.search.fields??[],d=function(e){const t=[],n=new Set,r=new Set;for(const a of Object.keys(e.properties))t.push(a),n.add(a.toLowerCase()),r.add(Ta(a));if(e.searchParams)for(const a of Object.keys(e.searchParams)){const e=Ta(a);n.has(a)||r.has(e)||(t.push(a),n.add(a),r.add(Ta(a)))}return t}(s).filter((e=>!m?.includes(e))).sort();return O.createElement(fe,{title:"Fields",closeButtonLabel:"Close",opened:e.visible,onClose:e.onCancel},O.createElement("div",null,O.createElement("table",{style:{margin:"auto"}},O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",{colSpan:2,align:"center"},"Available"),O.createElement("th",{colSpan:2,align:"center"},"Selected"))),O.createElement("tbody",null,O.createElement("tr",null,O.createElement("td",{colSpan:2,align:"center"},O.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&l()}(e),onDoubleClick:()=>{l()},"data-testid":"available"},d.map((e=>O.createElement("option",{key:e,value:e},Ta(e)))))),O.createElement("td",{colSpan:2,align:"center"},O.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&o()}(e),onDoubleClick:()=>{o()},"data-testid":"selected"},m.map((e=>O.createElement("option",{key:e,value:e},Ta(e)))))))),O.createElement("tfoot",null,O.createElement("tr",null,O.createElement("td",{align:"center"},O.createElement(Y,{compact:!0,variant:"outline",onClick:l},"Add")),O.createElement("td",{align:"center"},O.createElement(Y,{compact:!0,variant:"outline",onClick:o},"Remove")),O.createElement("td",{align:"center"},O.createElement(Y,{compact:!0,variant:"outline",onClick:function(){const e=t.search.fields??[],r=a.current?.value;if(r){const a=[...e],l=a.indexOf(r);c(a,l,l-1),n({search:{...t.search,fields:a}})}}},"Up")),O.createElement("td",{align:"center"},O.createElement(Y,{compact:!0,variant:"outline",onClick:function(){const e=t.search.fields??[],r=a.current?.value;if(r){const a=[...e],l=a.indexOf(r);c(a,l,l+1),n({search:{...t.search,fields:a}})}}},"Down")))))),O.createElement(Y,{onClick:()=>e.onOk(t.search)},"OK"))}function Sa(e){const{resourceType:t,filter:n}=e,r=g.types[t]?.searchParams?.[n.code];if(r){if("reference"===r.type)return O.createElement(fr,{value:{reference:n.value}});const e=V(t,r);if("_lastUpdated"===n.code||e.type===I.DATETIME)return O.createElement(O.Fragment,null,h(n.value))}return O.createElement(O.Fragment,null,n.value)}function Aa(e){const t="filter-value";switch(V(e.resourceType,e.searchParam).type){case I.REFERENCE:return O.createElement(er,{name:t,defaultValue:{reference:e.defaultValue},targetTypes:e.searchParam?.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case I.BOOLEAN:return O.createElement(ue,{name:t,"data-testid":t,defaultChecked:"true"===e.defaultValue,onChange:t=>e.onChange(t.currentTarget.checked.toString())});case I.DATE:return O.createElement(Q,{type:"date",name:t,"data-testid":t,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case I.DATETIME:return O.createElement(Ln,{name:t,defaultValue:e.defaultValue,onChange:e.onChange});case I.NUMBER:return O.createElement(Q,{type:"number",name:t,"data-testid":t,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case I.QUANTITY:return O.createElement(Qn,{name:t,defaultValue:Da(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return O.createElement(Q,{name:t,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:t=>e.onChange(t.currentTarget.value),placeholder:"Search value"})}}function Da(e){if(e){const[t,n,r]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:r}}}function Va(e){const[t,n]=z(JSON.parse(u(e.search))),[r,a]=z(-1),l=L(t);if(l.current=t,M((()=>{n(JSON.parse(u(e.search)))}),[e.search]),!e.visible)return null;const o=e.search.resourceType,c=g.types[o].searchParams,i=t.filters||[];return O.createElement(fe,{title:"Filters",closeButtonLabel:"Close",size:900,opened:e.visible,onClose:e.onCancel},O.createElement("div",null,O.createElement("table",null,O.createElement("colgroup",null,O.createElement("col",{style:{width:200}}),O.createElement("col",{style:{width:200}}),O.createElement("col",{style:{width:380}}),O.createElement("col",{style:{width:120}})),O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",null,"Field"),O.createElement("th",null,"Operation"),O.createElement("th",null,"Value"),O.createElement("th",null,"Actions"))),O.createElement("tbody",null,i.map(((e,t)=>t===r?O.createElement(Ra,{key:`filter-${t}-${i.length}-input`,resourceType:o,searchParams:c,defaultValue:e,okText:"Save",onOk:e=>{const r=[...i];r[t]=e,n(Yr(l.current,r)),a(-1)},onCancel:()=>a(-1)}):O.createElement(Ia,{key:`filter-${t}-${i.length}-display`,resourceType:o,searchParams:c,filter:e,onEdit:()=>a(t),onDelete:()=>n(na(l.current,t))}))),O.createElement(Ra,{resourceType:o,searchParams:c,okText:"Add",onOk:function(e){n(ea(l.current,e.code,e.operator,e.value))}})))),O.createElement(j,{position:"right",mt:"xl"},O.createElement(Y,{onClick:()=>e.onOk(l.current)},"OK")))}function Ia(e){const{filter:t}=e;return O.createElement("tr",null,O.createElement("td",null,Ta(t.code)),O.createElement("td",null,xa(t.operator)),O.createElement("td",null,O.createElement(Sa,{resourceType:e.resourceType,filter:t})),O.createElement("td",null,O.createElement(Y,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),O.createElement(Y,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Ra(e){const[t,n]=z(e.defaultValue??{}),r=L(t);r.current=t;const a=e.searchParams[t.code],l=a&&ba(a);return O.createElement("tr",null,O.createElement("td",null,O.createElement(K,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:e=>{return t=e.currentTarget.value,void n({...r.current,code:t});var t},data:Object.keys(e.searchParams).map((e=>({value:e,label:Ta(e)})))})),O.createElement("td",null,l&&O.createElement(K,{"data-testid":"filter-operation",defaultValue:t.operator,onChange:e=>{return t=e.currentTarget.value,void n({...r.current,operator:t});var t},data:["",...l.map((e=>({value:e,label:xa(e)})))]})),O.createElement("td",null,a&&t.operator&&O.createElement(Aa,{resourceType:e.resourceType,searchParam:a,defaultValue:t.value,onChange:function(e){n({...r.current,value:e})}})),O.createElement("td",null,t.code&&t.operator&&t.value&&O.createElement(Y,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),n({})}},e.okText),e.onCancel&&O.createElement(Y,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}function Na(e){const[t,n]=z(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:t})}return O.createElement(fe,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},O.createElement("div",{style:{width:500}},O.createElement(Lt,{onSubmit:r},O.createElement(Aa,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:t,autoFocus:!0,onChange:n}))),O.createElement(Y,{onClick:r},"OK"))}function Pa(e){if(!e.searchParams)return null;function t(t){e.onChange(t)}return 1===e.searchParams.length?O.createElement($a,{search:e.search,searchParam:e.searchParams[0],onSort:function(n,r){t(Ea(e.search,n.code,r))},onPrompt:function(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})},onChange:t,onClear:function(n){t(Zr(e.search,n.code))}}):O.createElement(ye.Dropdown,null,e.searchParams.map((e=>O.createElement(ye.Item,{key:e.code},Ta(e.code)))))}function $a(e){switch(e.searchParam.type){case"date":return O.createElement(Oa,{...e});case"number":case"quantity":return O.createElement(za,{...e});case"reference":return O.createElement(La,{...e});case"string":case"token":case"uri":return O.createElement(Fa,{...e});default:return O.createElement(O.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Oa(e){const{searchParam:t}=e,n=t.code;return O.createElement(ye.Dropdown,null,O.createElement(ye.Item,{icon:O.createElement(Fe,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Oldest to Newest"),O.createElement(ye.Item,{icon:O.createElement(Me,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Newest to Oldest"),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ue,{size:14}),onClick:()=>e.onPrompt(t,S.EQUALS)},"Equals..."),O.createElement(ye.Item,{icon:O.createElement(_e,{size:14}),onClick:()=>e.onPrompt(t,S.NOT_EQUALS)},"Does not equal..."),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(qe,{size:14}),onClick:()=>e.onPrompt(t,S.ENDS_BEFORE)},"Before..."),O.createElement(ye.Item,{icon:O.createElement(We,{size:14}),onClick:()=>e.onPrompt(t,S.STARTS_AFTER)},"After..."),O.createElement(ye.Item,{icon:O.createElement(je,{size:14}),onClick:()=>e.onPrompt(t,S.EQUALS)},"Between..."),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ke,{size:14}),onClick:()=>e.onChange(la(e.search,n))},"Tomorrow"),O.createElement(ye.Item,{icon:O.createElement(Ke,{size:14}),onClick:()=>e.onChange(aa(e.search,n))},"Today"),O.createElement(ye.Item,{icon:O.createElement(Ke,{size:14}),onClick:()=>e.onChange(ra(e.search,n))},"Yesterday"),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ke,{size:14}),onClick:()=>e.onChange(ua(e.search,n))},"Next Month"),O.createElement(ye.Item,{icon:O.createElement(Ke,{size:14}),onClick:()=>e.onChange(ia(e.search,n))},"This Month"),O.createElement(ye.Item,{icon:O.createElement(Ke,{size:14}),onClick:()=>e.onChange(ca(e.search,n))},"Last Month"),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ke,{size:14}),onClick:()=>e.onChange(ma(e.search,n))},"Year to date"),O.createElement(Ma,{...e}))}function za(e){const{searchParam:t}=e;return O.createElement(ye.Dropdown,null,O.createElement(ye.Item,{icon:O.createElement(Fe,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort Smallest to Largest"),O.createElement(ye.Item,{icon:O.createElement(Me,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Largest to Smallest"),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ue,{size:14}),onClick:()=>e.onPrompt(t,S.EQUALS)},"Equals..."),O.createElement(ye.Item,{icon:O.createElement(_e,{size:14}),onClick:()=>e.onPrompt(t,S.NOT_EQUALS)},"Does not equal..."),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(We,{size:14}),onClick:()=>e.onPrompt(t,S.GREATER_THAN)},"Greater than..."),O.createElement(ye.Item,{icon:O.createElement(Qe,{size:14}),onClick:()=>e.onPrompt(t,S.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),O.createElement(ye.Item,{icon:O.createElement(qe,{size:14}),onClick:()=>e.onPrompt(t,S.LESS_THAN)},"Less than..."),O.createElement(ye.Item,{icon:O.createElement(Qe,{size:14}),onClick:()=>e.onPrompt(t,S.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),O.createElement(Ma,{...e}))}function La(e){const{searchParam:t}=e;return O.createElement(ye.Dropdown,null,O.createElement(ye.Item,{icon:O.createElement(Ue,{size:14}),onClick:()=>e.onPrompt(t,S.EQUALS)},"Equals..."),O.createElement(ye.Item,{icon:O.createElement(_e,{size:14}),onClick:()=>e.onPrompt(t,S.NOT)},"Does not equal..."),O.createElement(Ma,{...e}))}function Fa(e){const{searchParam:t}=e;return O.createElement(ye.Dropdown,null,O.createElement(ye.Item,{icon:O.createElement(Fe,{size:14}),onClick:()=>e.onSort(t,!1)},"Sort A to Z"),O.createElement(ye.Item,{icon:O.createElement(Me,{size:14}),onClick:()=>e.onSort(t,!0)},"Sort Z to A"),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ue,{size:14}),onClick:()=>e.onPrompt(t,S.EQUALS)},"Equals..."),O.createElement(ye.Item,{icon:O.createElement(_e,{size:14}),onClick:()=>e.onPrompt(t,S.NOT)},"Does not equal..."),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(He,{size:14}),onClick:()=>e.onPrompt(t,S.CONTAINS)},"Contains..."),O.createElement(ye.Item,{icon:O.createElement(Be,{size:14}),onClick:()=>e.onPrompt(t,S.EQUALS)},"Does not contain..."),O.createElement(Ma,{...e}))}function Ma(e){const{searchParam:t}=e,n=t.code;return O.createElement(O.Fragment,null,O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ge,{size:14}),onClick:()=>e.onChange(ha(e.search,n))},"Missing"),O.createElement(ye.Item,{icon:O.createElement(Je,{size:14}),onClick:()=>e.onChange(ha(e.search,n,!1))},"Not missing"),O.createElement(ye.Divider,null),O.createElement(ye.Item,{icon:O.createElement(Ye,{size:14}),onClick:()=>e.onClear(t)},"Clear filters"))}function Ua(e,t){if("_lastUpdated"===t)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===t)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const n=g.types[e],r=n.properties[t],a=n.searchParams?.[t.toLowerCase()];if(r&&a)return{name:t,elementDefinition:r,searchParams:[a]};if(r){let a;if(n.searchParams){const r=`${e}.${t.replaceAll("[x]","")}`;a=Object.values(n.searchParams).filter((e=>e.expression?.includes(r))),0===a.length&&(a=void 0)}return{name:t,elementDefinition:r,searchParams:a}}if(a){return{name:t,elementDefinition:V(e,a).elementDefinition,searchParams:[a]}}return{name:t}}class _a extends Event{constructor(e){super("change"),this.definition=e}}class qa extends Event{constructor(e){super("load"),this.response=e}}class Wa extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}const ja=X((e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:"dark"===e.colorScheme?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs}px ${e.spacing.md}px`,"&:hover":{backgroundColor:"dark"===e.colorScheme?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}})));function Ka(e){const{classes:t}=ja(),n=gt(),[r,a]=z(!1),[l,o]=z(),{search:c,onLoad:i}=e,[u,s]=z({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),m=L(u);function d(t){e.onChange&&e.onChange(new _a(t))}function p(t,n){Ct(t.target)||2!==t.button&&(vt(t),1!==t.button&&e.onClick&&e.onClick(new Wa(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Wa(n,t)))}m.current=u,M((()=>{o(void 0),n.search(c.resourceType,R({...c,total:"accurate",fields:void 0})).then((e=>{s({...m.current,searchResponse:e}),i&&i(new qa(e))})).catch((e=>{s({...m.current,searchResponse:void 0}),o(e)}))}),[n,c,i]),M((()=>{a(!1),n.requestSchema(e.search.resourceType).then((()=>a(!0))).catch(console.log)}),[n,e.search.resourceType]);if(!(r&&g?.types?.[e.search.resourceType]))return O.createElement(ne,{style:{width:"100%",height:"100%"}},O.createElement(B,null));const h=e.checkboxesEnabled,f=function(e){const t=e.resourceType,n=[];for(const r of e.fields||["id","_lastUpdated"])n.push(Ua(t,r));return n}(c),E=c.resourceType,y=u.searchResponse,v=y?.entry,C=v?.map((e=>e.resource)),b="subtle",x="gray",T=16,k=window.innerWidth<768;return O.createElement("div",{className:t.root,"data-testid":"search-control"},!e.hideToolbar&&O.createElement(j,{position:"apart",mb:"xl"},O.createElement(j,{spacing:2},O.createElement(Y,{compact:!0,variant:b,color:x,leftIcon:O.createElement(Xe,{size:T}),onClick:()=>s({...m.current,fieldEditorVisible:!0})},"Fields"),O.createElement(Y,{compact:!0,variant:b,color:x,leftIcon:O.createElement(Ze,{size:T}),onClick:()=>s({...m.current,filterEditorVisible:!0})},"Filters"),e.onNew&&O.createElement(Y,{compact:!0,variant:b,color:x,leftIcon:O.createElement(et,{size:T}),onClick:e.onNew},"New..."),!k&&e.onExport&&O.createElement(Y,{compact:!0,variant:b,color:x,leftIcon:O.createElement(tt,{size:T}),onClick:e.onExport},"Export..."),!k&&e.onDelete&&O.createElement(Y,{compact:!0,variant:b,color:x,leftIcon:O.createElement(Le,{size:T}),onClick:()=>e.onDelete(Object.keys(u.selected))},"Delete..."),!k&&e.onBulk&&O.createElement(Y,{compact:!0,variant:b,color:x,leftIcon:O.createElement(nt,{size:T}),onClick:()=>e.onBulk(Object.keys(u.selected))},"Bulk...")),y&&O.createElement(le,{size:"xs",color:"dimmed"},function(e,t){return Math.min(t,(e.offset??0)+1)}(c,y.total),"-",function(e,t){return Math.min(t,((e.offset??0)+1)*(e.count??A))}(c,y.total)," of"," ",y.total?.toLocaleString())),O.createElement(Ce,{className:t.table},O.createElement("thead",null,O.createElement("tr",null,h&&O.createElement("th",null,O.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){const e=m.current;if(!e.searchResponse?.entry||0===e.searchResponse.entry.length)return!1;for(const t of e.searchResponse.entry)if(t.resource?.id&&!e.selected[t.resource.id])return!1;return!0}(),onChange:e=>function(e){e.stopPropagation();const t=e.target.checked,n={},r=m.current?.searchResponse;t&&r?.entry&&r.entry.forEach((e=>{e.resource?.id&&(n[e.resource.id]=!0)})),s({...m.current,selected:n})}(e)})),f.map((n=>O.createElement("th",{key:n.name},O.createElement(ye,{shadow:"md",width:240,position:"bottom-end"},O.createElement(ye.Target,null,O.createElement(se,{className:t.control},O.createElement(j,{position:"apart",noWrap:!0},O.createElement(le,{weight:500,size:"sm"},Ta(n.name)),O.createElement(ne,{className:t.icon},O.createElement(rt,{size:14,stroke:1.5}))))),O.createElement(Pa,{search:e.search,searchParams:n.searchParams,onPrompt:(e,t)=>{s({...m.current,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t})},onChange:e=>{d(e)}})))))),!e.hideFilters&&O.createElement("tr",null,h&&O.createElement("th",null),f.map((t=>O.createElement("th",{key:t.name},t.searchParams&&O.createElement(Ha,{resourceType:E,searchParams:t.searchParams,filters:e.search.filters})))))),O.createElement("tbody",null,C?.map((e=>e&&O.createElement("tr",{key:e.id,className:t.tr,"data-testid":"search-control-row",onClick:t=>p(t,e),onAuxClick:t=>p(t,e)},h&&O.createElement("td",null,O.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!u.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,r={...m.current.selected};n?r[t]=!0:delete r[t],s({...m.current,selected:r})}(t,e.id)})),f.map((t=>O.createElement("td",{key:t.name},ka(e,t))))))))),0===C?.length&&O.createElement(Vt,null,O.createElement(ne,null,O.createElement(le,{size:"xl",color:"dimmed"},"No results"))),void 0!==y?.total&&y.total>0&&O.createElement(ne,{m:"md",p:"md"},O.createElement(be,{page:Ba(c),total:Ga(c,y.total),onChange:e=>d(ga(c,e)),getItemAriaLabel:e=>{switch(e){case"prev":return"Previous page";case"next":return"Next page";default:return}}})),l&&O.createElement("div",{"data-testid":"search-error"},O.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(l,void 0,2))),O.createElement(wa,{search:e.search,visible:m.current.fieldEditorVisible,onOk:e=>{d(e),s({...m.current,fieldEditorVisible:!1})},onCancel:()=>{s({...m.current,fieldEditorVisible:!1})}}),O.createElement(Va,{search:e.search,visible:m.current.filterEditorVisible,onOk:e=>{d(e),s({...m.current,filterEditorVisible:!1})},onCancel:()=>{s({...m.current,filterEditorVisible:!1})}}),O.createElement(Na,{key:u.filterDialogSearchParam?.code,visible:m.current.filterDialogVisible,title:"Input",resourceType:E,searchParam:u.filterDialogSearchParam,filter:u.filterDialogFilter,defaultValue:"",onOk:t=>{d(ea(e.search,t.code,t.operator,t.value)),s({...m.current,filterDialogVisible:!1})},onCancel:()=>{s({...m.current,filterDialogVisible:!1})}}))}const Qa=O.memo(Ka);function Ha(e){const t=(e.filters??[]).filter((t=>e.searchParams.find((e=>e.code===t.code))));return 0===t.length?O.createElement("span",null,"no filters"):O.createElement(O.Fragment,null,t.map(((n,r)=>O.createElement("div",{key:`filter-${r}-${t.length}`},xa(n.operator)," ",O.createElement(Sa,{resourceType:e.resourceType,filter:n})))))}function Ba(e){return Math.floor((e.offset||0)/(e.count||A))+1}function Ga(e,t){const n=e.count||A;return Math.ceil(t/n)}function Ja(e){const t=gt(),[n,r]=z(),[a,l]=z(),{query:o,fields:c}=e,[i,u]=z(),[s,m]=z({}),d=L();d.current=i;const p=L({});function h(t,n){Ct(t.target)||(vt(t),1!==t.button&&e.onClick&&e.onClick(new Wa(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Wa(n,t)))}p.current=s,M((()=>{l(void 0),t.graphql(o).then(u).catch(l)}),[t,o]),M((()=>{t.requestSchema(e.resourceType).then((e=>{r({...e})})).catch(console.log)}),[t,e.resourceType]);const f=n?.types?.[e.resourceType];if(!f)return O.createElement(B,null);const g=e.checkboxesEnabled;return O.createElement("div",{onContextMenu:e=>vt(e),"data-testid":"search-control"},O.createElement(Ce,null,O.createElement("thead",null,O.createElement("tr",null,g&&O.createElement("th",null,O.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){const e=d.current?.data?.ResourceList;if(!e||0===e.length)return!1;for(const t of e)if(t?.id&&!p.current[t.id])return!1;return!0}(),onChange:e=>function(e){e.stopPropagation();const t=e.target.checked,n={},r=d.current?.data?.ResourceList;t&&r&&r.forEach((e=>{e?.id&&(n[e.id]=!0)})),m(n)}(e)})),c.map((e=>O.createElement("th",{key:e.name},e.name))))),O.createElement("tbody",null,i?.data?.ResourceList?.map((e=>e&&O.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>h(t,e),onAuxClick:t=>h(t,e)},g&&O.createElement("td",null,O.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!s[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,r={...p.current};n?r[t]=!0:delete r[t],m(r)}(t,e.id)})),c.map((t=>O.createElement("td",{key:t.name},O.createElement(Br,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===i?.data?.ResourceList?.length&&O.createElement("div",{"data-testid":"empty-search"},"No results"),a&&O.createElement("div",{"data-testid":"search-error"},O.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&O.createElement(Y,{onClick:()=>e.onBulk(Object.keys(p.current))},"Bulk..."))}const Ya=O.memo(Ja),Xa=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function Za(e){return O.createElement(Lr,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Xa.map((t=>({request:{method:"GET",url:t.replaceAll("$",k(e))}})))}),createCommunication:(e,n,r)=>({resourceType:"Communication",status:"completed",subject:t(e),sender:t(n),sent:(new Date).toISOString(),payload:[{contentString:r}]}),createMedia:(e,n,r)=>({resourceType:"Media",status:"completed",subject:t(e),operator:t(n),issued:(new Date).toISOString(),content:r})})}const el=X((e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}})));function tl(e){const t=gt(),n=wn(e.value),[r,a]=z(void 0),[l,o]=z(),[c,i]=z(),[u,s]=z();function m(){i(void 0)}function d(){o(void 0)}const p=L();if(p.current=u,M((()=>{t.requestSchema("PlanDefinition").then(a).catch(console.log)}),[t]),M((()=>{var e;return s((e=n??{resourceType:"PlanDefinition"},{...e,action:dl(e.action)})),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),!r||!u)return null;function h(e,t){s({...p.current,[e]:t})}return O.createElement("div",null,O.createElement(Lt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(u)},O.createElement(Q,{label:"Plan Title",defaultValue:u.title,onChange:e=>h("title",e.currentTarget.value)}),O.createElement(nl,{actions:u.action||[],selectedKey:l,setSelectedKey:o,hoverKey:c,setHoverKey:i,onChange:e=>h("action",e)}),O.createElement(Y,{type:"submit"},"Save")))}function nl(e){const{classes:t}=el(),n=L();function r(t){e.onChange(n.current.map((e=>e.id===t.id?t:e)))}return n.current=e.actions,O.createElement("div",{className:t.section},e.actions.map((t=>O.createElement("div",{key:t.id},O.createElement(rl,{action:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>{return r=t,void e.onChange(n.current.filter((e=>e!==r)));var r}})))),O.createElement("div",{className:t.bottomActions},O.createElement(G,{href:"#",onClick:t=>{var r;vt(t),r={id:ml()},e.onChange([...n.current,r]),e.setSelectedKey(r.id)}},"Add action")))}function rl(e){const{classes:t,cx:n}=el(),{action:r}=e,a=function(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task";return}(r),l=e.selectedKey===e.action.id,o=e.hoverKey===e.action.id;const c=n(t.section,{[t.editing]:l,[t.hovering]:o&&!l});return O.createElement("div",{"data-testid":r.id,className:c,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){vt(t),e.setHoverKey(e.action.id)}},l?O.createElement(ol,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):O.createElement(ll,{action:r,actionType:a}),O.createElement("div",{className:t.bottomActions},O.createElement(G,{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const al={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function ll(e){const{action:t,actionType:n}=e,[r,a]=ul(t);return O.createElement("div",null,O.createElement("div",null,t.title||"Untitled"," ",n&&`(${n})`),t.definitionCanonical&&O.createElement("div",null,O.createElement(En,{value:{reference:t.definitionCanonical}})),r&&O.createElement("div",null,O.createElement(vn,{property:al,propertyType:a,value:r})))}function ol(e){const{action:t}=e,[n,r]=z(e.actionType);function a(n,r){e.onChange({...t,[n]:r})}return O.createElement(ae,{spacing:"xl"},O.createElement(Q,{name:`actionTitle-${t.id}`,label:"Title",defaultValue:t.title,onChange:e=>a("title",e.currentTarget.value)}),O.createElement(Q,{name:`actionDescription-${t.id}`,label:"Description",defaultValue:t.description,onChange:e=>a("description",e.currentTarget.value)}),O.createElement(K,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${t.id}`,defaultValue:n,onChange:e=>r(e.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),t.action&&t.action.length>0&&O.createElement(nl,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>a("action",e)}),(()=>{switch(n){case"appointment":return O.createElement(cl,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return O.createElement(cl,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return O.createElement(cl,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return O.createElement(cl,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),O.createElement(Tn,{title:"Timing",description:"When the action should take place."},O.createElement(il,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function cl(e){const{id:t,definitionCanonical:n}=e.action,r=n?.startsWith(e.resourceType+"/")?{reference:n}:void 0;return O.createElement(Xn,{name:t,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:t=>{t?e.onChange({...e.action,definitionCanonical:k(t)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function il(e){const t=e.action,n="timing",[r,a]=ul(t);return O.createElement(lr,{property:al,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(r,a)=>{e.onChange(An(t,n,a??n,al,r))}})}function ul(e){return Cn({type:"PlanDefinitionAction",value:e},"timing")}let sl=1;function ml(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(sl=Math.max(sl,t+1))}return e}return"id-"+sl++}function dl(e){if(e)return e.map((e=>({...e,id:ml(e.id),action:dl(e.action)})))}var pl;function hl(e){return"choice"===e.type||"open-choice"===e.type}function fl(e){const n=gt(),r=n.getProfile(),[a,l]=z(),o=wn(e.questionnaire),[c,i]=z(),[u,s]=z({});return M((()=>{n.requestSchema("Questionnaire").then((()=>n.requestSchema("QuestionnaireResponse"))).then(l).catch(console.log)}),[n]),M((()=>{i(o?function(e){const t={resourceType:"QuestionnaireResponse",questionnaire:k(e),item:bl(e.item)};return t}(o):void 0)}),[o]),a&&o?O.createElement(Lt,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&c&&e.onSubmit({...c,questionnaire:k(o),subject:e.subject,source:t(r),authored:(new Date).toISOString()})}},o.title&&O.createElement(re,null,o.title),o.item&&O.createElement(gl,{items:o.item,answers:u,onChange:function(e){const t={resourceType:"QuestionnaireResponse",status:"completed",item:e};i(t),s(P(t))}}),O.createElement(j,{position:"right",mt:"xl"},O.createElement(Y,{type:"submit"},e.submitButtonText||"OK"))):null}function gl(e){const[t,n]=z(bl(e.items));function r(r,a){const l=t.slice();l[r]=a,n(l),e.onChange(l)}return O.createElement(ae,null,e.items.map(((t,n)=>{if(!kl(t,e.answers))return null;if(t.type===pl.display)return O.createElement("p",{key:t.linkId},t.text);if(t.type===pl.group)return O.createElement(El,{key:t.linkId,item:t,answers:e.answers,onChange:e=>r(n,e)});if(t.type===pl.boolean){const e=t.initial&&t.initial.length>0?t.initial[0]:void 0;return O.createElement(xn,{key:t.linkId,title:t.text,htmlFor:t.linkId},O.createElement(ue,{id:t.linkId,name:t.linkId,defaultChecked:e?.valueBoolean,onChange:e=>r(n,{linkId:t.linkId,text:t.text,answer:[{valueBoolean:e.currentTarget.checked}]})}))}return O.createElement(Tn,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},O.createElement(El,{item:t,answers:e.answers,onChange:e=>r(n,e)}))})))}function El(e){const t=e.item,n=t.type;if(!n)return null;const r=t.linkId;if(!r)return null;const a=t.initial&&t.initial.length>0?t.initial[0]:void 0;function l(n){e.onChange({linkId:t.linkId,text:t.text,answer:[n]})}switch(n){case pl.group:return O.createElement("div",null,O.createElement("h3",null,t.text),t.item&&O.createElement(gl,{items:t.item,answers:e.answers,onChange:function(n){e.onChange({linkId:t.linkId,text:t.text,item:n})}}));case pl.boolean:return O.createElement(ue,{id:r,name:r,defaultChecked:a?.valueBoolean,onChange:e=>l({valueBoolean:e.currentTarget.checked})});case pl.decimal:return O.createElement(Q,{type:"number",step:"any",id:r,name:r,defaultValue:a?.valueDecimal,onChange:e=>l({valueDecimal:e.currentTarget.valueAsNumber})});case pl.integer:return O.createElement(Q,{type:"number",step:1,id:r,name:r,defaultValue:a?.valueInteger,onChange:e=>l({valueInteger:e.currentTarget.valueAsNumber})});case pl.date:return O.createElement(Q,{type:"date",id:r,name:r,defaultValue:a?.valueDate,onChange:e=>l({valueDate:e.currentTarget.value})});case pl.dateTime:return O.createElement(Ln,{name:r,defaultValue:a?.valueDateTime,onChange:e=>l({valueDateTime:e})});case pl.time:return O.createElement(Q,{type:"time",id:r,name:r,defaultValue:a?.valueTime,onChange:e=>l({valueTime:e.currentTarget.value})});case pl.string:case pl.url:return O.createElement(Q,{id:r,name:r,defaultValue:a?.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case pl.text:return O.createElement(ge,{id:r,name:r,defaultValue:a?.valueString,onChange:e=>l({valueString:e.currentTarget.value})});case pl.attachment:return O.createElement(At,{name:r,defaultValue:a?.valueAttachment,onChange:e=>l({valueAttachment:e})});case pl.reference:return O.createElement(er,{name:r,defaultValue:a?.valueReference,onChange:e=>l({valueReference:e})});case pl.quantity:return O.createElement(Qn,{name:r,defaultValue:a?.valueQuantity,onChange:e=>l({valueQuantity:e})});case pl.choice:case pl.openChoice:return function(e){return!!e.extension?.some((e=>"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"===e.url&&"drop-down"===e.valueCodeableConcept?.coding?.[0]?.code))}(t)?O.createElement(yl,{name:r,item:t,initial:a,onChangeAnswer:l}):O.createElement(Cl,{name:r,item:t,initial:a,onChangeAnswer:l})}return null}function yl(e){const{name:t,item:n,initial:r}=e,a=f({type:"QuestionnaireItemInitial",value:r},"value"),l=[""];if(n.answerOption)for(const e of n.answerOption){const t=f({type:"QuestionnaireItemAnswerOption",value:e},"value");l.push(vl(t))}return O.createElement(K,{id:t,name:t,onChange:t=>{const r=t.currentTarget.selectedIndex;if(0===r)return void e.onChangeAnswer({});const a=n.answerOption[r-1],l=f({type:"QuestionnaireItemAnswerOption",value:a},"value"),o="value"+y(l.type);e.onChangeAnswer({[o]:l.value})},defaultValue:vl(a),data:l})}function vl(e){if(e)return"CodeableConcept"===e.type?e.value.coding[0].display:"Coding"===e.type?e.value.display:e.value.toString()}function Cl(e){const{name:t,item:n,initial:r,onChangeAnswer:a}=e,l=g.types.QuestionnaireItemAnswerOption.properties["value[x]"],o=f({type:"QuestionnaireItemInitial",value:r},"value"),c=[];let i;if(n.answerOption)for(let e=0;e<n.answerOption.length;e++){const r=n.answerOption[e],a=`${t}-option-${e}`,l=f({type:"QuestionnaireItemAnswerOption",value:r},"value");o&&u(l)===u(o)&&(i=a),c.push([a,l])}return O.createElement(xe.Group,{name:t,orientation:"vertical",defaultValue:i,onChange:e=>{const t=c.find((t=>t[0]===e));if(t){const e=t[1],n="value"+y(e.type);a({[n]:e.value})}}},c.map((([e,t])=>O.createElement(xe,{key:e,id:e,value:e,label:O.createElement(vn,{property:l,propertyType:t.type,value:t.value})}))))}function bl(e){return e?.map(xl)??[]}function xl(e){return{linkId:e.linkId,text:e.text,item:bl(e.item),answer:e.initial?.map(Tl)??[]}}function Tl(e){return{...e}}function kl(e,t){if(!e.enableWhen)return!0;const n=e.enableBehavior||"any";for(const r of e.enableWhen){const e=f({type:"QuestionnaireItemEnableWhen",value:r},"answer[x]"),a=f({type:"QuestionnaireResponseItemAnswer",value:t[r.question]},"value[x]"),l=N(e,a);if("any"===n&&l)return!0;if("all"===n&&!l)return!1}return"any"!==n}!function(e){e.group="group",e.display="display",e.question="question",e.boolean="boolean",e.decimal="decimal",e.integer="integer",e.date="date",e.dateTime="dateTime",e.time="time",e.string="string",e.text="text",e.url="url",e.choice="choice",e.openChoice="open-choice",e.attachment="attachment",e.reference="reference",e.quantity="quantity"}(pl||(pl={}));const wl=X((e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:4,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}})));function Sl(e){const t=gt(),n=wn(e.questionnaire),[r,a]=z(),[l,o]=z(),[c,i]=z(),[u,s]=z();function m(){s(void 0)}function d(){i(void 0)}return M((()=>{t.requestSchema("Questionnaire").then(a).catch(console.log)}),[t]),M((()=>{var e;return o((e=n??{resourceType:"Questionnaire"},{...e,id:e.id||Nl(),item:Pl(e.item)})),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),r&&l?O.createElement("div",null,O.createElement(Lt,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(l)},O.createElement(Al,{item:l,selectedKey:c,setSelectedKey:i,hoverKey:u,setHoverKey:s,onChange:o}),O.createElement(Y,{type:"submit"},"Save"))):null}function Al(e){const{classes:t,cx:n}=wl(),r=e.item,a=e.item,l="resourceType"in e.item,o=l||a.type===pl.group,c=a.linkId??"[untitled]",i=e.selectedKey===e.item.id,u=e.hoverKey===e.item.id,s=L();function m(t){const n=s.current;e.onChange({...n,item:n.item?.map((e=>e.id===t.id?t:e))})}function d(t){e.onChange({...e.item,item:[...e.item?.item??[],t]})}function p(t,n){e.onChange({...s.current,[t]:n})}s.current=e.item;const h=n(t.section,{[t.editing]:i,[t.hovering]:u&&!i});return O.createElement("div",{"data-testid":a.linkId,className:h,onClick:function(t){vt(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){vt(t),e.setHoverKey(e.item.id)}},O.createElement("div",{className:t.questionBody},i?O.createElement(O.Fragment,null,l&&O.createElement(Q,{size:"xl",defaultValue:r.title,onChange:e=>p("title",e.currentTarget.value)}),!l&&O.createElement(ge,{autosize:!0,minRows:2,defaultValue:a.text,onChange:e=>p("text",e.currentTarget.value)}),hl(a)&&O.createElement(Dl,{options:a.answerOption,onChange:e=>p("answerOption",e)})):O.createElement(O.Fragment,null,r.title&&O.createElement(re,null,r.title),a.text&&O.createElement("div",null,a.text),!o&&O.createElement(El,{item:a,answers:{},onChange:()=>{}}))),a.item&&a.item.map((t=>O.createElement("div",{key:t.id},O.createElement(Al,{item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:m,onRemove:()=>{return n=t,void e.onChange({...e.item,item:e.item?.item?.filter((e=>e!==n))});var n}})))),!o&&O.createElement("div",{className:t.topActions},i?O.createElement(O.Fragment,null,O.createElement(Q,{size:"xs",className:t.linkIdInput,defaultValue:a.linkId,onChange:e=>p("linkId",e.currentTarget.value)}),!o&&O.createElement(K,{size:"xs",className:t.typeSelect,defaultValue:a.type,onChange:e=>p("type",e.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):O.createElement("div",null,c)),O.createElement("div",{className:t.bottomActions},o&&O.createElement(O.Fragment,null,O.createElement(G,{href:"#",onClick:e=>{e.preventDefault(),d({id:Nl(),linkId:Rl("q"),type:"string",text:"Question"})}},"Add item"),O.createElement(G,{href:"#",onClick:e=>{e.preventDefault(),d({id:Nl(),linkId:Rl("g"),type:"group",text:"Group"})}},"Add group")),i&&!l&&O.createElement(G,{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function Dl(e){const t=g.types.QuestionnaireItemAnswerOption.properties["value[x]"],n=e.options??[];return O.createElement("div",null,n.map((r=>{const[a,l]=Cn({type:"QuestionnaireItemAnswerOption",value:r},"value");return O.createElement("div",{key:r.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},O.createElement("div",null,O.createElement(lr,{key:r.id,name:"value[x]",property:t,defaultPropertyType:l,defaultValue:a,onChange:(t,a)=>{const l=[...n],o=l.findIndex((e=>e.id===r.id));l[o]={id:r.id,[a]:t},e.onChange(l)}})),O.createElement("div",null,O.createElement(G,{href:"#",onClick:t=>{vt(t),e.onChange(n.filter((e=>e.id!==r.id)))}},"Remove")))})),O.createElement(G,{href:"#",onClick:t=>{vt(t),e.onChange([...n,{id:Nl()}])}},"Add choice"))}let Vl=1,Il=1;function Rl(e){return e+Vl++}function Nl(){return"id-"+Il++}function Pl(e){if(e)return e.forEach((e=>{e.id?.match(/^id-\d+$/)&&(Il=Math.max(Il,parseInt(e.id.substring(3))+1)),e.linkId?.match(/^q\d+$/)&&(Vl=Math.max(Vl,parseInt(e.linkId.substring(1))+1))})),e.map((e=>({...e,id:e.id||Nl(),item:Pl(e.item),answerOption:$l(e.answerOption)})))}function $l(e){if(e)return e.map((e=>({...e,id:e.id||Nl()})))}const Ol=X((e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}}))),zl=["gender","age","gestationalAge","context","appliesTo"],Ll={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function Fl(e){const t=(e=Object.assign(Ll,e)).definition,[n,r]=z([]),[a,l]=z(1),[o,c]=z(1);return M((()=>{const e=function(e,t){const n=e.qualifiedInterval||[];let r=Math.max(...n.map((e=>{const t=parseInt(e.id?.substring(3)||"");return isNaN(t)?Number.NEGATIVE_INFINITY:t})))+1;Number.isFinite(r)||(r=1);return e={...e,qualifiedInterval:n.map((e=>({...e,id:e.id||"id-"+r++})))},t(r),e}(t,c);r(function(e,t){let n=1;const r={};for(const t of e){const e=_l(t);e in r||(r[e]={id:"group-id-"+n++,filters:Object.fromEntries(zl.map((e=>[e,t[e]]))),intervals:[]}),r[e].intervals.push(t)}return t(n),Object.values(r)}(e.qualifiedInterval||[],l))}),[t]),O.createElement(Lt,{testid:"reference-range-editor",onSubmit:function(){const r=n.flatMap((e=>e.intervals)).filter((e=>!function(e){return void 0===e.range?.low?.value&&void 0===e.range?.high?.value}(e)));e.onSubmit({...t,qualifiedInterval:r})}},O.createElement(ae,null,n.map((e=>{return O.createElement(Ml,{unit:(n=t.quantitativeDetails?.unit,n&&($(n,"http://unitsofmeasure.org")||n.text)),onChange:u,onAdd:s,onRemove:m,onRemoveGroup:i,key:`group-${e.id}`,intervalGroup:e});var n}))),O.createElement(J,{title:"Add Group",size:"sm",onClick:e=>{var t;vt(e),t={id:`group-id-${a}`,filters:{},intervals:[]},r((e=>[...e,t])),l((e=>e+1))}},O.createElement(De,null)),O.createElement(j,{position:"right"},O.createElement(Y,{type:"submit"},"Save")));function i(e){r((t=>t.filter((t=>t.id!==e.id))))}function u(e,t){r((n=>{const r=(n=[...n]).find((t=>t.id===e)),a=r?.intervals?.findIndex((e=>e.id===t.id));return void 0!==a&&r?.intervals?.[a]&&(r.intervals[a]=t),n}))}function s(e,t){void 0===t.id&&(t.id=`id-${o}`,c((e=>e+1))),r((n=>{const r=(n=[...n]).findIndex((t=>t.id===e));if(-1!=r){const e={...n[r]};t={...t,...e.filters},e.intervals=[...e.intervals,t],n[r]=e}return n}))}function m(e,t){r((n=>{const r=(n=[...n]).find((t=>t.id===e));return r&&(r.intervals=r.intervals.filter((e=>e.id!==t.id))),n}))}}function Ml(e){const{intervalGroup:t,unit:n}=e,{classes:r}=Ol();return O.createElement(Vt,{"data-testid":t.id,className:r.section},O.createElement(ae,{spacing:"lg"},O.createElement(j,{position:"right"},O.createElement(J,{title:"Remove Group","data-testid":`remove-group-button-${t.id}`,key:`remove-group-button-${t.id}`,size:"sm",onClick:n=>{vt(n),e.onRemoveGroup(t)}},O.createElement(ke,null))),O.createElement(Ul,{intervalGroup:t,onChange:e.onChange}),O.createElement(ce,null),t.intervals.map((n=>O.createElement(ae,{key:`interval-${n.id}`,spacing:"xs"},O.createElement(j,null,O.createElement(Q,{key:`condition-${n.id}`,"data-testid":`condition-${n.id}`,defaultValue:n.condition,label:"Condition: ",size:"sm",onChange:r=>{vt(r),e.onChange(t.id,{...n,condition:r.currentTarget.value.trim()})}}),O.createElement(J,{title:"Remove Interval",size:"sm",key:`remove-interval-${n.id}`,"data-testid":`remove-interval-${n.id}`,onClick:r=>{vt(r),e.onRemove(t.id,n)}},O.createElement(ke,null))),O.createElement(Bn,{onChange:r=>{e.onChange(t.id,{...n,range:r})},key:`range-${n.id}`,name:`range-${n.id}`,defaultValue:n.range})))),O.createElement(J,{title:"Add Interval",size:"sm",onClick:r=>{vt(r),e.onAdd(t.id,{range:{low:{unit:n},high:{unit:n}}})}},O.createElement(De,null))))}function Ul(e){const{intervalGroup:t,onChange:n}=e;t.filters.age||(t.filters.age={});for(const e of["low","high"])t.filters.age[e]?.unit||(t.filters.age[e]={...t.filters.age[e],unit:"years",system:"http://unitsofmeasure.org"});return O.createElement(ae,{style:{maxWidth:"50%"}},O.createElement(j,null,O.createElement(K,{data:["","male","female"],label:"Gender:",defaultValue:t.filters.gender||"",onChange:e=>{for(const r of t.intervals){let a=e.currentTarget?.value;""===a&&(a=void 0),n(t.id,{...r,gender:a})}}})),O.createElement(j,{spacing:"xs"},O.createElement(le,{component:"label",htmlFor:`div-age-${t.id}`},"Age:"),O.createElement("div",{id:`div-age-${t.id}`},O.createElement(Bn,{key:`age-${t.id}`,name:`age-${t.id}`,defaultValue:t.filters.age,onChange:e=>{for(const r of t.intervals)n(t.id,{...r,age:e})}}))),O.createElement(K,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:t.filters.context?.text||"",onChange:e=>{for(const r of t.intervals){let a=e.currentTarget?.value;""===a?(a=void 0,n(t.id,{...r,context:void 0})):n(t.id,{...r,context:{text:a,coding:[{code:a,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}))}function _l(e){return[`gender=${e.gender}`,`age=${i(e.age)}`,`gestationalAge=${i(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map((e=>e.text)).join("+")}`].join(":")}function ql(e){const t=gt(),n=wn(e.value),[r,a]=z(!1),[l,o]=z();return M((()=>{n&&!r&&(t.executeBatch(function(e){const t=[];if(e.action)for(const n of e.action)n.resource?.reference&&t.push({request:{method:"GET",url:n.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:t}}(n)).then(o).catch(console.log),a(!0))}),[t,n,r]),n&&l?O.createElement(Te,null,n.action?.map(((t,n)=>{const r=t.resource&&function(e){for(const t of l?.entry)if(t.resource&&e.reference===k(t.resource))return t.resource;return}(t.resource),a=r?.input?.[0]?.valueReference,o=r?.output?.[0]?.valueReference;return O.createElement(O.Fragment,{key:`action-${n}`},O.createElement(Te.Col,{span:1,p:"md"},"completed"===r?.status?O.createElement(at,null):O.createElement(lt,{color:"gray"})),O.createElement(Te.Col,{span:9,p:"xs"},O.createElement(le,{weight:500},t.title),t.description&&O.createElement("div",null,t.description),O.createElement("div",null,"Last edited by ",O.createElement(fr,{value:r?.meta?.author})," on ",h(r?.meta?.lastUpdated)),O.createElement("div",null,"Status: ",O.createElement(yr,{status:r?.status||"unknown"}))),O.createElement(Te.Col,{span:2,p:"md"},a&&!o&&O.createElement(Y,{onClick:()=>e.onStart(r,a)},"Start"),a&&o&&O.createElement(Y,{onClick:()=>e.onEdit(r,a,o)},"Edit")))}))):null}function Wl(e,t){return function(e,t,n){const r=[];let a=e;a.snake&&(a=a.prev);for(;a&&a.prev&&a.prev.j>=0;){const e=a.i,l=a.j;a=a.prev;const o=a.i,c=a.j,i={position:o,lines:t.slice(o,e)},u={position:c,lines:n.slice(c,l)};let s;s=0===i.lines.length&&u.lines.length>0?"insert":i.lines.length>0&&0===u.lines.length?"delete":"change",r.push({original:i,revised:u,type:s}),a.snake&&(a=a.prev)}return r}(function(e,t){const n=e.length,r=t.length,a=n+r+1,l=1+2*a,o=l/2|0,c=new Array(l);c[o+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let a=-l;a<=l;a+=2){const i=o+a,u=i-1,s=c[i+1],m=c[u];let d,p=0;a===-l||a!==l&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),c[u]=void 0;let h=p-a,f={i:p,j:h,prev:jl(d),snake:!1};for(;p<n&&h<r&&e[p]===t[h];)p++,h++;if(p>f.i&&(f={i:p,j:h,prev:f,snake:!0}),c[i]=f,p>=n&&h>=r)return c[i]}c[o+l-1]=void 0}return}(e,t),e,t)}function jl(e){return e&&!e.snake&&e.prev?e.prev:e}function Kl(e){const t=e.entry.filter((e=>!!e.resource)).map((e=>({meta:e.resource?.meta,lines:u(e.resource,!0).match(/[^\r\n]+/g)}))).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),n=t[0].lines.map((e=>({id:t[0].meta.versionId,meta:t[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const r=Wl(t[n-1].lines,t[n].lines);for(const a of r){const r=a.original.position,l=a.original.lines,o=a.revised.lines;if("delete"!==a.type&&"change"!==a.type||e.splice(r,l.length),"insert"===a.type||"change"===a.type)for(let l=0;l<a.revised.lines.length;l++)e.splice(r+l,0,{id:t[n].meta.versionId,meta:t[n].meta,value:o[l],span:1})}}}(n,t),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(n),n}const Ql=X((e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs}px ${e.spacing.sm}px`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs}px ${e.spacing.sm}px`},pre:{margin:0}})));function Hl(e){const{classes:t}=Ql(),n=gt(),[r,a]=z(e.history);if(M((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then(a).catch(console.log)}),[n,e.history,e.resourceType,e.id]),!r)return O.createElement("div",null,"Loading...");const l=r.entry?.[0]?.resource,o=Kl(r);return O.createElement("div",{className:t.container},O.createElement("table",{className:t.root},O.createElement("tbody",null,o.map(((e,n)=>O.createElement("tr",{key:"row-"+n,className:e.span>0?t.startRow:t.normalRow},e.span>0&&O.createElement(O.Fragment,null,O.createElement("td",{className:t.author,rowSpan:e.span},O.createElement(gr,{value:e.meta.author,link:!0})),O.createElement("td",{className:t.dateTime,rowSpan:e.span},O.createElement(gn,{to:Bl(l,e.meta.versionId)},Gl(e.meta.lastUpdated)))),O.createElement("td",{className:t.lineNumber},n+1),O.createElement("td",{className:t.line},O.createElement("pre",{className:t.pre},e.value))))))))}function Bl(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function Gl(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return Jl(n,"year");const r=Math.floor(t/2592e3);if(r>0)return Jl(r,"month");const a=Math.floor(t/86400);if(a>0)return Jl(a,"day");const l=Math.floor(t/3600);if(l>0)return Jl(l,"hour");const o=Math.floor(t/60);return o>0?Jl(o,"minute"):Jl(t,"second")}function Jl(e,t){return`${e} ${1===e?t:t+"s"} ago`}const Yl=X((e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}})));function Xl(e){let t=e.original,n=e.revised;e.ignoreMeta&&(t={...t,meta:void 0},n={...n,meta:void 0});const r=Wl(u(t,!0).match(/[^\r\n]+/g),u(n,!0).match(/[^\r\n]+/g));return O.createElement("pre",{style:{color:"gray"}},r.map(((e,t)=>O.createElement(Zl,{key:"delta"+t,delta:e}))))}function Zl(e){const{classes:t}=Yl();return O.createElement(O.Fragment,null,"...",O.createElement("br",null),e.delta.original.lines.length>0&&O.createElement("div",{className:t.removed},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&O.createElement("div",{className:t.added},e.delta.revised.lines.join("\n")),"...",O.createElement("br",null))}function eo(e){const t=gt(),[n,r]=z(e.history);return M((()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(r).catch(console.log)}),[t,e.history,e.resourceType,e.id]),n?O.createElement(Ce,{withBorder:!0,withColumnBorders:!0},O.createElement("thead",null,O.createElement("tr",null,O.createElement("th",null,"Author"),O.createElement("th",null,"Date"),O.createElement("th",null,"Version"))),O.createElement("tbody",null,n.entry?.map(((e,t)=>O.createElement(to,{key:"entry-"+t,entry:e}))))):O.createElement("div",null,"Loading...")}function to(e){const{response:t,resource:r}=e.entry;return r?O.createElement("tr",null,O.createElement("td",null,O.createElement(gr,{value:r.meta?.author,link:!0})),O.createElement("td",null,h(r.meta?.lastUpdated)),O.createElement("td",null,O.createElement(gn,{to:no(r)},r.meta?.versionId))):O.createElement("tr",null,O.createElement("td",{colSpan:3},n(t?.outcome)))}function no(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}const ro=X((e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}})));function ao(e){const{classes:t}=ro(),n=gt(),r=wn(e.schedule),a=wn(e.questionnaire),[l,o]=z();L().current=l;const[c,i]=z(pr()),[u,s]=z(),[m,d]=z(),[p,h]=z();if(M((()=>{r?(o([]),n.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",k(r)],["start","gt"+lo(c)],["start","lt"+oo(c)]])).then(o).catch(console.log)):o(void 0)}),[n,r,c]),!r||!l||!a)return null;const f=r.actor?.[0];return O.createElement("div",{className:t.container,"data-testid":"scheduler"},O.createElement("div",{className:t.info},f&&O.createElement(Jn,{value:f,size:"xl"}),f&&O.createElement(le,{size:"xl",weight:500},O.createElement(fr,{value:f})),O.createElement("p",null,"1 hour"),u&&O.createElement("p",null,u.toLocaleDateString()),m&&O.createElement("p",null,io(new Date(m.start)))),O.createElement("div",{className:t.selection},!u&&O.createElement("div",null,O.createElement("h3",null,"Select date"),O.createElement(dr,{slots:l,onChangeMonth:i,onClick:s})),u&&!m&&O.createElement("div",null,O.createElement("h3",null,"Select time"),O.createElement(ae,null,l.map((e=>{const t=new Date(e.start);return t.getTime()>u.getTime()&&t.getTime()<u.getTime()+864e5&&O.createElement("div",{key:e.id},O.createElement(Y,{variant:"outline",style:{width:150},onClick:()=>d(e)},io(t)))})))),u&&m&&!p&&O.createElement(fl,{questionnaire:a,submitButtonText:"Next",onSubmit:h}),u&&m&&p&&O.createElement("div",null,O.createElement("h3",null,"You're all set!"),O.createElement("p",null,"Check your email for a calendar invite."))))}function lo(e){return co(e.getTime())}function oo(e){return co(e.getTime()+26784e5)}function co(e){return new Date(Math.max(Date.now(),e)).toISOString()}function io(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}function uo(e){return O.createElement(Lr,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${k(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${k(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${k(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${k(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,n,r)=>({resourceType:"Communication",status:"completed",basedOn:[t(e)],subject:e.subject,sender:t(n),sent:(new Date).toISOString(),payload:[{contentString:r}]}),createMedia:(e,n,r)=>({resourceType:"Media",status:"completed",basedOn:[t(e)],subject:e.subject,operator:t(n),issued:(new Date).toISOString(),content:r})})}export{ut as AddressDisplay,dt as AddressInput,yt as AnnotationInput,xt as AsyncAutocomplete,kt as AttachmentArrayDisplay,St as AttachmentArrayInput,wt as AttachmentButton,Tt as AttachmentDisplay,At as AttachmentInput,bn as BackboneElementDisplay,ur as BackboneElementInput,dr as CalendarInput,xn as CheckboxFormSection,Pn as CodeInput,ln as CodeableConceptDisplay,Nn as CodeableConceptInput,on as CodingDisplay,$n as CodingInput,un as ContactDetailDisplay,zn as ContactDetailInput,cn as ContactPointDisplay,On as ContactPointInput,Vt as Container,Ln as DateTimeInput,Qr as DefaultResourceTimeline,rn as DescriptionList,an as DescriptionListEntry,Cr as DiagnosticReportDisplay,Pt as Document,or as ElementDefinitionInputSelector,cr as ElementDefinitionTypeInput,Hr as EncounterTimeline,Vr as ErrorBoundary,Ja as FhirPathTable,Lt as Form,Tn as FormSection,sn as HumanNameDisplay,_n as HumanNameInput,mn as IdentifierDisplay,qn as IdentifierInput,Ft as Logo,gn as MedplumLink,ht as MedplumProvider,Ya as MemoizedFhirPathTable,Qa as MemoizedSearchControl,dn as MoneyDisplay,jn as MoneyInput,br as ObservationTable,Nt as Panel,Za as PatientTimeline,tl as PlanDefinitionBuilder,pn as QuantityDisplay,Qn as QuantityInput,Sl as QuestionnaireBuilder,fl as QuestionnaireForm,El as QuestionnaireFormItem,pl as QuestionnaireItemType,hn as RangeDisplay,Bn as RangeInput,En as ReferenceDisplay,er as ReferenceInput,Fl as ReferenceRangeEditor,Ml as ReferenceRangeGroupEditor,Gt as RegisterForm,ql as RequestGroupDisplay,yn as ResourceArrayDisplay,tr as ResourceArrayInput,Jn as ResourceAvatar,gr as ResourceBadge,Hl as ResourceBlame,Xl as ResourceDiff,Sn as ResourceForm,eo as ResourceHistoryTable,Xn as ResourceInput,fr as ResourceName,vn as ResourcePropertyDisplay,lr as ResourcePropertyInput,Dr as ResourceTable,Lr as ResourceTimeline,ao as Scheduler,_a as SearchChangeEvent,Wa as SearchClickEvent,Ka as SearchControl,wa as SearchFieldEditor,Va as SearchFilterEditor,qa as SearchLoadEvent,uo as ServiceRequestTimeline,en as SignInForm,yr as StatusBadge,Ir as Timeline,Rr as TimelineItem,rr as TimingInput,da as addDateFilterBetween,ta as addField,ea as addFilter,ca as addLastMonthFilter,ha as addMissingFilter,ua as addNextMonthFilter,ia as addThisMonthFilter,aa as addTodayFilter,la as addTomorrowFilter,ma as addYearToDateFilter,ra as addYesterdayFilter,Ta as buildFieldNameString,Xr as clearFilters,Zr as clearFiltersOnField,Fn as convertIsoToLocal,Mn as convertLocalToIso,Wt as createScriptTag,na as deleteFilter,Mt as getErrorsForInput,Ut as getIssuesForExpression,mr as getMonthString,xa as getOpString,Ht as getRecaptcha,ba as getSearchOperators,va as getSortField,pr as getStartMonth,Gl as getTimeString,Cn as getValueAndType,Qt as initRecaptcha,hl as isChoiceQuestion,kl as isQuestionEnabled,Ca as isSortDescending,$t as parseForm,ka as renderValue,Yr as setFilters,fa as setOffset,ga as setPage,An as setPropertyValue,Ea as setSort,Nr as sortByDateAndPriority,ya as toggleSort,gt as useMedplum,ft as useMedplumContext,Et as useMedplumProfile,wn as useResource};