@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,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
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@medplum/core"),require("react"),require("@mantine/core"),require("@tabler/icons"),require("react-router-dom"),require("@mantine/notifications")):"function"==typeof define&&define.amd?define(["exports","@medplum/core","react","@mantine/core","@tabler/icons","react-router-dom","@mantine/notifications"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).medplum=e.medplum||{},e.medplum.react={}),e.medplum.core,e.React,e.mantine.core,e.tabler.icons,e.ReactRouterDOM,e.mantine.notifications)}(this,(function(e,t,n,r,a,o,l){"use strict";function c(e){const r=e.value;return r?n.createElement(n.Fragment,null,t.formatAddress(r)):null}function i(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function u(e,t,n){const r=e.line||[];for(;r.length<=t;)r.push("");return r[t]=n,{...e,line:r}}function s(e){const[t,a]=n.useState(e.defaultValue||{}),o=n.useRef();function l(t){a(t),e.onChange&&e.onChange(t)}return o.current=t,n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.NativeSelect,{"data-testid":"address-use",defaultValue:t?.use,onChange:e=>{return t=e.currentTarget.value,void l({...o.current,use:t});var t},data:["","home","work","temp","old","billing"]}),n.createElement(r.NativeSelect,{"data-testid":"address-type",defaultValue:t?.type,onChange:e=>{return t=e.currentTarget.value,void l({...o.current,type:t});var t},data:["","postal","physical","both"]}),n.createElement(r.TextInput,{placeholder:"Line 1",defaultValue:i(t,0),onChange:e=>{return t=e.currentTarget.value,void l(u(o.current||{},0,t));var t}}),n.createElement(r.TextInput,{placeholder:"Line 2",defaultValue:i(t,1),onChange:e=>{return t=e.currentTarget.value,void l(u(o.current||{},1,t));var t}}),n.createElement(r.TextInput,{placeholder:"City",defaultValue:t.city,onChange:e=>{return t=e.currentTarget.value,void l({...o.current,city:t});var t}}),n.createElement(r.TextInput,{placeholder:"State",defaultValue:t.state,onChange:e=>{return t=e.currentTarget.value,void l({...o.current,state:t});var t}}),n.createElement(r.TextInput,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:e=>{return t=e.currentTarget.value,void l({...o.current,postalCode:t});var t}}))}const m=n.createContext(void 0);function d(){return n.useContext(m)}function p(){return d().medplum}function f(){return d().profile}function h(e){const a=f(),[o,l]=n.useState(e.defaultValue||{});return n.useRef().current=o,n.createElement(r.TextInput,{name:e.name,placeholder:"Annotation text",defaultValue:o.text,onChange:n=>function(n){const r=n?{text:n,authorReference:a&&t.createReference(a),time:(new Date).toISOString()}:{};l(r),e.onChange&&e.onChange(r)}(n.currentTarget.value)})}function g(e){e.preventDefault(),e.stopPropagation()}function E(e){if(y(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&y(t[0]))return!0}return!1}function y(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function v(e){const{defaultValue:t,toKey:a,toOption:o,loadOptions:l,onChange:c,onCreate:i,...u}=e,s=function(e){if(!e)return[];if(Array.isArray(e))return e;return[e]}(t),m=n.useRef(null),[d,p]=n.useState(void 0),[f,h]=n.useState(),[E,y]=n.useState(),[v,C]=n.useState(),[T,S]=n.useState(s?.map(o)),b=n.useRef();b.current=d;const x=n.useRef();x.current=f;const k=n.useRef();k.current=E;const I=n.useRef();I.current=v;const w=n.useRef();w.current=T;const A=n.useCallback((()=>{h(void 0);const e=m.current?.value?.trim()||"";if(e===b.current)return;p(e);const t=new AbortController;y(t),l(e,t.signal).then((e=>{t.signal.aborted||(S(e.map(o)),y(void 0),I.current&&(e.length>0&&c(e.slice(0,1)),C(!1)))})).catch(console.log)}),[l,c,o]),R=n.useCallback((()=>{k.current&&(k.current.abort(),y(void 0)),void 0!==x.current&&window.clearTimeout(x.current);const e=window.setTimeout((()=>A()),100);h(e)}),[A]),D=n.useCallback((e=>{const t=[];for(const n of e){let e=w.current?.find((e=>e.value===n))?.resource;e||(e=i(n)),t.push(e)}c(t)}),[c,i]),P=n.useCallback((e=>{"Enter"===e.key&&(x.current||k.current?C(!0):(g(e),w.current&&w.current.length>0&&(S(w.current.slice(0,1)),D([w.current[0].value]))))}),[D]),V=n.useCallback((e=>{const t=o(i(e));return S([...w.current,t]),t}),[i,S,o]),O=n.useCallback(((e,t)=>!t),[]);return n.useEffect((()=>()=>{k.current&&k.current.abort()}),[]),n.createElement(r.MultiSelect,{...u,ref:m,defaultValue:s.map(a),searchable:!0,onKeyDown:P,onSearchChange:R,data:T,onFocus:A,onChange:D,onCreate:V,rightSectionWidth:40,rightSection:E?n.createElement(r.Loader,{size:16}):null,filter:O})}function C(e){const t=e.value,{contentType:a,url:o,title:l}=t??{};return o?n.createElement("div",{"data-testid":"attachment-display"},a?.startsWith("image/")&&n.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:o,alt:t?.title}),a?.startsWith("video/")&&n.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},n.createElement("source",{type:a,src:o})),"application/pdf"===a&&!l?.endsWith(".pdf")&&n.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},n.createElement("iframe",{width:"100%",height:"400",src:o+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),n.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},n.createElement(r.Anchor,{href:t?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},t?.title||"Download"))):null}function T(e){return n.createElement("div",null,e.values&&e.values.map(((t,r)=>n.createElement("div",{key:"attatchment-"+r},n.createElement(C,{value:t,maxWidth:e.maxWidth})))))}function S(e){const t=p(),r=n.useRef(null);function a(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 n.createElement(n.Fragment,null,n.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:r,onChange:e=>function(e){g(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),e.children({onClick:function(e){g(e),r.current?.click()}}))}function b(e){const[t,o]=n.useState(e.defaultValue??[]),l=n.useRef();function c(t){o(t),e.onChange&&e.onChange(t)}return l.current=t,n.createElement("table",{style:{width:"100%"}},n.createElement("colgroup",null,n.createElement("col",{width:"97%"}),n.createElement("col",{width:"3%"})),n.createElement("tbody",null,t.map(((e,o)=>n.createElement("tr",{key:`${o}-${t.length}`},n.createElement("td",null,n.createElement(C,{value:e,maxWidth:200})),n.createElement("td",null,n.createElement(r.ActionIcon,{title:"Remove",size:"sm",onClick:e=>{g(e);const n=t.slice();n.splice(o,1),c(n)}},n.createElement(a.IconCircleMinus,null)))))),n.createElement("tr",null,n.createElement("td",null),n.createElement("td",null,n.createElement(S,{onUpload:e=>{c([...l.current,e])}},(e=>n.createElement(r.ActionIcon,{...e,title:"Add",size:"sm",color:"green"},n.createElement(a.IconCloudUpload,{size:16}))))))))}function x(e){const[t,a]=n.useState(e.defaultValue);function o(t){a(t),e.onChange&&e.onChange(t)}return t?n.createElement(n.Fragment,null,n.createElement(C,{value:t,maxWidth:200}),n.createElement(r.Button,{onClick:e=>{g(e),o(void 0)}},"Remove")):n.createElement(S,{onUpload:o},(e=>n.createElement(r.Button,{...e},"Upload...")))}const k=r.createStyles((()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}})));function I(e){const{children:t,...a}=e,{classes:o}=k();return n.createElement(r.Container,{className:o.root,...a},t)}const w=r.createStyles(((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%"}}}))),A={shadow:"xs",radius:"md",withBorder:!0};function R(e){const{className:t,children:a,width:o,fill:l,unstyled:c,...i}=r.useComponentDefaultProps("Panel",A,e),{classes:u,cx:s}=w({width:o,fill:l},{name:"Panel",unstyled:c});return n.createElement(r.Paper,{className:s(u.paper,t),...i},a)}function D(e){const{children:t,...r}=e;return n.createElement(I,null,n.createElement(R,{...r},t))}function P(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?V(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&O(t,n);return t}function V(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function O(e,t){e[t.name]=t.value}function M(e){return n.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=P(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function N(e){return n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},n.createElement("title",null,"Medplum Logo"),n.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),n.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"}),n.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"}),n.createElement("path",{fill:e.fill||"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),n.createElement("path",{fill:e.fill||"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function F(e,t){return e?.issue?.filter((e=>z(e.expression?.[0],t)))?.map((e=>e.details?.text))?.join("\n")}function $(e,t){return e?.issue?.filter((e=>z(e.expression?.[0],t)))}function z(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 L(e){const t=p(),[a,o]=n.useState();return n.createElement(M,{style:{maxWidth:400},onSubmit:async n=>{try{e.handleAuthResponse(await t.startNewProject({login:e.login,projectName:n.projectName}))}catch(e){o(e)}}},n.createElement(r.Center,{sx:{flexDirection:"column"}},n.createElement(N,{size:32}),n.createElement(r.Title,null,"Create project")),n.createElement(r.Stack,{spacing:"xl"},n.createElement(r.TextInput,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:F(a,"firstName")}),n.createElement(r.Text,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",n.createElement(r.Anchor,{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",n.createElement(r.Anchor,{href:"https://www.medplum.com/terms"},"Terms of Service"),".")),n.createElement(r.Group,{position:"right",mt:"xl",noWrap:!0},n.createElement(r.Button,{type:"submit"},"Create project")))}function B(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 U(e){const t=p(),{googleClientId:r,handleGoogleCredential:a}=e,o=n.useRef(null),[l,c]=n.useState("undefined"!=typeof google),[i,u]=n.useState(!1),[s,m]=n.useState(!1);return n.useEffect((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:r,callback:a}),u(!0)),o.current&&!s&&(google.accounts.id.renderButton(o.current,{}),m(!0))):B("https://accounts.google.com/gsi/client",(()=>c(!0)))}),[t,r,i,l,o,s,a]),r?n.createElement("div",{ref:o}):null}function q(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 _(e){"undefined"==typeof grecaptcha&&B("https://www.google.com/recaptcha/api.js?render="+e)}function G(e){return new Promise(((t,n)=>{grecaptcha.ready((async()=>{try{t(await grecaptcha.execute(e,{action:"submit"}))}catch(e){n(e)}}))}))}function Q(e){const t=q(e.googleClientId),o=e.recaptchaSiteKey,l=p(),[c,i]=n.useState(),u=$(c,void 0);return n.useEffect((()=>_(o)),[o]),n.createElement(M,{style:{maxWidth:400},onSubmit:async t=>{try{const n=await G(o);e.handleAuthResponse(await l.startNewUser({projectId:e.projectId,firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,remember:"true"===t.remember,recaptchaSiteKey:o,recaptchaToken:n}))}catch(e){i(e)}}},n.createElement(r.Center,{sx:{flexDirection:"column"}},e.children),u&&n.createElement(r.Alert,{icon:n.createElement(a.IconAlertCircle,{size:16}),color:"red"},u.map((e=>n.createElement("div",{"data-testid":"text-field-error",key:e.details?.text},e.details?.text)))),t&&n.createElement(n.Fragment,null,n.createElement(r.Group,{position:"center",p:"xl",style:{height:70}},n.createElement(U,{googleClientId:t,handleGoogleCredential:async t=>{try{await l.startPkce(),e.handleAuthResponse(await l.startGoogleLogin({googleClientId:t.clientId,googleCredential:t.credential,createUser:!0}))}catch(e){i(e)}}})),n.createElement(r.Divider,{label:"or",labelPosition:"center",my:"lg"})),n.createElement(r.Stack,{spacing:"xl"},n.createElement(r.TextInput,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:F(c,"firstName")}),n.createElement(r.TextInput,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:F(c,"lastName")}),n.createElement(r.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:F(c,"email")}),n.createElement(r.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,error:F(c,"password")}),n.createElement(r.Text,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",n.createElement(r.Anchor,{href:"https://www.medplum.com/privacy"},"Privacy Policy")," and ",n.createElement(r.Anchor,{href:"https://www.medplum.com/terms"},"Terms of Service"),"."),n.createElement(r.Text,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",n.createElement(r.Anchor,{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",n.createElement(r.Anchor,{href:"https://policies.google.com/terms"},"Terms of Service")," apply.")),n.createElement(r.Group,{position:"apart",mt:"xl",noWrap:!0},n.createElement(r.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),n.createElement(r.Button,{type:"submit"},"Create account")))}function W(e){const{generatePkce:t,onForgotPassword:o,onRegister:l,handleAuthResponse:c,children:i,...u}=e,s=p(),m=q(e.googleClientId),[d,f]=n.useState(),h=$(d,void 0);async function g(){t&&await s.startPkce()}return n.createElement(M,{style:{maxWidth:400},onSubmit:e=>{g().then((()=>s.startLogin({...u,email:e.email,password:e.password,remember:"on"===e.remember}))).then(c).catch(f)}},n.createElement(r.Center,{sx:{flexDirection:"column"}},i),h&&n.createElement(r.Alert,{icon:n.createElement(a.IconAlertCircle,{size:16}),color:"red"},h.map((e=>n.createElement("div",{"data-testid":"text-field-error",key:e.details?.text},e.details?.text)))),m&&n.createElement(n.Fragment,null,n.createElement(r.Group,{position:"center",p:"xl",style:{height:70}},n.createElement(U,{googleClientId:m,handleGoogleCredential:t=>{g().then((()=>s.startGoogleLogin({...u,googleCredential:t.credential}))).then(e.handleAuthResponse).catch(f)}})),n.createElement(r.Divider,{label:"or",labelPosition:"center",my:"lg"})),n.createElement(r.Stack,{spacing:"xl"},n.createElement(r.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0,error:F(d,"email")}),n.createElement(r.PasswordInput,{name:"password",type:"password",label:"Password",autoComplete:"off",required:!0,error:F(d,"password")})),n.createElement(r.Group,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&n.createElement(r.Anchor,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),l&&n.createElement(r.Anchor,{component:"button",type:"button",color:"dimmed",onClick:l,size:"xs"},"Register"),n.createElement(r.Checkbox,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),n.createElement(r.Button,{type:"submit"},"Sign in")))}function j(e){const t=p();return n.createElement(r.Stack,null,n.createElement(r.Center,{sx:{flexDirection:"column"}},n.createElement(N,{size:32}),n.createElement(r.Title,null,"Choose profile")),e.memberships.map((a=>n.createElement(r.UnstyledButton,{key:a.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(console.log)}},n.createElement(r.Group,null,n.createElement(r.Avatar,{radius:"xl"}),n.createElement("div",{style:{flex:1}},n.createElement(r.Text,{size:"sm",weight:500},a.profile?.display),n.createElement(r.Text,{color:"dimmed",size:"xs"},a.project?.display)))))))}function H(e){const t=p();return n.createElement(M,{style:{maxWidth:400},onSubmit:n=>{t.post("auth/scope",{login:e.login,scope:Object.keys(n).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},n.createElement(r.Stack,null,n.createElement(r.Center,{sx:{flexDirection:"column"}},n.createElement(N,{size:32}),n.createElement(r.Title,null,"Choose scope")),n.createElement(r.Stack,null,(e.scope||"openid").split(" ").map((e=>n.createElement(r.Checkbox,{key:e,id:e,name:e,label:e,defaultChecked:!0})))),n.createElement(r.Group,{position:"right",mt:"xl"},n.createElement(r.Button,{type:"submit"},"Set scope"))))}function K(e){const o=p(),[l,c]=n.useState(void 0);return n.createElement(M,{style:{maxWidth:400},onSubmit:n=>{c(void 0),o.post("auth/mfa/verify",{login:e.login,token:n.token}).then(e.handleAuthResponse).catch((e=>c(t.normalizeErrorString(e))))}},n.createElement(r.Stack,null,n.createElement(r.Center,{sx:{flexDirection:"column"}},n.createElement(N,{size:32}),n.createElement(r.Title,null,"Enter MFA code")),l&&n.createElement(r.Alert,{icon:n.createElement(a.IconAlertCircle,{size:16}),title:"Error",color:"red"},l),n.createElement(r.Stack,null,n.createElement(r.TextInput,{name:"token",label:"MFA code",required:!0})),n.createElement(r.Group,{position:"right",mt:"xl"},n.createElement(r.Button,{type:"submit"},"Submit code"))))}const Y=["meta","implicitRules","language","text","contained","extension","modifierExtension"],J=r.createStyles((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 X(e){const{children:t,compact:r}=e,{classes:a,cx:o}=J();return n.createElement("dl",{className:o(a.root,{[a.compact]:r})},t)}function Z(e){return n.createElement(n.Fragment,null,n.createElement("dt",null,e.term),n.createElement("dd",null,e.children))}function ee(e){return n.createElement(n.Fragment,null,t.formatCodeableConcept(e.value))}function te(e){return n.createElement(n.Fragment,null,t.formatCoding(e.value))}function ne(e){const t=e.value;if(!t)return null;const r=[];return t.value&&r.push(t.value),(t.use||t.system)&&(r.push(" ["),t.use&&r.push(t.use),t.use&&t.system&&r.push(" "),t.system&&r.push(t.system),r.push("]")),n.createElement(n.Fragment,null,r.join("").trim())}function re(e){const t=e.value;return t?n.createElement(n.Fragment,null,t.name,t.name&&": ",t.telecom?.map(((e,t)=>n.createElement(ne,{key:"telecom-"+t,value:e})))):null}function ae(e){const r=e.value;return r?n.createElement(n.Fragment,null,t.formatHumanName(r,e.options)):null}function oe(e){return n.createElement("div",null,e.value?.system,": ",e.value?.value)}function le(e){return n.createElement(n.Fragment,null,t.formatMoney(e.value))}function ce(e){return n.createElement(n.Fragment,null,t.formatQuantity(e.value))}function ie(e){return n.createElement(n.Fragment,null,t.formatRange(e.value))}function ue(e){const t=e.value;return t?n.createElement(n.Fragment,null,n.createElement(ce,{value:t.numerator})," / ",n.createElement(ce,{value:t.denominator})):null}function se(e){const t=o.useNavigate(),{to:a,suffix:l,label:c,onClick:i,children:u,...s}=e;let m=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"#"}(a);return l&&(m+="/"+l),n.createElement(r.Anchor,{href:m,"aria-label":c,onClick:e=>{g(e),i?i():a&&t(m)},...s},u)}function me(e){if(!e.value)return null;const r=e.value.display||e.value.reference||t.stringify(e.value);return!1!==e.link&&e.value.reference?n.createElement(se,{to:e.value},r):n.createElement(n.Fragment,null,r)}function de(e){const t=e.property,r=e.values??[],a=t.type?.[0]?.code;return n.createElement(n.Fragment,null,r.map(((o,l)=>n.createElement("div",{key:`${l}-${r.length}`},n.createElement(pe,{arrayElement:!0,property:t,propertyType:a,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function pe(e){const{property:r,propertyType:a,value:o}=e;if("*"===r?.max&&!e.arrayElement)return"Attachment"===a?n.createElement(T,{values:o,maxWidth:e.maxWidth}):n.createElement(de,{property:r,values:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(a){case t.PropertyType.boolean:return n.createElement(n.Fragment,null,void 0===o?"":Boolean(o).toString());case t.PropertyType.SystemString:case t.PropertyType.code:case t.PropertyType.date:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.string:case t.PropertyType.unsignedInt:case t.PropertyType.uri:case t.PropertyType.url:return n.createElement(n.Fragment,null,o);case t.PropertyType.canonical:return n.createElement(me,{value:{reference:o},link:e.link});case t.PropertyType.dateTime:case t.PropertyType.instant:return n.createElement(n.Fragment,null,t.formatDateTime(o));case t.PropertyType.markdown:return n.createElement("pre",null,o);case t.PropertyType.Address:return n.createElement(c,{value:o});case t.PropertyType.Annotation:return n.createElement(n.Fragment,null,o?.text);case t.PropertyType.Attachment:return n.createElement(C,{value:o,maxWidth:e.maxWidth});case t.PropertyType.CodeableConcept:return n.createElement(ee,{value:o});case t.PropertyType.Coding:return n.createElement(te,{value:o});case t.PropertyType.ContactDetail:return n.createElement(re,{value:o});case t.PropertyType.ContactPoint:return n.createElement(ne,{value:o});case t.PropertyType.HumanName:return n.createElement(ae,{value:o});case t.PropertyType.Identifier:return n.createElement(oe,{value:o});case t.PropertyType.Money:return n.createElement(le,{value:o});case t.PropertyType.Period:return n.createElement(n.Fragment,null,t.formatPeriod(o));case t.PropertyType.Quantity:case t.PropertyType.Duration:return n.createElement(ce,{value:o});case t.PropertyType.Range:return n.createElement(ie,{value:o});case t.PropertyType.Ratio:return n.createElement(ue,{value:o});case t.PropertyType.Reference:return n.createElement(me,{value:o,link:e.link});case t.PropertyType.Timing:return n.createElement(n.Fragment,null,t.formatTiming(o));case t.PropertyType.Dosage:case t.PropertyType.UsageContext:return n.createElement(he,{value:{type:a,value:o},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!r?.path)throw Error(`Displaying property of type ${e.propertyType} requires element definition path`);return n.createElement(he,{value:{type:t.buildTypeName(r?.path?.split(".")),value:o},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function fe(e,n){const r=t.getTypedPropertyValue(e,n);return r?Array.isArray(r)?[r.map((e=>e.value)),r[0].type]:[r.value,r.type]:[void 0,"undefined"]}function he(e){const r=e.value,a=r.value;if(!a)return null;const o=r.type,l=t.globalSchema.types[o];return l?"object"==typeof a&&"name"in a&&1===Object.keys(a).length&&"string"==typeof a.name?n.createElement("div",null,a.name):n.createElement(X,{compact:e.compact},Object.entries(l.properties).map((a=>{const l=a[0];if(Y.indexOf(l)>=0)return null;const c=a[1];c.path||(c.path=o+"."+l);const[i,u]=fe(r,l);return e.ignoreMissingValues&&(!i||Array.isArray(i)&&0===i.length)?null:n.createElement(Z,{key:l,term:t.getPropertyDisplayName(l)},n.createElement(pe,{property:c,propertyType:u,value:i,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):n.createElement("div",null,o," not implemented")}function ge(e){return n.createElement(r.Group,{noWrap:!0},n.createElement("div",null,e.children),n.createElement("div",null,n.createElement(r.Input.Wrapper,{id:e.htmlFor,label:e.title,description:e.description},null)))}function Ee(e){return n.createElement(r.Input.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,error:F(e.outcome,e.htmlFor)},e.children)}const ye={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function ve(e){const t=p(),[r,a]=n.useState(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?ye:e.getCachedReference(t);return}(t,e));return n.useEffect((()=>{let n=!0;return!r&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{n&&a(e)})).catch((()=>a(void 0))),()=>n=!1}),[t,r,e]),r}function Ce(e,n,r,a,o){const l=a.type;if(l.length>1)for(const r of l){const a=n.replace("[x]",t.capitalize(r.code));a in e&&delete e[a]}return e[r]=o,e}function Te(e){return e.code}function Se(e){return{value:e.code,label:(t=e,t.display||t.code||""),resource:e};var t}function be(e){return{code:e,display:e}}function xe(e){const t=p(),{elementDefinition:r,...a}=e,o=n.useCallback((async(e,n)=>{const a=r.binding?.valueSet,o=(await t.searchValueSet(a,e,{signal:n})).expansion?.contains,l=[];for(const e of o)e.code&&!l.some((t=>t.code===e.code))&&l.push(e);return l}),[t,r]);return n.createElement(v,{...a,creatable:!0,clearable:!0,toKey:Te,toOption:Se,loadOptions:o,getCreateLabel:e=>`+ Create ${e}`,onCreate:be})}function ke(e){const[t,r]=n.useState(e.defaultValue);return n.createElement(xe,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(a=t,a.coding?.map((e=>({system:e.system,code:e.code,display:e.display})))),onChange:function(t){const n=function(e){if(0===e.length)return;return{coding:e.map((e=>({system:e.system,code:e.code,display:e.display})))}}(t);r(n),e.onChange&&e.onChange(n)}});var a}function Ie(e){const[t,r]=n.useState(e.defaultValue);return n.createElement(xe,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:(a=t,a?{code:a}:void 0),onChange:function(t){const n=t[0]?.code;r(n),e.onChange&&e.onChange(n)}});var a}function we(e){const[t,r]=n.useState(e.defaultValue);return n.createElement(xe,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:t&&(a=t,{system:a.system,code:a.code,display:a.display}),onChange:function(t){const n=t[0],a=n&&{system:(o=n).system,code:o.code,display:o.display};var o;r(a),e.onChange&&e.onChange(a)}});var a}function Ae(e){const[t,a]=n.useState(e.defaultValue),o=n.useRef();function l(t){t&&0===Object.keys(t).length&&(t=void 0),a(t),e.onChange&&e.onChange(t)}return o.current=t,n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.NativeSelect,{"data-testid":"system",defaultValue:t?.system,onChange:e=>function(e){const t={...o.current,system:e};e||delete t.system,l(t)}(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),n.createElement(r.NativeSelect,{"data-testid":"use",defaultValue:t?.use,onChange:e=>function(e){const t={...o.current,use:e};e||delete t.use,l(t)}(e.currentTarget.value),data:["","home","work","temp","old","mobile"]}),n.createElement(r.TextInput,{placeholder:"Value",defaultValue:t?.value,onChange:e=>function(e){const t={...o.current,value:e};e||delete t.value,l(t)}(e.currentTarget.value)}))}function Re(e){const[t,a]=n.useState(e.defaultValue),o=n.useRef();function l(t){a(t),e.onChange&&e.onChange(t)}return o.current=t,n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.TextInput,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:t?.name,onChange:e=>function(e){const t={...o.current,name:e};e||delete t.name,l(t)}(e.currentTarget.value)}),n.createElement(Ae,{name:e.name+"-telecom",defaultValue:t?.telecom?.[0],onChange:function(e){const t={...o.current,telecom:e&&[e]};e||delete t.telecom,l(t)}}))}function De(e){return n.createElement(r.TextInput,{id:e.name,name:e.name,"data-testid":e.name,placeholder:e.placeholder,type:"datetime-local",defaultValue:Pe(e.defaultValue),error:F(e.outcome,e.name),onChange:t=>{if(e.onChange){const n=t.currentTarget.value;e.onChange(Ve(n))}}})}function Pe(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toLocaleDateString("sv")+"T"+n.toLocaleTimeString("sv"):""}function Ve(e){if(!e)return"";const n=new Date(e);return t.isValidDate(n)?n.toISOString():""}function Oe(e){return n.createElement(r.JsonInput,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:t.stringify(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Me(e){const[t,a]=n.useState(e.defaultValue),o=n.useRef();function l(t){a(t),e.onChange&&e.onChange(t)}return o.current=t,n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.NativeSelect,{defaultValue:t?.use,"data-testid":"use",onChange:e=>{return t=e.currentTarget.value,void l({...o.current,use:t||void 0});var t},data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),n.createElement(r.TextInput,{placeholder:"Prefix",defaultValue:t?.prefix?.join(" "),onChange:e=>{return t=e.currentTarget.value,void l({...o.current,prefix:t?t.split(" "):void 0});var t}}),n.createElement(r.TextInput,{placeholder:"Given",defaultValue:t?.given?.join(" "),onChange:e=>{return t=e.currentTarget.value,void l({...o.current,given:t?t.split(" "):void 0});var t}}),n.createElement(r.TextInput,{placeholder:"Family",defaultValue:t?.family,onChange:e=>{return t=e.currentTarget.value,void l({...o.current,family:t||void 0});var t}}),n.createElement(r.TextInput,{placeholder:"Suffix",defaultValue:t?.suffix?.join(" "),onChange:e=>{return t=e.currentTarget.value,void l({...o.current,suffix:t?t.split(" "):void 0});var t}}))}function Ne(e){const[t,a]=n.useState(e.defaultValue);function o(t){a(t),e.onChange&&e.onChange(t)}return n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.TextInput,{placeholder:"System",defaultValue:t?.system,onChange:e=>o({...t,system:e.currentTarget.value})}),n.createElement(r.TextInput,{placeholder:"Value",defaultValue:t?.value,onChange:e=>o({...t,value:e.currentTarget.value})}))}const Fe=["USD","EUR","CAD","GBP","AUD"];function $e(e){const{onChange:t}=e,[o,l]=n.useState(e.defaultValue),c=n.useCallback((e=>{l(e),t&&t(e)}),[t]),i=n.useCallback((e=>{c({...o,currency:e.currentTarget.value})}),[o,c]),u=n.useCallback((e=>{c({...o,value:e.currentTarget.valueAsNumber})}),[o,c]),s=n.createElement(r.NativeSelect,{defaultValue:o?.currency,data:Fe,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:i});return n.createElement(r.TextInput,{type:"number",label:e.label,placeholder:e.placeholder||"Value",defaultValue:o?.value?.toString()||"USD",icon:n.createElement(a.IconCurrencyDollar,{size:14}),rightSection:s,rightSectionWidth:92,onChange:u})}function ze(e){const[t,a]=n.useState(e.defaultValue);function o(t){a(t),e.onChange&&e.onChange(t)}return n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(De,{name:e.name+".start",placeholder:"Start",defaultValue:t?.start,onChange:e=>o({...t,start:e})}),n.createElement(De,{name:e.name+".end",placeholder:"End",defaultValue:t?.end,onChange:e=>o({...t,end:e})}))}function Le(e){const[t,a]=n.useState(e.defaultValue);function o(t){a(t),e.onChange&&e.onChange(t)}return n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.NativeSelect,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:t?.comparator,data:["","<","<=",">=",">"],onChange:e=>o({...t,comparator:e.currentTarget.value})}),n.createElement(r.TextInput,{id:e.name,name:e.name,"data-testid":e.name+"-value",type:"number",step:"any",placeholder:"Value",defaultValue:t?.value?.toString(),onChange:e=>o({...t,value:Be(e.currentTarget.value)})}),n.createElement(r.TextInput,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:t?.unit,onChange:e=>o({...t,unit:e.currentTarget.value})}))}function Be(e){if(e)return parseFloat(e)}function Ue(e){const[t,a]=n.useState(e.defaultValue);function o(t){a(t),e.onChange&&e.onChange(t)}return n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(Le,{name:e.name+"-low",defaultValue:t?.low,onChange:e=>o({...t,low:e})}),n.createElement(Le,{name:e.name+"-high",defaultValue:t?.high,onChange:e=>o({...t,high:e})}))}function qe(e){const[t,a]=n.useState(e.defaultValue);function o(t){a(t),e.onChange&&e.onChange(t)}return n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(Le,{name:e.name+"-numerator",defaultValue:t?.numerator,onChange:e=>o({...t,numerator:e})}),n.createElement(Le,{name:e.name+"-denominator",defaultValue:t?.denominator,onChange:e=>o({...t,denominator:e})}))}function _e(e){const a=ve(e.value),o=a?t.getDisplayString(a):e.alt??"",l=(a&&t.getImageSrc(a))??e.src,c=e.radius??"xl",i={...e};return delete i.value,delete i.link,e.link?n.createElement(se,{to:a},n.createElement(r.Avatar,{src:l,alt:o,radius:c,...i})):n.createElement(r.Avatar,{src:l,alt:o,radius:c,...i})}const Ge={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 Qe(e){const a=p(),o=ve(e.defaultValue),[l,c]=n.useState(o?t.getDisplayString(o):""),[i,u]=n.useState(!1),[s,m]=n.useState([]);async function d(n){u(!0);const r=Ge[e.resourceType]||"name",o=new URLSearchParams({[r]:n,_count:"10"}),l=await a.searchResources(e.resourceType,o);m(l.map((e=>({value:t.getDisplayString(e),resource:e})))),u(!1)}return n.useEffect((()=>{o&&c(t.getDisplayString(o))}),[o,c]),n.createElement(r.Autocomplete,{itemComponent:We,value:l,data:s,placeholder:e.placeholder,onFocus:()=>d(l),onChange:async function(e){return c(e),d(e)},onItemSubmit:function(t){c(t.value),m([]),e.onChange&&e.onChange(t.resource)},rightSection:i?n.createElement(r.Loader,{size:16}):null})}const We=n.forwardRef((({value:e,resource:t,...a},o)=>n.createElement("div",{ref:o,...a},n.createElement(r.Group,{noWrap:!0},n.createElement(_e,{value:t}),n.createElement("div",null,n.createElement(r.Text,null,e),n.createElement(r.Text,{size:"xs",color:"dimmed"},t.birthDate))))));function je(e){const a=function(e){if(!e||0===e.length||1===e.length&&"Resource"===e[0])return;return e}(e.targetTypes),o=function(e,t){const n=e?.reference?.split("/")[0];if(n)return n;if(t&&t.length>0)return t[0];return}(e.defaultValue,a),[l,c]=n.useState(e.defaultValue),[i,u]=n.useState(o);n.useRef().current=l;return n.useRef().current=i,n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},a?n.createElement(r.NativeSelect,{"data-testid":"reference-input-resource-type-select",defaultValue:i,onChange:e=>u(e.currentTarget.value),data:a}):n.createElement(r.TextInput,{"data-testid":"reference-input-resource-type-input",defaultValue:i,onChange:e=>u(e.currentTarget.value)}),n.createElement(Qe,{resourceType:i,name:e.name+"-id",placeholder:e.placeholder,defaultValue:l,onChange:n=>{var r;r=n?t.createReference(n):void 0,c(r),e.onChange&&e.onChange(r)}}))}function He(e){const[t,o]=n.useState(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),l=n.useRef();function c(t){o(t),e.onChange&&e.onChange(t)}return l.current=t,n.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},n.createElement("colgroup",null,n.createElement("col",{width:"97%"}),n.createElement("col",{width:"3%"})),n.createElement("tbody",null,t.map(((o,i)=>n.createElement("tr",{key:`${i}-${t.length}`},n.createElement("td",null,n.createElement(Xe,{arrayElement:!0,property:e.property,name:e.name+"."+i,defaultValue:o,onChange:e=>{const t=[...l.current];t[i]=e,c(t)}})),n.createElement("td",{style:{textAlign:"right"}},n.createElement(r.ActionIcon,{title:"Remove",size:"sm",onClick:e=>{g(e);const t=[...l.current];t.splice(i,1),c(t)}},n.createElement(a.IconCircleMinus,null)))))),n.createElement("tr",null,n.createElement("td",null),n.createElement("td",{style:{textAlign:"right"}},n.createElement(r.ActionIcon,{title:"Add",size:"sm",color:"green",onClick:e=>{g(e);const t=[...l.current];t.push(void 0),c(t)}},n.createElement(a.IconCirclePlus,null))))))}const Ke=["sun","mon","tue","wed","thu","fri","sat"];function Ye(e){const[a,o]=n.useState(e.defaultValue||{}),[l,c]=n.useState(!1),i=n.useRef();return i.current=a,n.createElement(n.Fragment,null,n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement("span",null,t.formatTiming(i.current)||"No repeat"),n.createElement(r.Button,{onClick:()=>c(!0)},"Edit")),n.createElement(Je,{visible:l,defaultValue:i.current,onOk:t=>{e.onChange&&e.onChange(t),o(t),c(!1)},onCancel:()=>c(!1)}))}function Je(e){const[t,a]=n.useState(e.defaultValue||{}),o=n.useRef();function l(e){a({...o.current,repeat:e})}function c(e,t){t?function(e){const t=o.current?.repeat?.dayOfWeek||[];t.includes(e)||l({...o.current?.repeat,dayOfWeek:[...t,e]})}(e):function(e){const t=o.current?.repeat?.dayOfWeek||[];t.includes(e)&&l({...o.current?.repeat,dayOfWeek:t.filter((t=>t!==e))})}(e)}return o.current=t,n.createElement(r.Modal,{title:"Timing",closeButtonLabel:"Close",opened:e.visible,onClose:()=>e.onCancel()},n.createElement("div",{style:{padding:"5px 20px",textAlign:"left"}},n.createElement(Ee,{title:"Starts on",htmlFor:"timing-dialog-start"},n.createElement(De,{name:"timing-dialog-start",onChange:e=>{return t=e,void a({...o.current,event:[t]});var t}})),n.createElement(Ee,{title:"Repeat every",htmlFor:"timing-dialog-period"},n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.TextInput,{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 l({...o.current?.repeat,period:t});var t}}),n.createElement(r.NativeSelect,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:t?.repeat?.periodUnit,onChange:e=>{return t=e.currentTarget.value,void l({...o.current?.repeat,periodUnit:t});var t},data:[{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),n.createElement(Ee,{title:"Repeat on"},n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},Ke.map((e=>n.createElement(n.Fragment,{key:e},n.createElement("label",{htmlFor:"timing-dialog-repeat-"+e},e.charAt(0).toUpperCase()),n.createElement(r.Checkbox,{id:"timing-dialog-repeat-"+e,name:"timing-dialog-repeat-"+e,onChange:t=>c(e,t.currentTarget.checked)}))))))),n.createElement(r.Button,{onClick:()=>e.onOk(t)},"OK"))}function Xe(e){const t=e.property,r=e.defaultPropertyType??t.type?.[0]?.code,a=e.name,o=e.defaultValue;if("*"===t.max&&!e.arrayElement)return"Attachment"===r?n.createElement(b,{name:a,defaultValue:o,onChange:e.onChange}):n.createElement(He,{property:t,name:a,defaultValue:o,onChange:e.onChange});const l=t.type;return l.length>1?n.createElement(Ze,{elementDefinitionTypes:l,...e}):n.createElement(et,{elementDefinitionType:l[0],...e})}function Ze(e){const a=e.elementDefinitionTypes;let o;e.defaultPropertyType&&(o=a.find((t=>t.code===e.defaultPropertyType))),o||(o=a[0]);const[l,c]=n.useState(o);return n.createElement(r.Group,{spacing:"xs",grow:!0,noWrap:!0},n.createElement(r.NativeSelect,{style:{width:"200px"},defaultValue:l?.code,onChange:e=>{c(a.find((t=>t.code===e.currentTarget.value)))},data:a.map((e=>({value:e.code,label:e.code})))}),n.createElement(et,{...e,elementDefinitionType:l,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",t.capitalize(l.code)))}}))}function et(e){const a=e.property,o=e.elementDefinitionType.code,l=e.name,c=e.defaultValue;switch(o){case t.PropertyType.SystemString:case t.PropertyType.canonical:case t.PropertyType.string:case t.PropertyType.time:case t.PropertyType.uri:case t.PropertyType.url:return n.createElement(r.TextInput,{id:l,name:l,"data-testid":l,defaultValue:c,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:F(e.outcome,l)});case t.PropertyType.date:return n.createElement(r.TextInput,{type:"date",id:l,name:l,"data-testid":l,defaultValue:c,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)},error:F(e.outcome,l)});case t.PropertyType.dateTime:case t.PropertyType.instant:return n.createElement(De,{name:l,defaultValue:c,onChange:e.onChange,outcome:e.outcome});case t.PropertyType.decimal:case t.PropertyType.integer:case t.PropertyType.positiveInt:case t.PropertyType.unsignedInt:return n.createElement(r.TextInput,{type:"number",step:o===t.PropertyType.decimal?"any":"1",id:l,name:l,"data-testid":l,defaultValue:c,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.valueAsNumber)}});case t.PropertyType.code:return n.createElement(Ie,{property:a,name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.boolean:return n.createElement(r.Checkbox,{id:l,name:l,"data-testid":l,defaultChecked:!!c,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.checked)}});case t.PropertyType.markdown:return n.createElement(r.Textarea,{id:l,name:l,"data-testid":l,defaultValue:c,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}});case t.PropertyType.Address:return n.createElement(s,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Annotation:return n.createElement(h,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Attachment:return n.createElement(x,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.CodeableConcept:return n.createElement(ke,{property:a,name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Coding:return n.createElement(we,{property:a,name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.ContactDetail:return n.createElement(Re,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.ContactPoint:return n.createElement(Ae,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Extension:return n.createElement(Oe,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.HumanName:return n.createElement(Me,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Identifier:return n.createElement(Ne,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Money:return n.createElement($e,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Period:return n.createElement(ze,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Duration:case t.PropertyType.Quantity:return n.createElement(Le,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Range:return n.createElement(Ue,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Ratio:return n.createElement(qe,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Reference:return n.createElement(je,{name:l,defaultValue:c,targetTypes:tt(a),onChange:e.onChange});case t.PropertyType.Timing:return n.createElement(Ye,{name:l,defaultValue:c,onChange:e.onChange});case t.PropertyType.Dosage:case t.PropertyType.UsageContext:return n.createElement(nt,{typeName:o,defaultValue:c,onChange:e.onChange,outcome:e.outcome});default:return n.createElement(nt,{typeName:t.buildTypeName(a.path?.split(".")),defaultValue:c,onChange:e.onChange,outcome:e.outcome})}}function tt(e){return e?.type?.[0]?.targetProfile?.map((e=>e.split("/").pop()))}function nt(e){const[a,o]=n.useState(e.defaultValue??{});function l(t){o(t),e.onChange&&e.onChange(t)}const c=e.typeName,i=t.globalSchema.types[c];if(!i)return n.createElement("div",null,c," not implemented");const u={type:c,value:a};return n.createElement(r.Stack,null,Object.entries(i.properties).map((r=>{const o=r[0];if("id"===o||Y.indexOf(o)>=0)return null;const c=r[1];if(!c.type)return null;const[i,s]=fe(u,o);return 1===c.type.length&&"boolean"===c.type[0].code?n.createElement(ge,{key:o,title:t.getPropertyDisplayName(o),description:c.definition,htmlFor:o},n.createElement(Xe,{property:c,name:o,defaultValue:i,defaultPropertyType:s,outcome:e.outcome,onChange:(e,t)=>{l(Ce(a,o,t??o,r[1],e))}})):n.createElement(Ee,{key:o,title:t.getPropertyDisplayName(o),description:c.definition,htmlFor:o,outcome:e.outcome},n.createElement(Xe,{property:c,name:o,defaultValue:i,defaultPropertyType:s,outcome:e.outcome,onChange:(e,t)=>{l(Ce(a,o,t??o,r[1],e))}}))})))}const rt=r.createStyles((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 at(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function ot(e){const{classes:t}=rt(),{onChangeMonth:a,onClick:o}=e,[l,c]=n.useState(lt);function i(e){c((t=>{const n=new Date(t.getTime());return n.setMonth(t.getMonth()+e),a(n),n}))}const u=n.useMemo((()=>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:ct(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}(l,e.slots)),[l,e.slots]);return n.createElement("div",null,n.createElement(r.Group,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},n.createElement("p",{style:{flex:1}},at(l)),n.createElement(r.Group,{position:"right",spacing:"xs"},n.createElement(r.Button,{variant:"outline","aria-label":"Previous month",onClick:()=>i(-1)},"<"),n.createElement(r.Button,{variant:"outline","aria-label":"Next month",onClick:()=>i(1)},">"))),n.createElement("table",{className:t.table},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",null,"SUN"),n.createElement("th",null,"MON"),n.createElement("th",null,"TUE"),n.createElement("th",null,"WED"),n.createElement("th",null,"THU"),n.createElement("th",null,"FRI"),n.createElement("th",null,"SAT"))),n.createElement("tbody",null,u.map(((e,t)=>n.createElement("tr",{key:"week-"+t},e.map(((e,t)=>n.createElement("td",{key:"day-"+t},e&&n.createElement(r.Button,{disabled:!e.available,onClick:()=>o(e.date)},e.date.getDate()))))))))))}function lt(){const e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function ct(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 it(e){const{value:a,link:o,...l}=e,c=ve(a);if(!c)return null;const i=t.getDisplayString(c);return o?n.createElement(se,{to:c,...l},i):n.createElement(r.Text,{component:"span",...l},i)}function ut(e){return n.createElement(r.Group,{spacing:"xs"},n.createElement(_e,{size:24,radius:12,value:e.value,link:e.link}),n.createElement(it,{value:e.value,link:e.link}))}const st={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 mt(e){return n.createElement(r.Badge,{color:st[e.status]},e.status)}const dt=r.createStyles((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 pt(e){const a=ve(e.value),o=ve(a?.specimen?.[0]);if(!a)return null;let l="";if(a.presentedForm&&a.presentedForm.length>0){const e=a.presentedForm[0];e.contentType?.startsWith("text/plain")&&e.data&&(l=window.atob(e.data))}if(o?.note)for(const e of o.note)l+=e.text+"\n\n";return n.createElement(r.Stack,null,n.createElement(r.Title,null,"Diagnostic Report"),n.createElement(r.Group,{mt:"md",spacing:30},a.subject&&n.createElement("div",null,n.createElement(r.Text,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),n.createElement(r.Text,null,n.createElement(ut,{value:a.subject,link:!0}))),a.resultsInterpreter&&a.resultsInterpreter.map((e=>n.createElement("div",{key:e.reference},n.createElement(r.Text,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),n.createElement(r.Text,null,n.createElement(ut,{value:e,link:!0}))))),a.issued&&n.createElement("div",null,n.createElement(r.Text,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),n.createElement(r.Text,null,t.formatDateTime(a.issued))),a.status&&n.createElement("div",null,n.createElement(r.Text,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),n.createElement(r.Text,null,t.capitalize(a.status)))),a.result&&n.createElement(ft,{value:a.result}),l&&n.createElement("pre",null,l.trim()))}function ft(e){const{classes:t}=dt();return n.createElement("table",{className:t.table},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",null,"Test"),n.createElement("th",null,"Value"),n.createElement("th",null,"Reference Range"),n.createElement("th",null,"Interpretation"),n.createElement("th",null,"Category"),n.createElement("th",null,"Status"))),n.createElement("tbody",null,e.value?.map(((e,t)=>n.createElement(ht,{key:"obs-"+t,value:e})))))}function ht(e){const{classes:t,cx:r}=dt(),a=ve(e.value);if(!a)return null;const o=function(e){const t=e.interpretation?.[0]?.coding?.[0]?.code;return"AA"===t||"LL"===t||"HH"===t||"A"===t}(a);return n.createElement("tr",{className:r({[t.criticalRow]:o})},n.createElement("td",null,n.createElement(se,{to:a},n.createElement(ee,{value:a.code}))),n.createElement("td",null,n.createElement(gt,{value:a})),n.createElement("td",null,n.createElement(Et,{value:a.referenceRange})),n.createElement("td",null,a.interpretation&&a.interpretation.length>0&&n.createElement(ee,{value:a.interpretation[0]})),n.createElement("td",null,a.category&&a.category.length>0&&n.createElement("ul",null,a.category.map(((e,t)=>n.createElement("li",{key:`category-${t}`},n.createElement(ee,{value:e})))))),n.createElement("td",null,a.status&&n.createElement(mt,{status:a.status})))}function gt(e){const r=e.value;return n.createElement(n.Fragment,null,t.formatObservationValue(r))}function Et(e){const t=e.value&&e.value.length>0&&e.value[0];return t?t.text?n.createElement(n.Fragment,null,t.text):n.createElement(ie,{value:t}):null}const yt=r.createStyles((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 vt(e){const{classes:r}=yt(),a=p(),[o,l]=n.useState();if(n.useEffect((()=>{a.requestSchema(e.original.resourceType).then(l).catch(console.log)}),[a,e.original.resourceType]),!o)return null;const c=o.types[e.original.resourceType];return c?n.createElement("table",{className:r.root},n.createElement("colgroup",null,n.createElement("col",{style:{width:"30%"}}),n.createElement("col",{style:{width:"35%"}}),n.createElement("col",{style:{width:"35%"}})),n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",null,"Property"),n.createElement("th",null,"Before"),n.createElement("th",null,"After"))),n.createElement("tbody",null,Object.entries(c.properties).map((a=>{const o=a[0];if("id"===o||"meta"===o)return null;const l=a[1],[c,i]=fe(t.toTypedValue(e.original),o),[u,s]=fe(t.toTypedValue(e.revised),o);return Ct(c)&&Ct(u)||t.stringify(c)===t.stringify(u)?null:n.createElement("tr",{key:o},n.createElement("td",null,t.getPropertyDisplayName(o)),n.createElement("td",{className:r.removed},n.createElement(pe,{property:l,propertyType:i,value:c,ignoreMissingValues:!0})),n.createElement("td",{className:r.added},n.createElement(pe,{property:l,propertyType:s,value:u,ignoreMissingValues:!0})))})))):null}function Ct(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function Tt(e){const t=p(),r=ve(e.value),[a,o]=n.useState();return n.useEffect((()=>{r&&t.requestSchema(r.resourceType).then(o).catch(console.log)}),[t,r]),a&&r?n.createElement(he,{value:{type:r.resourceType,value:r},ignoreMissingValues:e.ignoreMissingValues}):null}class St extends n.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?n.createElement(r.Alert,{icon:n.createElement(a.IconAlertCircle,{size:16}),title:"Something went wrong",color:"red"},t.normalizeErrorString(this.state.error)):this.props.children}}function bt(e){return n.createElement(I,null,e.children)}function xt(e){const{resource:o,profile:l,padding:c,popupMenuItems:i,...u}=e,s=l??o.meta?.author;return n.createElement(R,{"data-testid":"timeline-item",fill:!0,...u},n.createElement(r.Group,{position:"apart",spacing:8,mx:"xs",my:"sm"},n.createElement(_e,{value:s,link:!0,size:"md"}),n.createElement("div",{style:{flex:1}},n.createElement(r.Text,{size:"sm"},n.createElement(it,{color:"dark",weight:500,value:s,link:!0})),n.createElement(r.Text,{size:"xs"},n.createElement(se,{color:"dimmed",to:e.resource},t.formatDateTime(e.resource.meta?.lastUpdated)),n.createElement(r.Text,{component:"span",color:"dimmed",mx:8},"·"),n.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),i&&n.createElement(r.Menu,{position:"bottom-end",shadow:"md",width:200},n.createElement(r.Menu.Target,null,n.createElement(r.ActionIcon,{radius:"xl","aria-label":`Actions for ${t.getReferenceString(e.resource)}`},n.createElement(a.IconDots,null))),i)),n.createElement(St,null,c&&n.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!c&&n.createElement(n.Fragment,null,e.children)))}function kt(e){e.sort(It)}function It(e,t){const n=wt(e),r=wt(t);return n>r?1:n<r?-1:At(e)-At(t)}function wt(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function At(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 Rt=r.createStyles((e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}})));function Dt(e){const c=o.useNavigate(),i=p(),u=i.getProfile(),s=n.useRef(null),m=ve(e.value),[d,f]=n.useState(),[h,g]=n.useState([]),E=e.buildSearchRequests,y=n.useRef(h);y.current=h;const v=n.useCallback((()=>{if(!m)return g([]),void f({});i.executeBatch(E(m)).then(C).catch(console.log)}),[i,m,E]);function C(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&f(e),e.entry))for(const n of e.entry)n.resource&&t.push(n.resource)}kt(t),t.reverse()}g(t)}function T(e){const t=[...y.current,...e];kt(t),t.reverse(),g(t)}function b(e,t){return i.updateResource({...e,priority:t})}function x(e){b(e,"stat").then(v).catch(console.log)}function k(e){b(e,"routine").then(v).catch(console.log)}function I(e){c(`/${e.resourceType}/${e.id}`)}function w(e){c(`/${e.resourceType}/${e.id}/edit`)}function A(e){c(`/${e.resourceType}/${e.id}/delete`)}function D(e){c(`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`)}return n.useEffect((()=>{v()}),[v]),m?n.createElement(bt,null,e.createCommunication&&n.createElement(R,null,n.createElement(M,{testid:"timeline-form",onSubmit:t=>{var n;n=t.text,m&&e.createCommunication&&i.createResource(e.createCommunication(m,u,n)).then((e=>{T([e])})).catch(console.log);const r=s.current;r&&(r.value="",r.focus())}},n.createElement(r.Group,{spacing:"xs",noWrap:!0,style:{width:"100%"}},n.createElement(_e,{value:u}),n.createElement(r.TextInput,{name:"text",ref:s,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),n.createElement(r.ActionIcon,{type:"submit",radius:"xl",color:"blue",variant:"filled"},n.createElement(a.IconMessage,{size:16})),n.createElement(S,{onUpload:function(r){m&&e.createMedia&&i.createResource(e.createMedia(m,u,r)).then((e=>T([e]))).then((()=>l.updateNotification({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:n.createElement(a.IconCheck,{size:16}),autoClose:2e3}))).catch((e=>l.updateNotification({id:"upload-notification",color:"red",title:"Upload error",message:t.normalizeErrorString(e),icon:n.createElement(a.IconFileAlert,{size:16}),autoClose:2e3})))},onUploadStart:function(){l.showNotification({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,disallowClose:!0})},onUploadProgress:function(e){l.updateNotification({id:"upload-notification",loading:!0,title:"Uploading...",message:$t(e),autoClose:!1,disallowClose:!0})}},(e=>n.createElement(r.ActionIcon,{...e,radius:"xl",color:"blue",variant:"filled"},n.createElement(a.IconCloudUpload,{size:16}))))))),h.map((e=>{if(e.resourceType===m.resourceType&&e.id===m.id)return n.createElement(Vt,{key:e.meta?.versionId,history:d,resource:e,onDetails:D});const t=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return n.createElement(Nt,{key:t,resource:e,onDetails:I});case"Communication":return n.createElement(Ot,{key:t,resource:e,onPin:"stat"!==e.priority?x:void 0,onUnpin:"stat"===e.priority?k:void 0,onDetails:I,onEdit:w,onDelete:A});case"DiagnosticReport":return n.createElement(Ft,{key:t,resource:e,onDetails:I,onEdit:w,onDelete:A});case"Media":return n.createElement(Mt,{key:t,resource:e,onDetails:I,onEdit:w,onDelete:A});default:return n.createElement(xt,{key:t,resource:e,padding:!0},n.createElement(Tt,{value:e,ignoreMissingValues:!0}))}}))):n.createElement(r.Center,{style:{width:"100%",height:"100%"}},n.createElement(r.Loader,null))}function Pt(e){return n.createElement(r.Menu.Dropdown,null,n.createElement(r.Menu.Label,null,"Resource"),e.onPin&&n.createElement(r.Menu.Item,{icon:n.createElement(a.IconPin,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${t.getReferenceString(e.resource)}`},"Pin"),e.onUnpin&&n.createElement(r.Menu.Item,{icon:n.createElement(a.IconPinnedOff,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${t.getReferenceString(e.resource)}`},"Unpin"),e.onDetails&&n.createElement(r.Menu.Item,{icon:n.createElement(a.IconListDetails,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${t.getReferenceString(e.resource)}`},"Details"),e.onEdit&&n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEdit,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${t.getReferenceString(e.resource)}`},"Edit"),e.onDelete&&n.createElement(n.Fragment,null,n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Label,null,"Danger zone"),n.createElement(r.Menu.Item,{color:"red",icon:n.createElement(a.IconTrash,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${t.getReferenceString(e.resource)}`},"Delete")))}function Vt(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?n.createElement(xt,{resource:e.resource,padding:!0,popupMenuItems:n.createElement(Pt,{...e})},n.createElement(vt,{original:t,revised:e.resource})):n.createElement(xt,{resource:e.resource,padding:!0,popupMenuItems:n.createElement(Pt,{...e})},n.createElement("h3",null,"Created"),n.createElement(Tt,{value:e.resource,ignoreMissingValues:!0}))}function Ot(e){const{classes:t}=Rt(),r=!e.resource.priority||"routine"===e.resource.priority?void 0:t.pinnedComment;return n.createElement(xt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:r,popupMenuItems:n.createElement(Pt,{...e})},n.createElement("p",null,e.resource.payload?.[0]?.contentString))}function Mt(e){const t=e.resource.content?.contentType,r=t&&!t.startsWith("image/")&&!t.startsWith("video/")&&"application/pdf"!==t;return n.createElement(xt,{resource:e.resource,padding:!!r,popupMenuItems:n.createElement(Pt,{...e})},n.createElement(C,{value:e.resource.content}))}function Nt(e){return n.createElement(xt,{resource:e.resource,padding:!0,popupMenuItems:n.createElement(Pt,{...e})},n.createElement(r.ScrollArea,null,n.createElement("pre",null,e.resource.outcomeDesc)))}function Ft(e){return n.createElement(xt,{resource:e.resource,padding:!0,popupMenuItems:n.createElement(Pt,{...e})},n.createElement(pt,{value:e.resource}))}function $t(e){if(e.lengthComputable){const t=100*e.loaded/e.total;return`Uploaded: ${zt(e.loaded)} / ${zt(e.total)} ${t.toFixed(2)}%`}return`Uploaded: ${zt(e.loaded)}`}function zt(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 Lt(e){let r;try{r=t.evalFhirPath(e.path,e.resource)}catch(e){return console.warn("FhirPathDisplay:",e),null}if(r.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${r.length} elements [${JSON.stringify(r,null,2)}]`);return n.createElement(pe,{value:r[0]||"",propertyType:e.propertyType})}const Bt={string:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],fulltext:[t.Operator.EQUALS,t.Operator.NOT,t.Operator.CONTAINS,t.Operator.EXACT],token:[t.Operator.EQUALS,t.Operator.NOT],reference:[t.Operator.EQUALS,t.Operator.NOT],numeric:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],quantity:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS],date:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY],datetime:[t.Operator.EQUALS,t.Operator.NOT_EQUALS,t.Operator.GREATER_THAN,t.Operator.LESS_THAN,t.Operator.GREATER_THAN_OR_EQUALS,t.Operator.LESS_THAN_OR_EQUALS,t.Operator.STARTS_AFTER,t.Operator.ENDS_BEFORE,t.Operator.APPROXIMATELY]},Ut={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 qt(e,t){return{...e,filters:t,offset:0,name:void 0}}function _t(e,t){return qt(e,(e.filters||[]).filter((e=>e.code!==t)))}function Gt(e,t,n,r,a){a&&(e=_t(e,t));const o=[];return e.filters&&o.push(...e.filters),o.push({code:t,operator:n,value:r||""}),qt(e,o)}function Qt(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),{...e,filters:n,name:void 0}}function Wt(e,t){return Kt(e,t,-1)}function jt(e,t){return Kt(e,t,0)}function Ht(e,t){return Kt(e,t,1)}function Kt(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),tn(e,t,r,a)}function Yt(e,t){return Zt(e,t,-1)}function Jt(e,t){return Zt(e,t,0)}function Xt(e,t){return Zt(e,t,1)}function Zt(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),tn(e,t,r,a)}function en(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return tn(e,t,n,new Date)}function tn(e,n,r,a){return e=nn(e=_t(e,n),n,t.Operator.GREATER_THAN_OR_EQUALS,r),e=nn(e,n,t.Operator.LESS_THAN_OR_EQUALS,a)}function nn(e,t,n,r){return Gt(e,t,n,r.toISOString())}function rn(e,n,r=!0){return Gt(e,n,t.Operator.MISSING,r.toString())}function an(e,t){return e.offset===t?e:{...e,offset:t,name:void 0}}function on(e,n){return an(e,(n-1)*(e.count??t.DEFAULT_SEARCH_COUNT))}function ln(e,t,n){return t===cn(e)&&void 0!==n&&n===un(e)?e:{...e,sortRules:[{code:t,descending:!!n}],name:void 0}}function cn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function un(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function sn(e){return Bt[e.type]}function mn(e){return Ut[e]??""}function dn(e){let n=e;return n.includes(".")&&(n=n.split(".").pop()),"id"===n?"ID":"versionId"===n?"Version ID":(n=n.replace("[x]",""),n=n.replace(/([A-Z])/g," $1"),n=n.replace(/[-_]/g," "),n=n.replace(/\s+/g," "),n=n.trim(),n.split(/\s/).map(t.capitalize).join(" "))}function pn(e,r){const a=r.name;return"id"===a?e.id:"meta.versionId"===a?e.meta?.versionId:"_lastUpdated"===a?t.formatDateTime(e.meta?.lastUpdated):r.elementDefinition&&`${e.resourceType}.${r.name}`===r.elementDefinition.path?function(e,t){const r=t.path?.split(".")?.pop()?.replaceAll("[x]","")||"",[a,o]=fe({type:e.resourceType,value:e},r);if(!a)return null;return n.createElement(pe,{property:t,propertyType:o,value:a,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,r.elementDefinition):r.searchParams&&1===r.searchParams.length&&r.name===r.searchParams[0].code?function(e,r,a){const o=t.evalFhirPathTyped(r.expression,[{type:e.resourceType,value:e}]);if(!o||0===o.length)return null;if(a)return n.createElement(pe,{propertyType:o[0].type,value:o[0].value,maxWidth:200,ignoreMissingValues:!0,link:!1});return n.createElement(n.Fragment,null,o.map(((e,t)=>n.createElement("span",{key:`${t}-${o.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,r.searchParams[0],r.elementDefinition):null}function fn(e){const[a,o]=n.useState({search:JSON.parse(t.stringify(e.search))}),l=n.useRef(null),c=n.useRef(null);function i(){const e=a.search.fields??[],t=l.current?.value;if(t){const n=[...e,t];o({search:{...a.search,fields:n}})}}function u(){const e=a.search.fields??[],t=c.current?.value;if(t){const n=[...e];n.splice(n.indexOf(t),1),o({search:{...a.search,fields:n}})}}function s(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}if(n.useEffect((()=>{o({search:e.search})}),[e.search]),!e.visible)return null;const m=e.search.resourceType,d=t.globalSchema.types[m],p=a.search.fields??[],f=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(dn(a));if(e.searchParams)for(const a of Object.keys(e.searchParams)){const e=dn(a);n.has(a)||r.has(e)||(t.push(a),n.add(a),r.add(dn(a)))}return t}(d).filter((e=>!p?.includes(e))).sort();return n.createElement(r.Modal,{title:"Fields",closeButtonLabel:"Close",opened:e.visible,onClose:e.onCancel},n.createElement("div",null,n.createElement("table",{style:{margin:"auto"}},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",{colSpan:2,align:"center"},"Available"),n.createElement("th",{colSpan:2,align:"center"},"Selected"))),n.createElement("tbody",null,n.createElement("tr",null,n.createElement("td",{colSpan:2,align:"center"},n.createElement("select",{ref:l,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&i()}(e),onDoubleClick:()=>{i()},"data-testid":"available"},f.map((e=>n.createElement("option",{key:e,value:e},dn(e)))))),n.createElement("td",{colSpan:2,align:"center"},n.createElement("select",{ref:c,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&u()}(e),onDoubleClick:()=>{u()},"data-testid":"selected"},p.map((e=>n.createElement("option",{key:e,value:e},dn(e)))))))),n.createElement("tfoot",null,n.createElement("tr",null,n.createElement("td",{align:"center"},n.createElement(r.Button,{compact:!0,variant:"outline",onClick:i},"Add")),n.createElement("td",{align:"center"},n.createElement(r.Button,{compact:!0,variant:"outline",onClick:u},"Remove")),n.createElement("td",{align:"center"},n.createElement(r.Button,{compact:!0,variant:"outline",onClick:function(){const e=a.search.fields??[],t=c.current?.value;if(t){const n=[...e],r=n.indexOf(t);s(n,r,r-1),o({search:{...a.search,fields:n}})}}},"Up")),n.createElement("td",{align:"center"},n.createElement(r.Button,{compact:!0,variant:"outline",onClick:function(){const e=a.search.fields??[],t=c.current?.value;if(t){const n=[...e],r=n.indexOf(t);s(n,r,r+1),o({search:{...a.search,fields:n}})}}},"Down")))))),n.createElement(r.Button,{onClick:()=>e.onOk(a.search)},"OK"))}function hn(e){const{resourceType:r,filter:a}=e,o=t.globalSchema.types[r]?.searchParams?.[a.code];if(o){if("reference"===o.type)return n.createElement(it,{value:{reference:a.value}});const e=t.getSearchParameterDetails(r,o);if("_lastUpdated"===a.code||e.type===t.SearchParameterType.DATETIME)return n.createElement(n.Fragment,null,t.formatDateTime(a.value))}return n.createElement(n.Fragment,null,a.value)}function gn(e){const a="filter-value";switch(t.getSearchParameterDetails(e.resourceType,e.searchParam).type){case t.SearchParameterType.REFERENCE:return n.createElement(je,{name:a,defaultValue:{reference:e.defaultValue},targetTypes:e.searchParam?.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case t.SearchParameterType.BOOLEAN:return n.createElement(r.Checkbox,{name:a,"data-testid":a,defaultChecked:"true"===e.defaultValue,onChange:t=>e.onChange(t.currentTarget.checked.toString())});case t.SearchParameterType.DATE:return n.createElement(r.TextInput,{type:"date",name:a,"data-testid":a,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case t.SearchParameterType.DATETIME:return n.createElement(De,{name:a,defaultValue:e.defaultValue,onChange:e.onChange});case t.SearchParameterType.NUMBER:return n.createElement(r.TextInput,{type:"number",name:a,"data-testid":a,defaultValue:e.defaultValue,onChange:t=>e.onChange(t.currentTarget.value)});case t.SearchParameterType.QUANTITY:return n.createElement(Le,{name:a,defaultValue:En(e.defaultValue),onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return n.createElement(r.TextInput,{name:a,"data-testid":a,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:t=>e.onChange(t.currentTarget.value),placeholder:"Search value"})}}function En(e){if(e){const[t,n,r]=e.split("|");if(t)return{value:parseFloat(t),system:n,unit:r}}}function yn(e){const[a,o]=n.useState(JSON.parse(t.stringify(e.search))),[l,c]=n.useState(-1),i=n.useRef(a);if(i.current=a,n.useEffect((()=>{o(JSON.parse(t.stringify(e.search)))}),[e.search]),!e.visible)return null;const u=e.search.resourceType,s=t.globalSchema.types[u].searchParams,m=a.filters||[];return n.createElement(r.Modal,{title:"Filters",closeButtonLabel:"Close",size:900,opened:e.visible,onClose:e.onCancel},n.createElement("div",null,n.createElement("table",null,n.createElement("colgroup",null,n.createElement("col",{style:{width:200}}),n.createElement("col",{style:{width:200}}),n.createElement("col",{style:{width:380}}),n.createElement("col",{style:{width:120}})),n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",null,"Field"),n.createElement("th",null,"Operation"),n.createElement("th",null,"Value"),n.createElement("th",null,"Actions"))),n.createElement("tbody",null,m.map(((e,t)=>t===l?n.createElement(Cn,{key:`filter-${t}-${m.length}-input`,resourceType:u,searchParams:s,defaultValue:e,okText:"Save",onOk:e=>{const n=[...m];n[t]=e,o(qt(i.current,n)),c(-1)},onCancel:()=>c(-1)}):n.createElement(vn,{key:`filter-${t}-${m.length}-display`,resourceType:u,searchParams:s,filter:e,onEdit:()=>c(t),onDelete:()=>o(Qt(i.current,t))}))),n.createElement(Cn,{resourceType:u,searchParams:s,okText:"Add",onOk:function(e){o(Gt(i.current,e.code,e.operator,e.value))}})))),n.createElement(r.Group,{position:"right",mt:"xl"},n.createElement(r.Button,{onClick:()=>e.onOk(i.current)},"OK")))}function vn(e){const{filter:t}=e;return n.createElement("tr",null,n.createElement("td",null,dn(t.code)),n.createElement("td",null,mn(t.operator)),n.createElement("td",null,n.createElement(hn,{resourceType:e.resourceType,filter:t})),n.createElement("td",null,n.createElement(r.Button,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),n.createElement(r.Button,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Cn(e){const[t,a]=n.useState(e.defaultValue??{}),o=n.useRef(t);o.current=t;const l=e.searchParams[t.code],c=l&&sn(l);return n.createElement("tr",null,n.createElement("td",null,n.createElement(r.NativeSelect,{"data-testid":"filter-field",defaultValue:o.current.code,onChange:e=>{return t=e.currentTarget.value,void a({...o.current,code:t});var t},data:Object.keys(e.searchParams).map((e=>({value:e,label:dn(e)})))})),n.createElement("td",null,c&&n.createElement(r.NativeSelect,{"data-testid":"filter-operation",defaultValue:t.operator,onChange:e=>{return t=e.currentTarget.value,void a({...o.current,operator:t});var t},data:["",...c.map((e=>({value:e,label:mn(e)})))]})),n.createElement("td",null,l&&t.operator&&n.createElement(gn,{resourceType:e.resourceType,searchParam:l,defaultValue:t.value,onChange:function(e){a({...o.current,value:e})}})),n.createElement("td",null,t.code&&t.operator&&t.value&&n.createElement(r.Button,{compact:!0,variant:"outline",onClick:()=>{e.onOk(o.current),a({})}},e.okText),e.onCancel&&n.createElement(r.Button,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}function Tn(e){const[t,a]=n.useState(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function o(){e.onOk({...e.filter,value:t})}return n.createElement(r.Modal,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},n.createElement("div",{style:{width:500}},n.createElement(M,{onSubmit:o},n.createElement(gn,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:t,autoFocus:!0,onChange:a}))),n.createElement(r.Button,{onClick:o},"OK"))}function Sn(e){if(!e.searchParams)return null;function t(t){e.onChange(t)}return 1===e.searchParams.length?n.createElement(bn,{search:e.search,searchParam:e.searchParams[0],onSort:function(n,r){t(ln(e.search,n.code,r))},onPrompt:function(t,n){e.onPrompt(t,{code:t.code,operator:n,value:""})},onChange:t,onClear:function(n){t(_t(e.search,n.code))}}):n.createElement(r.Menu.Dropdown,null,e.searchParams.map((e=>n.createElement(r.Menu.Item,{key:e.code},dn(e.code)))))}function bn(e){switch(e.searchParam.type){case"date":return n.createElement(xn,{...e});case"number":case"quantity":return n.createElement(kn,{...e});case"reference":return n.createElement(In,{...e});case"string":case"token":case"uri":return n.createElement(wn,{...e});default:return n.createElement(n.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function xn(e){const{searchParam:o}=e,l=o.code;return n.createElement(r.Menu.Dropdown,null,n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSortAscending,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSortDescending,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqual,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.EQUALS)},"Equals..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.NOT_EQUALS)},"Does not equal..."),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconMathLower,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.ENDS_BEFORE)},"Before..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconMathGreater,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.STARTS_AFTER)},"After..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconBracketsContain,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.EQUALS)},"Between..."),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconCalendar,{size:14}),onClick:()=>e.onChange(Ht(e.search,l))},"Tomorrow"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconCalendar,{size:14}),onClick:()=>e.onChange(jt(e.search,l))},"Today"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconCalendar,{size:14}),onClick:()=>e.onChange(Wt(e.search,l))},"Yesterday"),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconCalendar,{size:14}),onClick:()=>e.onChange(Xt(e.search,l))},"Next Month"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconCalendar,{size:14}),onClick:()=>e.onChange(Jt(e.search,l))},"This Month"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconCalendar,{size:14}),onClick:()=>e.onChange(Yt(e.search,l))},"Last Month"),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconCalendar,{size:14}),onClick:()=>e.onChange(en(e.search,l))},"Year to date"),n.createElement(An,{...e}))}function kn(e){const{searchParam:o}=e;return n.createElement(r.Menu.Dropdown,null,n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSortAscending,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSortDescending,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqual,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.EQUALS)},"Equals..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.NOT_EQUALS)},"Does not equal..."),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconMathGreater,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.GREATER_THAN)},"Greater than..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSettings,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconMathLower,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.LESS_THAN)},"Less than..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSettings,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),n.createElement(An,{...e}))}function In(e){const{searchParam:o}=e;return n.createElement(r.Menu.Dropdown,null,n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqual,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.EQUALS)},"Equals..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.NOT)},"Does not equal..."),n.createElement(An,{...e}))}function wn(e){const{searchParam:o}=e;return n.createElement(r.Menu.Dropdown,null,n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSortAscending,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconSortDescending,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqual,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.EQUALS)},"Equals..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconEqualNot,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.NOT)},"Does not equal..."),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconBucket,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.CONTAINS)},"Contains..."),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconBucketOff,{size:14}),onClick:()=>e.onPrompt(o,t.Operator.EQUALS)},"Does not contain..."),n.createElement(An,{...e}))}function An(e){const{searchParam:t}=e,o=t.code;return n.createElement(n.Fragment,null,n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconBleach,{size:14}),onClick:()=>e.onChange(rn(e.search,o))},"Missing"),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconBleachOff,{size:14}),onClick:()=>e.onChange(rn(e.search,o,!1))},"Not missing"),n.createElement(r.Menu.Divider,null),n.createElement(r.Menu.Item,{icon:n.createElement(a.IconX,{size:14}),onClick:()=>e.onClear(t)},"Clear filters"))}function Rn(e,n){if("_lastUpdated"===n)return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if("meta.versionId"===n)return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};const r=t.globalSchema.types[e],a=r.properties[n],o=r.searchParams?.[n.toLowerCase()];if(a&&o)return{name:n,elementDefinition:a,searchParams:[o]};if(a){let t;if(r.searchParams){const a=`${e}.${n.replaceAll("[x]","")}`;t=Object.values(r.searchParams).filter((e=>e.expression?.includes(a))),0===t.length&&(t=void 0)}return{name:n,elementDefinition:a,searchParams:t}}if(o){return{name:n,elementDefinition:t.getSearchParameterDetails(e,o).elementDefinition,searchParams:[o]}}return{name:n}}class Dn extends Event{constructor(e){super("change"),this.definition=e}}class Pn extends Event{constructor(e){super("load"),this.response=e}}class Vn extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}const On=r.createStyles((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 Mn(e){const{classes:o}=On(),l=p(),[c,i]=n.useState(!1),[u,s]=n.useState(),{search:m,onLoad:d}=e,[f,h]=n.useState({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),y=n.useRef(f);function v(t){e.onChange&&e.onChange(new Dn(t))}function C(t,n){E(t.target)||2!==t.button&&(g(t),1!==t.button&&e.onClick&&e.onClick(new Vn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Vn(n,t)))}y.current=f,n.useEffect((()=>{s(void 0),l.search(m.resourceType,t.formatSearchQuery({...m,total:"accurate",fields:void 0})).then((e=>{h({...y.current,searchResponse:e}),d&&d(new Pn(e))})).catch((e=>{h({...y.current,searchResponse:void 0}),s(e)}))}),[l,m,d]),n.useEffect((()=>{i(!1),l.requestSchema(e.search.resourceType).then((()=>i(!0))).catch(console.log)}),[l,e.search.resourceType]);if(!(c&&t.globalSchema?.types?.[e.search.resourceType]))return n.createElement(r.Center,{style:{width:"100%",height:"100%"}},n.createElement(r.Loader,null));const T=e.checkboxesEnabled,S=function(e){const t=e.resourceType,n=[];for(const r of e.fields||["id","_lastUpdated"])n.push(Rn(t,r));return n}(m),b=m.resourceType,x=f.searchResponse,k=x?.entry,w=k?.map((e=>e.resource)),A="subtle",R="gray",D=16,P=window.innerWidth<768;return n.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&n.createElement(r.Group,{position:"apart",mb:"xl"},n.createElement(r.Group,{spacing:2},n.createElement(r.Button,{compact:!0,variant:A,color:R,leftIcon:n.createElement(a.IconFilter,{size:D}),onClick:()=>h({...y.current,fieldEditorVisible:!0})},"Fields"),n.createElement(r.Button,{compact:!0,variant:A,color:R,leftIcon:n.createElement(a.IconColumns,{size:D}),onClick:()=>h({...y.current,filterEditorVisible:!0})},"Filters"),e.onNew&&n.createElement(r.Button,{compact:!0,variant:A,color:R,leftIcon:n.createElement(a.IconFilePlus,{size:D}),onClick:e.onNew},"New..."),!P&&e.onExport&&n.createElement(r.Button,{compact:!0,variant:A,color:R,leftIcon:n.createElement(a.IconTableExport,{size:D}),onClick:e.onExport},"Export..."),!P&&e.onDelete&&n.createElement(r.Button,{compact:!0,variant:A,color:R,leftIcon:n.createElement(a.IconTrash,{size:D}),onClick:()=>e.onDelete(Object.keys(f.selected))},"Delete..."),!P&&e.onBulk&&n.createElement(r.Button,{compact:!0,variant:A,color:R,leftIcon:n.createElement(a.IconBoxMultiple,{size:D}),onClick:()=>e.onBulk(Object.keys(f.selected))},"Bulk...")),x&&n.createElement(r.Text,{size:"xs",color:"dimmed"},function(e,t){return Math.min(t,(e.offset??0)+1)}(m,x.total),"-",function(e,n){return Math.min(n,((e.offset??0)+1)*(e.count??t.DEFAULT_SEARCH_COUNT))}(m,x.total)," of"," ",x.total?.toLocaleString())),n.createElement(r.Table,{className:o.table},n.createElement("thead",null,n.createElement("tr",null,T&&n.createElement("th",null,n.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){const e=y.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=y.current?.searchResponse;t&&r?.entry&&r.entry.forEach((e=>{e.resource?.id&&(n[e.resource.id]=!0)})),h({...y.current,selected:n})}(e)})),S.map((t=>n.createElement("th",{key:t.name},n.createElement(r.Menu,{shadow:"md",width:240,position:"bottom-end"},n.createElement(r.Menu.Target,null,n.createElement(r.UnstyledButton,{className:o.control},n.createElement(r.Group,{position:"apart",noWrap:!0},n.createElement(r.Text,{weight:500,size:"sm"},dn(t.name)),n.createElement(r.Center,{className:o.icon},n.createElement(a.IconAdjustmentsHorizontal,{size:14,stroke:1.5}))))),n.createElement(Sn,{search:e.search,searchParams:t.searchParams,onPrompt:(e,t)=>{h({...y.current,filterDialogVisible:!0,filterDialogSearchParam:e,filterDialogFilter:t})},onChange:e=>{v(e)}})))))),!e.hideFilters&&n.createElement("tr",null,T&&n.createElement("th",null),S.map((t=>n.createElement("th",{key:t.name},t.searchParams&&n.createElement(Fn,{resourceType:b,searchParams:t.searchParams,filters:e.search.filters})))))),n.createElement("tbody",null,w?.map((e=>e&&n.createElement("tr",{key:e.id,className:o.tr,"data-testid":"search-control-row",onClick:t=>C(t,e),onAuxClick:t=>C(t,e)},T&&n.createElement("td",null,n.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!f.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,r={...y.current.selected};n?r[t]=!0:delete r[t],h({...y.current,selected:r})}(t,e.id)})),S.map((t=>n.createElement("td",{key:t.name},pn(e,t))))))))),0===w?.length&&n.createElement(I,null,n.createElement(r.Center,null,n.createElement(r.Text,{size:"xl",color:"dimmed"},"No results"))),void 0!==x?.total&&x.total>0&&n.createElement(r.Center,{m:"md",p:"md"},n.createElement(r.Pagination,{page:$n(m),total:zn(m,x.total),onChange:e=>v(on(m,e)),getItemAriaLabel:e=>{switch(e){case"prev":return"Previous page";case"next":return"Next page";default:return}}})),u&&n.createElement("div",{"data-testid":"search-error"},n.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),n.createElement(fn,{search:e.search,visible:y.current.fieldEditorVisible,onOk:e=>{v(e),h({...y.current,fieldEditorVisible:!1})},onCancel:()=>{h({...y.current,fieldEditorVisible:!1})}}),n.createElement(yn,{search:e.search,visible:y.current.filterEditorVisible,onOk:e=>{v(e),h({...y.current,filterEditorVisible:!1})},onCancel:()=>{h({...y.current,filterEditorVisible:!1})}}),n.createElement(Tn,{key:f.filterDialogSearchParam?.code,visible:y.current.filterDialogVisible,title:"Input",resourceType:b,searchParam:f.filterDialogSearchParam,filter:f.filterDialogFilter,defaultValue:"",onOk:t=>{v(Gt(e.search,t.code,t.operator,t.value)),h({...y.current,filterDialogVisible:!1})},onCancel:()=>{h({...y.current,filterDialogVisible:!1})}}))}const Nn=n.memo(Mn);function Fn(e){const t=(e.filters??[]).filter((t=>e.searchParams.find((e=>e.code===t.code))));return 0===t.length?n.createElement("span",null,"no filters"):n.createElement(n.Fragment,null,t.map(((r,a)=>n.createElement("div",{key:`filter-${a}-${t.length}`},mn(r.operator)," ",n.createElement(hn,{resourceType:e.resourceType,filter:r})))))}function $n(e){return Math.floor((e.offset||0)/(e.count||t.DEFAULT_SEARCH_COUNT))+1}function zn(e,n){const r=e.count||t.DEFAULT_SEARCH_COUNT;return Math.ceil(n/r)}function Ln(e){const t=p(),[a,o]=n.useState(),[l,c]=n.useState(),{query:i,fields:u}=e,[s,m]=n.useState(),[d,f]=n.useState({}),h=n.useRef();h.current=s;const y=n.useRef({});function v(t,n){E(t.target)||(g(t),1!==t.button&&e.onClick&&e.onClick(new Vn(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new Vn(n,t)))}y.current=d,n.useEffect((()=>{c(void 0),t.graphql(i).then(m).catch(c)}),[t,i]),n.useEffect((()=>{t.requestSchema(e.resourceType).then((e=>{o({...e})})).catch(console.log)}),[t,e.resourceType]);const C=a?.types?.[e.resourceType];if(!C)return n.createElement(r.Loader,null);const T=e.checkboxesEnabled;return n.createElement("div",{onContextMenu:e=>g(e),"data-testid":"search-control"},n.createElement(r.Table,null,n.createElement("thead",null,n.createElement("tr",null,T&&n.createElement("th",null,n.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){const e=h.current?.data?.ResourceList;if(!e||0===e.length)return!1;for(const t of e)if(t?.id&&!y.current[t.id])return!1;return!0}(),onChange:e=>function(e){e.stopPropagation();const t=e.target.checked,n={},r=h.current?.data?.ResourceList;t&&r&&r.forEach((e=>{e?.id&&(n[e.id]=!0)})),f(n)}(e)})),u.map((e=>n.createElement("th",{key:e.name},e.name))))),n.createElement("tbody",null,s?.data?.ResourceList?.map((e=>e&&n.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>v(t,e),onAuxClick:t=>v(t,e)},T&&n.createElement("td",null,n.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!d[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,r={...y.current};n?r[t]=!0:delete r[t],f(r)}(t,e.id)})),u.map((t=>n.createElement("td",{key:t.name},n.createElement(Lt,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===s?.data?.ResourceList?.length&&n.createElement("div",{"data-testid":"empty-search"},"No results"),l&&n.createElement("div",{"data-testid":"search-error"},n.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(l,void 0,2))),e.onBulk&&n.createElement(r.Button,{onClick:()=>e.onBulk(Object.keys(y.current))},"Bulk..."))}const Bn=n.memo(Ln),Un=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];const qn=r.createStyles((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 _n(e){const{classes:t}=qn(),a=n.useRef();function o(t){e.onChange(a.current.map((e=>e.id===t.id?t:e)))}return a.current=e.actions,n.createElement("div",{className:t.section},e.actions.map((t=>n.createElement("div",{key:t.id},n.createElement(Gn,{action:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:o,onRemove:()=>{return n=t,void e.onChange(a.current.filter((e=>e!==n)));var n}})))),n.createElement("div",{className:t.bottomActions},n.createElement(r.Anchor,{href:"#",onClick:t=>{var n;g(t),n={id:Xn()},e.onChange([...a.current,n]),e.setSelectedKey(n.id)}},"Add action")))}function Gn(e){const{classes:t,cx:a}=qn(),{action:o}=e,l=function(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task";return}(o),c=e.selectedKey===e.action.id,i=e.hoverKey===e.action.id;const u=a(t.section,{[t.editing]:c,[t.hovering]:i&&!c});return n.createElement("div",{"data-testid":o.id,className:u,onClick:function(t){t.stopPropagation(),e.setSelectedKey(e.action.id)},onMouseOver:function(t){g(t),e.setHoverKey(e.action.id)}},c?n.createElement(jn,{action:o,actionType:l,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):n.createElement(Wn,{action:o,actionType:l}),n.createElement("div",{className:t.bottomActions},n.createElement(r.Anchor,{href:"#",onClick:t=>{t.preventDefault(),e.onRemove()}},"Remove")))}const Qn={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Wn(e){const{action:t,actionType:r}=e,[a,o]=Yn(t);return n.createElement("div",null,n.createElement("div",null,t.title||"Untitled"," ",r&&`(${r})`),t.definitionCanonical&&n.createElement("div",null,n.createElement(me,{value:{reference:t.definitionCanonical}})),a&&n.createElement("div",null,n.createElement(pe,{property:Qn,propertyType:o,value:a})))}function jn(e){const{action:t}=e,[a,o]=n.useState(e.actionType);function l(n,r){e.onChange({...t,[n]:r})}return n.createElement(r.Stack,{spacing:"xl"},n.createElement(r.TextInput,{name:`actionTitle-${t.id}`,label:"Title",defaultValue:t.title,onChange:e=>l("title",e.currentTarget.value)}),n.createElement(r.TextInput,{name:`actionDescription-${t.id}`,label:"Description",defaultValue:t.description,onChange:e=>l("description",e.currentTarget.value)}),n.createElement(r.NativeSelect,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${t.id}`,defaultValue:a,onChange:e=>o(e.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),t.action&&t.action.length>0&&n.createElement(_n,{actions:t.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:e=>l("action",e)}),(()=>{switch(a){case"appointment":return n.createElement(Hn,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:t,onChange:e.onChange});case"lab":return n.createElement(Hn,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});case"questionnaire":return n.createElement(Hn,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:t,onChange:e.onChange});case"task":return n.createElement(Hn,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:t,onChange:e.onChange});default:return null}})(),n.createElement(Ee,{title:"Timing",description:"When the action should take place."},n.createElement(Kn,{name:"timing-"+t.id,action:t,onChange:e.onChange})))}function Hn(e){const{id:r,definitionCanonical:a}=e.action,o=a?.startsWith(e.resourceType+"/")?{reference:a}:void 0;return n.createElement(Qe,{name:r,resourceType:e.resourceType,defaultValue:o,loadOnFocus:!0,onChange:n=>{n?e.onChange({...e.action,definitionCanonical:t.getReferenceString(n)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Kn(e){const t=e.action,r="timing",[a,o]=Yn(t);return n.createElement(Xe,{property:Qn,name:"timing[x]",defaultValue:a,defaultPropertyType:o,onChange:(n,a)=>{e.onChange(Ce(t,r,a??r,Qn,n))}})}function Yn(e){return fe({type:"PlanDefinitionAction",value:e},"timing")}let Jn=1;function Xn(e){if(e){if(e.startsWith("id-")){const t=parseInt(e.substring(3));isNaN(t)||(Jn=Math.max(Jn,t+1))}return e}return"id-"+Jn++}function Zn(e){if(e)return e.map((e=>({...e,id:Xn(e.id),action:Zn(e.action)})))}var er;function tr(e){return"choice"===e.type||"open-choice"===e.type}function nr(e){const a=p(),o=a.getProfile(),[l,c]=n.useState(),i=ve(e.questionnaire),[u,s]=n.useState(),[m,d]=n.useState({});return n.useEffect((()=>{a.requestSchema("Questionnaire").then((()=>a.requestSchema("QuestionnaireResponse"))).then(c).catch(console.log)}),[a]),n.useEffect((()=>{s(i?function(e){const n={resourceType:"QuestionnaireResponse",questionnaire:t.getReferenceString(e),item:ir(e.item)};return n}(i):void 0)}),[i]),l&&i?n.createElement(M,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&u&&e.onSubmit({...u,questionnaire:t.getReferenceString(i),subject:e.subject,source:t.createReference(o),authored:(new Date).toISOString()})}},i.title&&n.createElement(r.Title,null,i.title),i.item&&n.createElement(rr,{items:i.item,answers:m,onChange:function(e){const n={resourceType:"QuestionnaireResponse",status:"completed",item:e};s(n),d(t.getQuestionnaireAnswers(n))}}),n.createElement(r.Group,{position:"right",mt:"xl"},n.createElement(r.Button,{type:"submit"},e.submitButtonText||"OK"))):null}function rr(t){const[a,o]=n.useState(ir(t.items));function l(e,n){const r=a.slice();r[e]=n,o(r),t.onChange(r)}return n.createElement(r.Stack,null,t.items.map(((a,o)=>{if(!mr(a,t.answers))return null;if(a.type===e.QuestionnaireItemType.display)return n.createElement("p",{key:a.linkId},a.text);if(a.type===e.QuestionnaireItemType.group)return n.createElement(ar,{key:a.linkId,item:a,answers:t.answers,onChange:e=>l(o,e)});if(a.type===e.QuestionnaireItemType.boolean){const e=a.initial&&a.initial.length>0?a.initial[0]:void 0;return n.createElement(ge,{key:a.linkId,title:a.text,htmlFor:a.linkId},n.createElement(r.Checkbox,{id:a.linkId,name:a.linkId,defaultChecked:e?.valueBoolean,onChange:e=>l(o,{linkId:a.linkId,text:a.text,answer:[{valueBoolean:e.currentTarget.checked}]})}))}return n.createElement(Ee,{key:a.linkId,htmlFor:a.linkId,title:a.text||""},n.createElement(ar,{item:a,answers:t.answers,onChange:e=>l(o,e)}))})))}function ar(t){const a=t.item,o=a.type;if(!o)return null;const l=a.linkId;if(!l)return null;const c=a.initial&&a.initial.length>0?a.initial[0]:void 0;function i(e){t.onChange({linkId:a.linkId,text:a.text,answer:[e]})}switch(o){case e.QuestionnaireItemType.group:return n.createElement("div",null,n.createElement("h3",null,a.text),a.item&&n.createElement(rr,{items:a.item,answers:t.answers,onChange:function(e){t.onChange({linkId:a.linkId,text:a.text,item:e})}}));case e.QuestionnaireItemType.boolean:return n.createElement(r.Checkbox,{id:l,name:l,defaultChecked:c?.valueBoolean,onChange:e=>i({valueBoolean:e.currentTarget.checked})});case e.QuestionnaireItemType.decimal:return n.createElement(r.TextInput,{type:"number",step:"any",id:l,name:l,defaultValue:c?.valueDecimal,onChange:e=>i({valueDecimal:e.currentTarget.valueAsNumber})});case e.QuestionnaireItemType.integer:return n.createElement(r.TextInput,{type:"number",step:1,id:l,name:l,defaultValue:c?.valueInteger,onChange:e=>i({valueInteger:e.currentTarget.valueAsNumber})});case e.QuestionnaireItemType.date:return n.createElement(r.TextInput,{type:"date",id:l,name:l,defaultValue:c?.valueDate,onChange:e=>i({valueDate:e.currentTarget.value})});case e.QuestionnaireItemType.dateTime:return n.createElement(De,{name:l,defaultValue:c?.valueDateTime,onChange:e=>i({valueDateTime:e})});case e.QuestionnaireItemType.time:return n.createElement(r.TextInput,{type:"time",id:l,name:l,defaultValue:c?.valueTime,onChange:e=>i({valueTime:e.currentTarget.value})});case e.QuestionnaireItemType.string:case e.QuestionnaireItemType.url:return n.createElement(r.TextInput,{id:l,name:l,defaultValue:c?.valueString,onChange:e=>i({valueString:e.currentTarget.value})});case e.QuestionnaireItemType.text:return n.createElement(r.Textarea,{id:l,name:l,defaultValue:c?.valueString,onChange:e=>i({valueString:e.currentTarget.value})});case e.QuestionnaireItemType.attachment:return n.createElement(x,{name:l,defaultValue:c?.valueAttachment,onChange:e=>i({valueAttachment:e})});case e.QuestionnaireItemType.reference:return n.createElement(je,{name:l,defaultValue:c?.valueReference,onChange:e=>i({valueReference:e})});case e.QuestionnaireItemType.quantity:return n.createElement(Le,{name:l,defaultValue:c?.valueQuantity,onChange:e=>i({valueQuantity:e})});case e.QuestionnaireItemType.choice:case e.QuestionnaireItemType.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))}(a)?n.createElement(or,{name:l,item:a,initial:c,onChangeAnswer:i}):n.createElement(cr,{name:l,item:a,initial:c,onChangeAnswer:i})}return null}function or(e){const{name:a,item:o,initial:l}=e,c=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value"),i=[""];if(o.answerOption)for(const e of o.answerOption){const n=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:e},"value");i.push(lr(n))}return n.createElement(r.NativeSelect,{id:a,name:a,onChange:n=>{const r=n.currentTarget.selectedIndex;if(0===r)return void e.onChangeAnswer({});const a=o.answerOption[r-1],l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:a},"value"),c="value"+t.capitalize(l.type);e.onChangeAnswer({[c]:l.value})},defaultValue:lr(c),data:i})}function lr(e){if(e)return"CodeableConcept"===e.type?e.value.coding[0].display:"Coding"===e.type?e.value.display:e.value.toString()}function cr(e){const{name:a,item:o,initial:l,onChangeAnswer:c}=e,i=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=t.getTypedPropertyValue({type:"QuestionnaireItemInitial",value:l},"value"),s=[];let m;if(o.answerOption)for(let e=0;e<o.answerOption.length;e++){const n=o.answerOption[e],r=`${a}-option-${e}`,l=t.getTypedPropertyValue({type:"QuestionnaireItemAnswerOption",value:n},"value");u&&t.stringify(l)===t.stringify(u)&&(m=r),s.push([r,l])}return n.createElement(r.Radio.Group,{name:a,orientation:"vertical",defaultValue:m,onChange:e=>{const n=s.find((t=>t[0]===e));if(n){const e=n[1],r="value"+t.capitalize(e.type);c({[r]:e.value})}}},s.map((([e,t])=>n.createElement(r.Radio,{key:e,id:e,value:e,label:n.createElement(pe,{property:i,propertyType:t.type,value:t.value})}))))}function ir(e){return e?.map(ur)??[]}function ur(e){return{linkId:e.linkId,text:e.text,item:ir(e.item),answer:e.initial?.map(sr)??[]}}function sr(e){return{...e}}function mr(e,n){if(!e.enableWhen)return!0;const r=e.enableBehavior||"any";for(const a of e.enableWhen){const e=t.getTypedPropertyValue({type:"QuestionnaireItemEnableWhen",value:a},"answer[x]"),o=t.getTypedPropertyValue({type:"QuestionnaireResponseItemAnswer",value:n[a.question]},"value[x]"),l=t.deepEquals(e,o);if("any"===r&&l)return!0;if("all"===r&&!l)return!1}return"any"!==r}e.QuestionnaireItemType=void 0,(er=e.QuestionnaireItemType||(e.QuestionnaireItemType={})).group="group",er.display="display",er.question="question",er.boolean="boolean",er.decimal="decimal",er.integer="integer",er.date="date",er.dateTime="dateTime",er.time="time",er.string="string",er.text="text",er.url="url",er.choice="choice",er.openChoice="open-choice",er.attachment="attachment",er.reference="reference",er.quantity="quantity";const dr=r.createStyles((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 pr(t){const{classes:a,cx:o}=dr(),l=t.item,c=t.item,i="resourceType"in t.item,u=i||c.type===e.QuestionnaireItemType.group,s=c.linkId??"[untitled]",m=t.selectedKey===t.item.id,d=t.hoverKey===t.item.id,p=n.useRef();function f(e){const n=p.current;t.onChange({...n,item:n.item?.map((t=>t.id===e.id?e:t))})}function h(e){t.onChange({...t.item,item:[...t.item?.item??[],e]})}function E(e,n){t.onChange({...p.current,[e]:n})}p.current=t.item;const y=o(a.section,{[a.editing]:m,[a.hovering]:d&&!m});return n.createElement("div",{"data-testid":c.linkId,className:y,onClick:function(e){g(e),t.setSelectedKey(t.item.id)},onMouseOver:function(e){g(e),t.setHoverKey(t.item.id)}},n.createElement("div",{className:a.questionBody},m?n.createElement(n.Fragment,null,i&&n.createElement(r.TextInput,{size:"xl",defaultValue:l.title,onChange:e=>E("title",e.currentTarget.value)}),!i&&n.createElement(r.Textarea,{autosize:!0,minRows:2,defaultValue:c.text,onChange:e=>E("text",e.currentTarget.value)}),tr(c)&&n.createElement(fr,{options:c.answerOption,onChange:e=>E("answerOption",e)})):n.createElement(n.Fragment,null,l.title&&n.createElement(r.Title,null,l.title),c.text&&n.createElement("div",null,c.text),!u&&n.createElement(ar,{item:c,answers:{},onChange:()=>{}}))),c.item&&c.item.map((e=>n.createElement("div",{key:e.id},n.createElement(pr,{item:e,selectedKey:t.selectedKey,setSelectedKey:t.setSelectedKey,hoverKey:t.hoverKey,setHoverKey:t.setHoverKey,onChange:f,onRemove:()=>{return n=e,void t.onChange({...t.item,item:t.item?.item?.filter((e=>e!==n))});var n}})))),!u&&n.createElement("div",{className:a.topActions},m?n.createElement(n.Fragment,null,n.createElement(r.TextInput,{size:"xs",className:a.linkIdInput,defaultValue:c.linkId,onChange:e=>E("linkId",e.currentTarget.value)}),!u&&n.createElement(r.NativeSelect,{size:"xs",className:a.typeSelect,defaultValue:c.type,onChange:e=>E("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"}]})):n.createElement("div",null,s)),n.createElement("div",{className:a.bottomActions},u&&n.createElement(n.Fragment,null,n.createElement(r.Anchor,{href:"#",onClick:e=>{e.preventDefault(),h({id:yr(),linkId:Er("q"),type:"string",text:"Question"})}},"Add item"),n.createElement(r.Anchor,{href:"#",onClick:e=>{e.preventDefault(),h({id:yr(),linkId:Er("g"),type:"group",text:"Group"})}},"Add group")),m&&!i&&n.createElement(r.Anchor,{href:"#",onClick:e=>{e.preventDefault(),t.onRemove&&t.onRemove()}},"Remove")))}function fr(e){const a=t.globalSchema.types.QuestionnaireItemAnswerOption.properties["value[x]"],o=e.options??[];return n.createElement("div",null,o.map((t=>{const[l,c]=fe({type:"QuestionnaireItemAnswerOption",value:t},"value");return n.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},n.createElement("div",null,n.createElement(Xe,{key:t.id,name:"value[x]",property:a,defaultPropertyType:c,defaultValue:l,onChange:(n,r)=>{const a=[...o],l=a.findIndex((e=>e.id===t.id));a[l]={id:t.id,[r]:n},e.onChange(a)}})),n.createElement("div",null,n.createElement(r.Anchor,{href:"#",onClick:n=>{g(n),e.onChange(o.filter((e=>e.id!==t.id)))}},"Remove")))})),n.createElement(r.Anchor,{href:"#",onClick:t=>{g(t),e.onChange([...o,{id:yr()}])}},"Add choice"))}let hr=1,gr=1;function Er(e){return e+hr++}function yr(){return"id-"+gr++}function vr(e){if(e)return e.forEach((e=>{e.id?.match(/^id-\d+$/)&&(gr=Math.max(gr,parseInt(e.id.substring(3))+1)),e.linkId?.match(/^q\d+$/)&&(hr=Math.max(hr,parseInt(e.linkId.substring(1))+1))})),e.map((e=>({...e,id:e.id||yr(),item:vr(e.item),answerOption:Cr(e.answerOption)})))}function Cr(e){if(e)return e.map((e=>({...e,id:e.id||yr()})))}const Tr=r.createStyles((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"}}))),Sr=["gender","age","gestationalAge","context","appliesTo"],br={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function xr(e){const{intervalGroup:t,unit:o}=e,{classes:l}=Tr();return n.createElement(I,{"data-testid":t.id,className:l.section},n.createElement(r.Stack,{spacing:"lg"},n.createElement(r.Group,{position:"right"},n.createElement(r.ActionIcon,{title:"Remove Group","data-testid":`remove-group-button-${t.id}`,key:`remove-group-button-${t.id}`,size:"sm",onClick:n=>{g(n),e.onRemoveGroup(t)}},n.createElement(a.IconCircleMinus,null))),n.createElement(kr,{intervalGroup:t,onChange:e.onChange}),n.createElement(r.Divider,null),t.intervals.map((o=>n.createElement(r.Stack,{key:`interval-${o.id}`,spacing:"xs"},n.createElement(r.Group,null,n.createElement(r.TextInput,{key:`condition-${o.id}`,"data-testid":`condition-${o.id}`,defaultValue:o.condition,label:"Condition: ",size:"sm",onChange:n=>{g(n),e.onChange(t.id,{...o,condition:n.currentTarget.value.trim()})}}),n.createElement(r.ActionIcon,{title:"Remove Interval",size:"sm",key:`remove-interval-${o.id}`,"data-testid":`remove-interval-${o.id}`,onClick:n=>{g(n),e.onRemove(t.id,o)}},n.createElement(a.IconCircleMinus,null))),n.createElement(Ue,{onChange:n=>{e.onChange(t.id,{...o,range:n})},key:`range-${o.id}`,name:`range-${o.id}`,defaultValue:o.range})))),n.createElement(r.ActionIcon,{title:"Add Interval",size:"sm",onClick:n=>{g(n),e.onAdd(t.id,{range:{low:{unit:o},high:{unit:o}}})}},n.createElement(a.IconCirclePlus,null))))}function kr(e){const{intervalGroup:t,onChange:a}=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 n.createElement(r.Stack,{style:{maxWidth:"50%"}},n.createElement(r.Group,null,n.createElement(r.NativeSelect,{data:["","male","female"],label:"Gender:",defaultValue:t.filters.gender||"",onChange:e=>{for(const n of t.intervals){let r=e.currentTarget?.value;""===r&&(r=void 0),a(t.id,{...n,gender:r})}}})),n.createElement(r.Group,{spacing:"xs"},n.createElement(r.Text,{component:"label",htmlFor:`div-age-${t.id}`},"Age:"),n.createElement("div",{id:`div-age-${t.id}`},n.createElement(Ue,{key:`age-${t.id}`,name:`age-${t.id}`,defaultValue:t.filters.age,onChange:e=>{for(const n of t.intervals)a(t.id,{...n,age:e})}}))),n.createElement(r.NativeSelect,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:t.filters.context?.text||"",onChange:e=>{for(const n of t.intervals){let r=e.currentTarget?.value;""===r?(r=void 0,a(t.id,{...n,context:void 0})):a(t.id,{...n,context:{text:r,coding:[{code:r,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}))}function Ir(e){return[`gender=${e.gender}`,`age=${t.formatRange(e.age)}`,`gestationalAge=${t.formatRange(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map((e=>e.text)).join("+")}`].join(":")}function wr(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,o=a.j;a=a.prev;const l=a.i,c=a.j,i={position:l,lines:t.slice(l,e)},u={position:c,lines:n.slice(c,o)};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,o=1+2*a,l=o/2|0,c=new Array(o);c[l+1]={i:0,j:-1,prev:void 0,snake:!0};for(let o=0;o<a;o++){for(let a=-o;a<=o;a+=2){const i=l+a,u=i-1,s=c[i+1],m=c[u];let d,p=0;a===-o||a!==o&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),c[u]=void 0;let f=p-a,h={i:p,j:f,prev:Ar(d),snake:!1};for(;p<n&&f<r&&e[p]===t[f];)p++,f++;if(p>h.i&&(h={i:p,j:f,prev:h,snake:!0}),c[i]=h,p>=n&&f>=r)return c[i]}c[l+o-1]=void 0}return}(e,t),e,t)}function Ar(e){return e&&!e.snake&&e.prev?e.prev:e}function Rr(e){const n=e.entry.filter((e=>!!e.resource)).map((e=>({meta:e.resource?.meta,lines:t.stringify(e.resource,!0).match(/[^\r\n]+/g)}))).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),r=n[0].lines.map((e=>({id:n[0].meta.versionId,meta:n[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const r=wr(t[n-1].lines,t[n].lines);for(const a of r){const r=a.original.position,o=a.original.lines,l=a.revised.lines;if("delete"!==a.type&&"change"!==a.type||e.splice(r,o.length),"insert"===a.type||"change"===a.type)for(let o=0;o<a.revised.lines.length;o++)e.splice(r+o,0,{id:t[n].meta.versionId,meta:t[n].meta,value:l[o],span:1})}}}(r,n),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}}(r),r}const Dr=r.createStyles((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 Pr(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function Vr(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return Or(n,"year");const r=Math.floor(t/2592e3);if(r>0)return Or(r,"month");const a=Math.floor(t/86400);if(a>0)return Or(a,"day");const o=Math.floor(t/3600);if(o>0)return Or(o,"hour");const l=Math.floor(t/60);return l>0?Or(l,"minute"):Or(t,"second")}function Or(e,t){return`${e} ${1===e?t:t+"s"} ago`}const Mr=r.createStyles((e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}})));function Nr(e){const{classes:t}=Mr();return n.createElement(n.Fragment,null,"...",n.createElement("br",null),e.delta.original.lines.length>0&&n.createElement("div",{className:t.removed},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&n.createElement("div",{className:t.added},e.delta.revised.lines.join("\n")),"...",n.createElement("br",null))}function Fr(e){const{response:r,resource:a}=e.entry;return a?n.createElement("tr",null,n.createElement("td",null,n.createElement(ut,{value:a.meta?.author,link:!0})),n.createElement("td",null,t.formatDateTime(a.meta?.lastUpdated)),n.createElement("td",null,n.createElement(se,{to:$r(a)},a.meta?.versionId))):n.createElement("tr",null,n.createElement("td",{colSpan:3},t.normalizeErrorString(r?.outcome)))}function $r(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}const zr=r.createStyles((e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}})));function Lr(e){return Ur(e.getTime())}function Br(e){return Ur(e.getTime()+26784e5)}function Ur(e){return new Date(Math.max(Date.now(),e)).toISOString()}function qr(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}e.AddressDisplay=c,e.AddressInput=s,e.AnnotationInput=h,e.AsyncAutocomplete=v,e.AttachmentArrayDisplay=T,e.AttachmentArrayInput=b,e.AttachmentButton=S,e.AttachmentDisplay=C,e.AttachmentInput=x,e.BackboneElementDisplay=he,e.BackboneElementInput=nt,e.CalendarInput=ot,e.CheckboxFormSection=ge,e.CodeInput=Ie,e.CodeableConceptDisplay=ee,e.CodeableConceptInput=ke,e.CodingDisplay=te,e.CodingInput=we,e.ContactDetailDisplay=re,e.ContactDetailInput=Re,e.ContactPointDisplay=ne,e.ContactPointInput=Ae,e.Container=I,e.DateTimeInput=De,e.DefaultResourceTimeline=function(e){return n.createElement(Dt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]})})},e.DescriptionList=X,e.DescriptionListEntry=Z,e.DiagnosticReportDisplay=pt,e.Document=D,e.ElementDefinitionInputSelector=Ze,e.ElementDefinitionTypeInput=et,e.EncounterTimeline=function(e){return n.createElement(Dt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${t.getReferenceString(e)}`}},{request:{method:"GET",url:`Media?encounter=${t.getReferenceString(e)}`}}]}),createCommunication:(e,n,r)=>({resourceType:"Communication",status:"completed",encounter:t.createReference(e),subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:r}]}),createMedia:(e,n,r)=>({resourceType:"Media",status:"completed",encounter:t.createReference(e),subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:r})})},e.ErrorBoundary=St,e.FhirPathTable=Ln,e.Form=M,e.FormSection=Ee,e.HumanNameDisplay=ae,e.HumanNameInput=Me,e.IdentifierDisplay=oe,e.IdentifierInput=Ne,e.Logo=N,e.MedplumLink=se,e.MedplumProvider=function(e){const t=e.medplum,[r,a]=n.useState({profile:t.getProfile(),loading:!1});n.useEffect((()=>{function e(){a({...r,profile:t.getProfile()})}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,r]);const o={...r,medplum:t};return n.createElement(m.Provider,{value:o},e.children)},e.MemoizedFhirPathTable=Bn,e.MemoizedSearchControl=Nn,e.MoneyDisplay=le,e.MoneyInput=$e,e.ObservationTable=ft,e.Panel=R,e.PatientTimeline=function(e){return n.createElement(Dt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Un.map((n=>({request:{method:"GET",url:n.replaceAll("$",t.getReferenceString(e))}})))}),createCommunication:(e,n,r)=>({resourceType:"Communication",status:"completed",subject:t.createReference(e),sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:r}]}),createMedia:(e,n,r)=>({resourceType:"Media",status:"completed",subject:t.createReference(e),operator:t.createReference(n),issued:(new Date).toISOString(),content:r})})},e.PlanDefinitionBuilder=function(e){const t=p(),a=ve(e.value),[o,l]=n.useState(void 0),[c,i]=n.useState(),[u,s]=n.useState(),[m,d]=n.useState();function f(){s(void 0)}function h(){i(void 0)}const g=n.useRef();if(g.current=m,n.useEffect((()=>{t.requestSchema("PlanDefinition").then(l).catch(console.log)}),[t]),n.useEffect((()=>{var e;return d((e=a??{resourceType:"PlanDefinition"},{...e,action:Zn(e.action)})),document.addEventListener("mouseover",f),document.addEventListener("click",h),()=>{document.removeEventListener("mouseover",f),document.removeEventListener("click",h)}}),[a]),!o||!m)return null;function E(e,t){d({...g.current,[e]:t})}return n.createElement("div",null,n.createElement(M,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(m)},n.createElement(r.TextInput,{label:"Plan Title",defaultValue:m.title,onChange:e=>E("title",e.currentTarget.value)}),n.createElement(_n,{actions:m.action||[],selectedKey:c,setSelectedKey:i,hoverKey:u,setHoverKey:s,onChange:e=>E("action",e)}),n.createElement(r.Button,{type:"submit"},"Save")))},e.QuantityDisplay=ce,e.QuantityInput=Le,e.QuestionnaireBuilder=function(e){const t=p(),a=ve(e.questionnaire),[o,l]=n.useState(),[c,i]=n.useState(),[u,s]=n.useState(),[m,d]=n.useState();function f(){d(void 0)}function h(){s(void 0)}return n.useEffect((()=>{t.requestSchema("Questionnaire").then(l).catch(console.log)}),[t]),n.useEffect((()=>{var e;return i((e=a??{resourceType:"Questionnaire"},{...e,id:e.id||yr(),item:vr(e.item)})),document.addEventListener("mouseover",f),document.addEventListener("click",h),()=>{document.removeEventListener("mouseover",f),document.removeEventListener("click",h)}}),[a]),o&&c?n.createElement("div",null,n.createElement(M,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(c)},n.createElement(pr,{item:c,selectedKey:u,setSelectedKey:s,hoverKey:m,setHoverKey:d,onChange:i}),n.createElement(r.Button,{type:"submit"},"Save"))):null},e.QuestionnaireForm=nr,e.QuestionnaireFormItem=ar,e.RangeDisplay=ie,e.RangeInput=Ue,e.ReferenceDisplay=me,e.ReferenceInput=je,e.ReferenceRangeEditor=function(e){const o=(e=Object.assign(br,e)).definition,[l,c]=n.useState([]),[i,u]=n.useState(1),[s,m]=n.useState(1);return n.useEffect((()=>{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}(o,m);c(function(e,t){let n=1;const r={};for(const t of e){const e=Ir(t);e in r||(r[e]={id:"group-id-"+n++,filters:Object.fromEntries(Sr.map((e=>[e,t[e]]))),intervals:[]}),r[e].intervals.push(t)}return t(n),Object.values(r)}(e.qualifiedInterval||[],u))}),[o]),n.createElement(M,{testid:"reference-range-editor",onSubmit:function(){const t=l.flatMap((e=>e.intervals)).filter((e=>!function(e){return void 0===e.range?.low?.value&&void 0===e.range?.high?.value}(e)));e.onSubmit({...o,qualifiedInterval:t})}},n.createElement(r.Stack,null,l.map((e=>{return n.createElement(xr,{unit:(r=o.quantitativeDetails?.unit,r&&(t.getCodeBySystem(r,"http://unitsofmeasure.org")||r.text)),onChange:p,onAdd:f,onRemove:h,onRemoveGroup:d,key:`group-${e.id}`,intervalGroup:e});var r}))),n.createElement(r.ActionIcon,{title:"Add Group",size:"sm",onClick:e=>{var t;g(e),t={id:`group-id-${i}`,filters:{},intervals:[]},c((e=>[...e,t])),u((e=>e+1))}},n.createElement(a.IconCirclePlus,null)),n.createElement(r.Group,{position:"right"},n.createElement(r.Button,{type:"submit"},"Save")));function d(e){c((t=>t.filter((t=>t.id!==e.id))))}function p(e,t){c((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 f(e,t){void 0===t.id&&(t.id=`id-${s}`,m((e=>e+1))),c((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 h(e,t){c((n=>{const r=(n=[...n]).find((t=>t.id===e));return r&&(r.intervals=r.intervals.filter((e=>e.id!==t.id))),n}))}},e.ReferenceRangeGroupEditor=xr,e.RegisterForm=function(e){const{type:t,projectId:r,googleClientId:a,recaptchaSiteKey:o,onSuccess:l}=e,c=p(),[i,u]=n.useState(void 0),[s,m]=n.useState();function d(e){e.code?c.processCode(e.code).then((()=>l())).catch(console.log):e.login&&u(e.login)}return n.useEffect((()=>{"patient"===t&&i&&c.startNewPatient({login:i,projectId:r}).then((e=>c.processCode(e.code))).then((()=>l())).catch((e=>m(e)))}),[c,t,r,i,l]),n.createElement(D,{width:450},s&&n.createElement("pre",null,JSON.stringify(s,null,2)),!i&&n.createElement(Q,{projectId:r,googleClientId:a,recaptchaSiteKey:o,handleAuthResponse:d},e.children),i&&"project"===t&&n.createElement(L,{login:i,handleAuthResponse:d}))},e.RequestGroupDisplay=function(e){const o=p(),l=ve(e.value),[c,i]=n.useState(!1),[u,s]=n.useState();return n.useEffect((()=>{l&&!c&&(o.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}}(l)).then(s).catch(console.log),i(!0))}),[o,l,c]),l&&u?n.createElement(r.Grid,null,l.action?.map(((o,l)=>{const c=o.resource&&function(e){for(const n of u?.entry)if(n.resource&&e.reference===t.getReferenceString(n.resource))return n.resource;return}(o.resource),i=c?.input?.[0]?.valueReference,s=c?.output?.[0]?.valueReference;return n.createElement(n.Fragment,{key:`action-${l}`},n.createElement(r.Grid.Col,{span:1,p:"md"},"completed"===c?.status?n.createElement(a.IconCheckbox,null):n.createElement(a.IconSquare,{color:"gray"})),n.createElement(r.Grid.Col,{span:9,p:"xs"},n.createElement(r.Text,{weight:500},o.title),o.description&&n.createElement("div",null,o.description),n.createElement("div",null,"Last edited by ",n.createElement(it,{value:c?.meta?.author})," on ",t.formatDateTime(c?.meta?.lastUpdated)),n.createElement("div",null,"Status: ",n.createElement(mt,{status:c?.status||"unknown"}))),n.createElement(r.Grid.Col,{span:2,p:"md"},i&&!s&&n.createElement(r.Button,{onClick:()=>e.onStart(c,i)},"Start"),i&&s&&n.createElement(r.Button,{onClick:()=>e.onEdit(c,i,s)},"Edit")))}))):null},e.ResourceArrayDisplay=de,e.ResourceArrayInput=He,e.ResourceAvatar=_e,e.ResourceBadge=ut,e.ResourceBlame=function(e){const{classes:t}=Dr(),r=p(),[a,o]=n.useState(e.history);if(n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&r.readHistory(e.resourceType,e.id).then(o).catch(console.log)}),[r,e.history,e.resourceType,e.id]),!a)return n.createElement("div",null,"Loading...");const l=a.entry?.[0]?.resource,c=Rr(a);return n.createElement("div",{className:t.container},n.createElement("table",{className:t.root},n.createElement("tbody",null,c.map(((e,r)=>n.createElement("tr",{key:"row-"+r,className:e.span>0?t.startRow:t.normalRow},e.span>0&&n.createElement(n.Fragment,null,n.createElement("td",{className:t.author,rowSpan:e.span},n.createElement(ut,{value:e.meta.author,link:!0})),n.createElement("td",{className:t.dateTime,rowSpan:e.span},n.createElement(se,{to:Pr(l,e.meta.versionId)},Vr(e.meta.lastUpdated)))),n.createElement("td",{className:t.lineNumber},r+1),n.createElement("td",{className:t.line},n.createElement("pre",{className:t.pre},e.value))))))))},e.ResourceDiff=function(e){let r=e.original,a=e.revised;e.ignoreMeta&&(r={...r,meta:void 0},a={...a,meta:void 0});const o=wr(t.stringify(r,!0).match(/[^\r\n]+/g),t.stringify(a,!0).match(/[^\r\n]+/g));return n.createElement("pre",{style:{color:"gray"}},o.map(((e,t)=>n.createElement(Nr,{key:"delta"+t,delta:e}))))},e.ResourceForm=function(e){const t=p(),a=ve(e.defaultValue),[o,l]=n.useState(),[c,i]=n.useState();return n.useEffect((()=>{a&&(i(JSON.parse(JSON.stringify(a))),t.requestSchema(a.resourceType).then(l).catch(console.log))}),[t,a]),o&&c?n.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(c)}},n.createElement(r.Stack,{mb:"xl"},n.createElement(Ee,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},n.createElement(r.TextInput,{name:"resourceType",defaultValue:c.resourceType,disabled:!0})),n.createElement(Ee,{title:"ID",htmlFor:"id",outcome:e.outcome},n.createElement(r.TextInput,{name:"id",defaultValue:c.id,disabled:!0}))),n.createElement(nt,{typeName:c.resourceType,defaultValue:c,outcome:e.outcome,onChange:i}),n.createElement(r.Group,{position:"right",mt:"xl"},n.createElement(r.Button,{type:"submit"},"OK"),e.onDelete&&n.createElement(r.Button,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(c)}},"Delete"))):n.createElement("div",null,"Loading...")},e.ResourceHistoryTable=function(e){const t=p(),[a,o]=n.useState(e.history);return n.useEffect((()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(o).catch(console.log)}),[t,e.history,e.resourceType,e.id]),a?n.createElement(r.Table,{withBorder:!0,withColumnBorders:!0},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",null,"Author"),n.createElement("th",null,"Date"),n.createElement("th",null,"Version"))),n.createElement("tbody",null,a.entry?.map(((e,t)=>n.createElement(Fr,{key:"entry-"+t,entry:e}))))):n.createElement("div",null,"Loading...")},e.ResourceInput=Qe,e.ResourceName=it,e.ResourcePropertyDisplay=pe,e.ResourcePropertyInput=Xe,e.ResourceTable=Tt,e.ResourceTimeline=Dt,e.Scheduler=function(e){const{classes:a}=zr(),o=p(),l=ve(e.schedule),c=ve(e.questionnaire),[i,u]=n.useState();n.useRef().current=i;const[s,m]=n.useState(lt()),[d,f]=n.useState(),[h,g]=n.useState(),[E,y]=n.useState();if(n.useEffect((()=>{l?(u([]),o.searchResources("Slot",new URLSearchParams([["_count",720..toString()],["schedule",t.getReferenceString(l)],["start","gt"+Lr(s)],["start","lt"+Br(s)]])).then(u).catch(console.log)):u(void 0)}),[o,l,s]),!l||!i||!c)return null;const v=l.actor?.[0];return n.createElement("div",{className:a.container,"data-testid":"scheduler"},n.createElement("div",{className:a.info},v&&n.createElement(_e,{value:v,size:"xl"}),v&&n.createElement(r.Text,{size:"xl",weight:500},n.createElement(it,{value:v})),n.createElement("p",null,"1 hour"),d&&n.createElement("p",null,d.toLocaleDateString()),h&&n.createElement("p",null,qr(new Date(h.start)))),n.createElement("div",{className:a.selection},!d&&n.createElement("div",null,n.createElement("h3",null,"Select date"),n.createElement(ot,{slots:i,onChangeMonth:m,onClick:f})),d&&!h&&n.createElement("div",null,n.createElement("h3",null,"Select time"),n.createElement(r.Stack,null,i.map((e=>{const t=new Date(e.start);return t.getTime()>d.getTime()&&t.getTime()<d.getTime()+864e5&&n.createElement("div",{key:e.id},n.createElement(r.Button,{variant:"outline",style:{width:150},onClick:()=>g(e)},qr(t)))})))),d&&h&&!E&&n.createElement(nr,{questionnaire:c,submitButtonText:"Next",onSubmit:y}),d&&h&&E&&n.createElement("div",null,n.createElement("h3",null,"You're all set!"),n.createElement("p",null,"Check your email for a calendar invite."))))},e.SearchChangeEvent=Dn,e.SearchClickEvent=Vn,e.SearchControl=Mn,e.SearchFieldEditor=fn,e.SearchFilterEditor=yn,e.SearchLoadEvent=Pn,e.ServiceRequestTimeline=function(e){return n.createElement(Dt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${t.getReferenceString(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`Media?_count=100&based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${t.getReferenceString(e)}&_sort=-_lastUpdated`}}]}),createCommunication:(e,n,r)=>({resourceType:"Communication",status:"completed",basedOn:[t.createReference(e)],subject:e.subject,sender:t.createReference(n),sent:(new Date).toISOString(),payload:[{contentString:r}]}),createMedia:(e,n,r)=>({resourceType:"Media",status:"completed",basedOn:[t.createReference(e)],subject:e.subject,operator:t.createReference(n),issued:(new Date).toISOString(),content:r})})},e.SignInForm=function(e){const{chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:o,onCode:l,...c}=e,i=p(),[u,s]=n.useState(void 0),[m,d]=n.useState(!1),[f,h]=n.useState(void 0);function g(e){d(!!e.mfaRequired),e.login&&s(e.login),e.memberships&&h(e.memberships),e.code&&(t?h(void 0):y(e.code))}function E(e){y(e.code)}function y(e){l?l(e):i.processCode(e).then((()=>{r&&r()})).catch(console.log)}return n.createElement(D,{width:450},u?m?n.createElement(K,{login:u,handleAuthResponse:g}):f?n.createElement(j,{login:u,memberships:f,handleAuthResponse:g}):"new"===e.projectId?n.createElement(L,{login:u,handleAuthResponse:g}):e.chooseScopes?n.createElement(H,{login:u,scope:e.scope,handleAuthResponse:E}):n.createElement("div",null,"Success"):n.createElement(W,{generatePkce:!l,onForgotPassword:a,onRegister:o,handleAuthResponse:g,...c},e.children))},e.StatusBadge=mt,e.Timeline=bt,e.TimelineItem=xt,e.TimingInput=Ye,e.addDateFilterBetween=tn,e.addField=function(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}},e.addFilter=Gt,e.addLastMonthFilter=Yt,e.addMissingFilter=rn,e.addNextMonthFilter=Xt,e.addThisMonthFilter=Jt,e.addTodayFilter=jt,e.addTomorrowFilter=Ht,e.addYearToDateFilter=en,e.addYesterdayFilter=Wt,e.buildFieldNameString=dn,e.clearFilters=function(e){return qt(e,[])},e.clearFiltersOnField=_t,e.convertIsoToLocal=Pe,e.convertLocalToIso=Ve,e.createScriptTag=B,e.deleteFilter=Qt,e.getErrorsForInput=F,e.getIssuesForExpression=$,e.getMonthString=at,e.getOpString=mn,e.getRecaptcha=G,e.getSearchOperators=sn,e.getSortField=cn,e.getStartMonth=lt,e.getTimeString=Vr,e.getValueAndType=fe,e.initRecaptcha=_,e.isChoiceQuestion=tr,e.isQuestionEnabled=mr,e.isSortDescending=un,e.parseForm=P,e.renderValue=pn,e.setFilters=qt,e.setOffset=an,e.setPage=on,e.setPropertyValue=Ce,e.setSort=ln,e.sortByDateAndPriority=kt,e.toggleSort=function(e,t){let n=!1;return cn(e)===t&&(n=!un(e)),ln(e,t,n)},e.useMedplum=p,e.useMedplumContext=d,e.useMedplumProfile=f,e.useResource=ve}));
@@ -1,3 +1,5 @@
1
- import { ObservationDefinition } from '@medplum/fhirtypes';
1
+ import { DiagnosticReport, Observation, ObservationDefinition } from '@medplum/fhirtypes';
2
2
  export declare const TestosteroneDefinition: ObservationDefinition;
3
3
  export declare const HDLDefinition: ObservationDefinition;
4
+ export declare const CreatinineObservation: Observation;
5
+ export declare const ExampleReport: DiagnosticReport;
@@ -10,4 +10,4 @@ function AddressDisplay(props) {
10
10
  }
11
11
 
12
12
  export { AddressDisplay };
13
- //# sourceMappingURL=AddressDisplay.js.map
13
+ //# sourceMappingURL=AddressDisplay.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddressDisplay.mjs","sources":["../../../src/AddressDisplay/AddressDisplay.tsx"],"sourcesContent":["import { formatAddress } from '@medplum/core';\nimport { Address } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface AddressDisplayProps {\n value?: Address;\n}\n\nexport function AddressDisplay(props: AddressDisplayProps): JSX.Element | null {\n const address = props.value;\n if (!address) {\n return null;\n }\n\n return <>{formatAddress(address)}</>;\n}\n"],"names":[],"mappings":";;;AAQM,SAAU,cAAc,CAAC,KAA0B,EAAA;AACvD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,OAAO,0CAAG,aAAa,CAAC,OAAO,CAAC,CAAI,CAAC;AACvC;;;;"}
@@ -10,7 +10,7 @@ function setLine(address, index, str) {
10
10
  line.push('');
11
11
  }
12
12
  line[index] = str;
13
- return Object.assign(Object.assign({}, address), { line });
13
+ return { ...address, line };
14
14
  }
15
15
  function AddressInput(props) {
16
16
  const [value, setValue] = useState(props.defaultValue || {});
@@ -23,10 +23,10 @@ function AddressInput(props) {
23
23
  }
24
24
  }
25
25
  function setUse(use) {
26
- setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { use }));
26
+ setValueWrapper({ ...valueRef.current, use });
27
27
  }
28
28
  function setType(type) {
29
- setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { type }));
29
+ setValueWrapper({ ...valueRef.current, type });
30
30
  }
31
31
  function setLine1(line1) {
32
32
  setValueWrapper(setLine(valueRef.current || {}, 0, line1));
@@ -35,17 +35,17 @@ function AddressInput(props) {
35
35
  setValueWrapper(setLine(valueRef.current || {}, 1, line2));
36
36
  }
37
37
  function setCity(city) {
38
- setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { city }));
38
+ setValueWrapper({ ...valueRef.current, city });
39
39
  }
40
40
  function setState(state) {
41
- setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { state }));
41
+ setValueWrapper({ ...valueRef.current, state });
42
42
  }
43
43
  function setPostalCode(postalCode) {
44
- setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { postalCode }));
44
+ setValueWrapper({ ...valueRef.current, postalCode });
45
45
  }
46
46
  return (React.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
47
- React.createElement(NativeSelect, { "data-testid": "address-use", defaultValue: value === null || value === void 0 ? void 0 : value.use, onChange: (e) => setUse(e.currentTarget.value), data: ['', 'home', 'work', 'temp', 'old', 'billing'] }),
48
- React.createElement(NativeSelect, { "data-testid": "address-type", defaultValue: value === null || value === void 0 ? void 0 : value.type, onChange: (e) => setType(e.currentTarget.value), data: ['', 'postal', 'physical', 'both'] }),
47
+ React.createElement(NativeSelect, { "data-testid": "address-use", defaultValue: value?.use, onChange: (e) => setUse(e.currentTarget.value), data: ['', 'home', 'work', 'temp', 'old', 'billing'] }),
48
+ React.createElement(NativeSelect, { "data-testid": "address-type", defaultValue: value?.type, onChange: (e) => setType(e.currentTarget.value), data: ['', 'postal', 'physical', 'both'] }),
49
49
  React.createElement(TextInput, { placeholder: "Line 1", defaultValue: getLine(value, 0), onChange: (e) => setLine1(e.currentTarget.value) }),
50
50
  React.createElement(TextInput, { placeholder: "Line 2", defaultValue: getLine(value, 1), onChange: (e) => setLine2(e.currentTarget.value) }),
51
51
  React.createElement(TextInput, { placeholder: "City", defaultValue: value.city, onChange: (e) => setCity(e.currentTarget.value) }),
@@ -54,4 +54,4 @@ function AddressInput(props) {
54
54
  }
55
55
 
56
56
  export { AddressInput };
57
- //# sourceMappingURL=AddressInput.js.map
57
+ //# sourceMappingURL=AddressInput.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddressInput.mjs","sources":["../../../src/AddressInput/AddressInput.tsx"],"sourcesContent":["import { Group, NativeSelect, TextInput } from '@mantine/core';\nimport { Address } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\n\nfunction getLine(address: Address, index: number): string {\n return address && address.line && address.line.length > index ? address.line[index] : '';\n}\n\nfunction setLine(address: Address, index: number, str: string): Address {\n const line: string[] = address.line || [];\n while (line.length <= index) {\n line.push('');\n }\n line[index] = str;\n return { ...address, line };\n}\n\nexport interface AddressInputProps {\n name: string;\n defaultValue?: Address;\n onChange?: (value: Address) => void;\n}\n\nexport function AddressInput(props: AddressInputProps): JSX.Element {\n const [value, setValue] = useState<Address>(props.defaultValue || {});\n\n const valueRef = useRef<Address>();\n valueRef.current = value;\n\n function setValueWrapper(newValue: Address): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n function setUse(use: 'home' | 'work' | 'temp' | 'old' | 'billing'): void {\n setValueWrapper({ ...valueRef.current, use });\n }\n\n function setType(type: 'postal' | 'physical' | 'both'): void {\n setValueWrapper({ ...valueRef.current, type });\n }\n\n function setLine1(line1: string): void {\n setValueWrapper(setLine(valueRef.current || {}, 0, line1));\n }\n\n function setLine2(line2: string): void {\n setValueWrapper(setLine(valueRef.current || {}, 1, line2));\n }\n\n function setCity(city: string): void {\n setValueWrapper({ ...valueRef.current, city });\n }\n\n function setState(state: string): void {\n setValueWrapper({ ...valueRef.current, state });\n }\n\n function setPostalCode(postalCode: string): void {\n setValueWrapper({ ...valueRef.current, postalCode });\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <NativeSelect\n data-testid=\"address-use\"\n defaultValue={value?.use}\n onChange={(e) => setUse(e.currentTarget.value as 'home' | 'work' | 'temp' | 'old' | 'billing')}\n data={['', 'home', 'work', 'temp', 'old', 'billing']}\n />\n <NativeSelect\n data-testid=\"address-type\"\n defaultValue={value?.type}\n onChange={(e) => setType(e.currentTarget.value as 'postal' | 'physical' | 'both')}\n data={['', 'postal', 'physical', 'both']}\n />\n <TextInput\n placeholder=\"Line 1\"\n defaultValue={getLine(value, 0)}\n onChange={(e) => setLine1(e.currentTarget.value)}\n />\n <TextInput\n placeholder=\"Line 2\"\n defaultValue={getLine(value, 1)}\n onChange={(e) => setLine2(e.currentTarget.value)}\n />\n <TextInput placeholder=\"City\" defaultValue={value.city} onChange={(e) => setCity(e.currentTarget.value)} />\n <TextInput placeholder=\"State\" defaultValue={value.state} onChange={(e) => setState(e.currentTarget.value)} />\n <TextInput\n placeholder=\"Postal Code\"\n defaultValue={value.postalCode}\n onChange={(e) => setPostalCode(e.currentTarget.value)}\n />\n </Group>\n );\n}\n"],"names":[],"mappings":";;;AAIA,SAAS,OAAO,CAAC,OAAgB,EAAE,KAAa,EAAA;IAC9C,OAAO,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,OAAO,CAAC,OAAgB,EAAE,KAAa,EAAE,GAAW,EAAA;AAC3D,IAAA,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;AAC1C,IAAA,OAAO,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACf,KAAA;AACD,IAAA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAClB,IAAA,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC;AAQK,SAAU,YAAY,CAAC,KAAwB,EAAA;AACnD,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;AAEtE,IAAA,MAAM,QAAQ,GAAG,MAAM,EAAW,CAAC;AACnC,IAAA,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAEzB,SAAS,eAAe,CAAC,QAAiB,EAAA;QACxC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;KACF;IAED,SAAS,MAAM,CAAC,GAAiD,EAAA;QAC/D,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;KAC/C;IAED,SAAS,OAAO,CAAC,IAAoC,EAAA;QACnD,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAChD;IAED,SAAS,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC5D;IAED,SAAS,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC5D;IAED,SAAS,OAAO,CAAC,IAAY,EAAA;QAC3B,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAChD;IAED,SAAS,QAAQ,CAAC,KAAa,EAAA;QAC7B,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;KACjD;IAED,SAAS,aAAa,CAAC,UAAkB,EAAA;QACvC,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;KACtD;IAED,QACE,KAAC,CAAA,aAAA,CAAA,KAAK,EAAC,EAAA,OAAO,EAAC,IAAI,EAAC,IAAI,EAAA,IAAA,EAAC,MAAM,EAAA,IAAA,EAAA;AAC7B,QAAA,KAAA,CAAA,aAAA,CAAC,YAAY,EACC,EAAA,aAAA,EAAA,aAAa,EACzB,YAAY,EAAE,KAAK,EAAE,GAAG,EACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAqD,CAAC,EAC9F,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,EACpD,CAAA;AACF,QAAA,KAAA,CAAA,aAAA,CAAC,YAAY,EACC,EAAA,aAAA,EAAA,cAAc,EAC1B,YAAY,EAAE,KAAK,EAAE,IAAI,EACzB,QAAQ,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAuC,CAAC,EACjF,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,EACxC,CAAA;AACF,QAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACR,WAAW,EAAC,QAAQ,EACpB,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAChD,CAAA;AACF,QAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACR,WAAW,EAAC,QAAQ,EACpB,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAChD,CAAA;QACF,KAAC,CAAA,aAAA,CAAA,SAAS,EAAC,EAAA,WAAW,EAAC,MAAM,EAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAI,CAAA;QAC3G,KAAC,CAAA,aAAA,CAAA,SAAS,EAAC,EAAA,WAAW,EAAC,OAAO,EAAC,YAAY,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAI,CAAA;AAC9G,QAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACR,WAAW,EAAC,aAAa,EACzB,YAAY,EAAE,KAAK,CAAC,UAAU,EAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EACrD,CAAA,CACI,EACR;AACJ;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { TextInput } from '@mantine/core';
2
2
  import { createReference } from '@medplum/core';
3
3
  import React, { useState, useRef } from 'react';
4
- import { useMedplumProfile } from '../MedplumProvider/MedplumProvider.js';
4
+ import { useMedplumProfile } from '../MedplumProvider/MedplumProvider.mjs';
5
5
 
6
6
  function AnnotationInput(props) {
7
7
  const author = useMedplumProfile();
@@ -25,4 +25,4 @@ function AnnotationInput(props) {
25
25
  }
26
26
 
27
27
  export { AnnotationInput };
28
- //# sourceMappingURL=AnnotationInput.js.map
28
+ //# sourceMappingURL=AnnotationInput.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnotationInput.mjs","sources":["../../../src/AnnotationInput/AnnotationInput.tsx"],"sourcesContent":["import { TextInput } from '@mantine/core';\nimport { createReference } from '@medplum/core';\nimport { Annotation } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { useMedplumProfile } from '../MedplumProvider/MedplumProvider';\n\nexport interface AnnotationInputProps {\n name: string;\n defaultValue?: Annotation;\n onChange?: (value: Annotation) => void;\n}\n\nexport function AnnotationInput(props: AnnotationInputProps): JSX.Element {\n const author = useMedplumProfile();\n const [value, setValue] = useState<Annotation>(props.defaultValue || {});\n\n const valueRef = useRef<Annotation>();\n valueRef.current = value;\n\n function setText(text: string): void {\n const newValue: Annotation = text\n ? {\n text,\n authorReference: author && createReference(author),\n time: new Date().toISOString(),\n }\n : {};\n\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <TextInput\n name={props.name}\n placeholder=\"Annotation text\"\n defaultValue={value.text}\n onChange={(e) => setText(e.currentTarget.value)}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAYM,SAAU,eAAe,CAAC,KAA2B,EAAA;AACzD,IAAA,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;AACnC,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAa,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;AAEzE,IAAA,MAAM,QAAQ,GAAG,MAAM,EAAc,CAAC;AACtC,IAAA,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAEzB,SAAS,OAAO,CAAC,IAAY,EAAA;QAC3B,MAAM,QAAQ,GAAe,IAAI;AAC/B,cAAE;gBACE,IAAI;AACJ,gBAAA,eAAe,EAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC;AAClD,gBAAA,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/B,aAAA;cACD,EAAE,CAAC;QAEP,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,QACE,KAAC,CAAA,aAAA,CAAA,SAAS,EACR,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,WAAW,EAAC,iBAAiB,EAC7B,YAAY,EAAE,KAAK,CAAC,IAAI,EACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAA,CAC/C,EACF;AACJ;;;;"}
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { MultiSelectProps, SelectItem } from '@mantine/core';
3
+ export interface AsyncAutocompleteOption<T> extends SelectItem {
4
+ resource: T;
5
+ }
6
+ export interface AsyncAutocompleteProps<T> extends Omit<MultiSelectProps, 'data' | 'defaultValue' | 'loadOptions' | 'onChange' | 'onCreate' | 'searchable'> {
7
+ defaultValue?: T | T[];
8
+ toKey: (item: T) => string;
9
+ toOption: (item: T) => AsyncAutocompleteOption<T>;
10
+ loadOptions: (input: string, signal: AbortSignal) => Promise<T[]>;
11
+ onChange: (item: T[]) => void;
12
+ onCreate?: (input: string) => T;
13
+ }
14
+ export declare function AsyncAutocomplete<T>(props: AsyncAutocompleteProps<T>): JSX.Element;