@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 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/AddressDisplay/AddressDisplay.tsx","../../src/AddressInput/AddressInput.tsx","../../src/MedplumProvider/MedplumProvider.tsx","../../src/AnnotationInput/AnnotationInput.tsx","../../src/AttachmentDisplay/AttachmentDisplay.tsx","../../src/AttachmentArrayDisplay/AttachmentArrayDisplay.tsx","../../src/utils/dom.ts","../../src/AttachmentButton/AttachmentButton.tsx","../../src/AttachmentArrayInput/AttachmentArrayInput.tsx","../../src/AttachmentInput/AttachmentInput.tsx","../../../../node_modules/tslib/tslib.es6.js","../../src/Container/Container.tsx","../../src/Panel/Panel.tsx","../../src/Document/Document.tsx","../../src/Form/FormUtils.ts","../../src/Form/Form.tsx","../../src/Logo/Logo.tsx","../../src/utils/outcomes.ts","../../src/auth/NewProjectForm.tsx","../../src/utils/script.ts","../../src/GoogleButton/GoogleButton.tsx","../../src/utils/recaptcha.ts","../../src/auth/NewUserForm.tsx","../../src/auth/RegisterForm.tsx","../../src/auth/AuthenticationForm.tsx","../../src/auth/ChooseProfileForm.tsx","../../src/auth/ChooseScopeForm.tsx","../../src/auth/SignInForm.tsx","../../src/constants.ts","../../src/DescriptionList/DescriptionList.tsx","../../src/CodeableConceptDisplay/CodeableConceptDisplay.tsx","../../src/CodingDisplay/CodingDisplay.tsx","../../src/ContactPointDisplay/ContactPointDisplay.tsx","../../src/ContactDetailDisplay/ContactDetailDisplay.tsx","../../src/HumanNameDisplay/HumanNameDisplay.tsx","../../src/IdentifierDisplay/IdentifierDisplay.tsx","../../src/QuantityDisplay/QuantityDisplay.tsx","../../src/RangeDisplay/RangeDisplay.tsx","../../src/RatioDisplay/RatioDisplay.tsx","../../src/MedplumLink/MedplumLink.tsx","../../src/ReferenceDisplay/ReferenceDisplay.tsx","../../src/ResourceArrayDisplay/ResourceArrayDisplay.tsx","../../src/ResourcePropertyDisplay/ResourcePropertyDisplay.tsx","../../src/BackboneElementDisplay/BackboneElementDisplay.tsx","../../src/CheckboxFormSection/CheckboxFormSection.tsx","../../src/FormSection/FormSection.tsx","../../src/useResource/useResource.ts","../../src/ResourceForm/ResourceForm.tsx","../../src/ValueSetAutocomplete/ValueSetAutocomplete.tsx","../../src/CodeableConceptInput/CodeableConceptInput.tsx","../../src/CodeInput/CodeInput.tsx","../../src/CodingInput/CodingInput.tsx","../../src/ContactPointInput/ContactPointInput.tsx","../../src/ContactDetailInput/ContactDetailInput.tsx","../../src/DateTimeInput/DateTimeInput.tsx","../../src/ExtensionInput/ExtensionInput.tsx","../../src/HumanNameInput/HumanNameInput.tsx","../../src/IdentifierInput/IdentifierInput.tsx","../../src/PeriodInput/PeriodInput.tsx","../../src/QuantityInput/QuantityInput.tsx","../../src/RangeInput/RangeInput.tsx","../../src/RatioInput/RatioInput.tsx","../../src/ResourceAvatar/ResourceAvatar.tsx","../../src/ResourceInput/ResourceInput.tsx","../../src/ReferenceInput/ReferenceInput.tsx","../../src/ResourceArrayInput/ResourceArrayInput.tsx","../../src/TimingInput/TimingInput.tsx","../../src/ResourcePropertyInput/ResourcePropertyInput.tsx","../../src/BackboneElementInput/BackboneElementInput.tsx","../../src/CalendarInput/CalendarInput.tsx","../../src/ResourceName/ResourceName.tsx","../../src/ResourceBadge/ResourceBadge.tsx","../../src/DiagnosticReportDisplay/DiagnosticReportDisplay.tsx","../../src/ResourceDiffTable/ResourceDiffTable.tsx","../../src/ResourceTable/ResourceTable.tsx","../../src/ErrorBoundary/ErrorBoundary.tsx","../../src/Timeline/Timeline.tsx","../../src/utils/date.ts","../../src/ResourceTimeline/ResourceTimeline.tsx","../../src/DefaultResourceTimeline/DefaultResourceTimeline.tsx","../../src/EncounterTimeline/EncounterTimeline.tsx","../../src/FhirPathDisplay/FhirPathDisplay.tsx","../../src/SearchControl/SearchUtils.tsx","../../src/SearchFieldEditor/SearchFieldEditor.tsx","../../src/SearchFilterValueDisplay/SearchFilterValueDisplay.tsx","../../src/SearchFilterValueInput/SearchFilterValueInput.tsx","../../src/SearchFilterEditor/SearchFilterEditor.tsx","../../src/SearchFilterValueDialog/SearchFilterValueDialog.tsx","../../src/SearchPopupMenu/SearchPopupMenu.tsx","../../src/SearchControl/SearchControlField.ts","../../src/SearchControl/SearchControl.tsx","../../src/FhirPathTable/FhirPathTable.tsx","../../src/PatientTimeline/PatientTimeline.tsx","../../src/PlanDefinitionBuilder/PlanDefinitionBuilder.tsx","../../src/utils/questionnaire.ts","../../src/QuestionnaireForm/QuestionnaireForm.tsx","../../src/QuestionnaireBuilder/QuestionnaireBuilder.tsx","../../src/ReferenceRangeEditor/ReferenceRangeEditor.tsx","../../src/StatusBadge/StatusBadge.tsx","../../src/RequestGroupDisplay/RequestGroupDisplay.tsx","../../src/utils/diff.ts","../../src/utils/blame.ts","../../src/ResourceBlame/ResourceBlame.tsx","../../src/ResourceDiff/ResourceDiff.tsx","../../src/ResourceHistoryTable/ResourceHistoryTable.tsx","../../src/Scheduler/Scheduler.tsx","../../src/ServiceRequestTimeline/ServiceRequestTimeline.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","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","import { MedplumClient, ProfileResource } from '@medplum/core';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\nconst reactContext = createContext(undefined as MedplumContext | undefined);\n\nexport interface MedplumProviderProps {\n medplum: MedplumClient;\n children: React.ReactNode;\n}\n\nexport interface MedplumContext {\n medplum: MedplumClient;\n profile?: ProfileResource;\n loading: boolean;\n}\n\n/**\n * The MedplumProvider component provides Medplum context state.\n *\n * Medplum context includes:\n * 1) medplum - Medplum client library\n * 2) profile - The current user profile (if signed in)\n */\nexport function MedplumProvider(props: MedplumProviderProps): JSX.Element {\n const medplum = props.medplum;\n\n const [state, setState] = useState({\n profile: medplum.getProfile(),\n loading: false,\n });\n\n useEffect(() => {\n function eventListener(): void {\n setState({\n ...state,\n profile: medplum.getProfile(),\n });\n }\n\n medplum.addEventListener('change', eventListener);\n return () => medplum.removeEventListeneer('change', eventListener);\n }, [medplum, state]);\n\n const medplumContext = {\n ...state,\n medplum,\n };\n\n return <reactContext.Provider value={medplumContext}>{props.children}</reactContext.Provider>;\n}\n\n/**\n * Returns the MedplumContext instance.\n */\nexport function useMedplumContext(): MedplumContext {\n return useContext(reactContext) as MedplumContext;\n}\n\n/**\n * Returns the MedplumClient instance.\n * This is a shortcut for useMedplumContext().medplum.\n */\nexport function useMedplum(): MedplumClient {\n return useMedplumContext().medplum;\n}\n\n/**\n * Returns the current Medplum user profile (if signed in).\n * This is a shortcut for useMedplumContext().profile.\n * @returns The current user profile.\n */\nexport function useMedplumProfile(): ProfileResource | undefined {\n return useMedplumContext().profile;\n}\n","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","import { Anchor } from '@mantine/core';\nimport { Attachment } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface AttachmentDisplayProps {\n value?: Attachment;\n maxWidth?: number;\n}\n\nexport function AttachmentDisplay(props: AttachmentDisplayProps): JSX.Element | null {\n const value = props.value;\n const { contentType, url, title } = value ?? {};\n\n if (!url) {\n return null;\n }\n\n return (\n <div data-testid=\"attachment-display\">\n {contentType?.startsWith('image/') && (\n <img data-testid=\"attachment-image\" style={{ maxWidth: props.maxWidth }} src={url} alt={value?.title} />\n )}\n {contentType?.startsWith('video/') && (\n <video data-testid=\"attachment-video\" style={{ maxWidth: props.maxWidth }} controls={true}>\n <source type={contentType} src={url} />\n </video>\n )}\n {contentType === 'application/pdf' && !title?.endsWith('.pdf') && (\n <div data-testid=\"attachment-pdf\" style={{ maxWidth: props.maxWidth, minHeight: 400 }}>\n <iframe\n width=\"100%\"\n height=\"400\"\n src={url + '#navpanes=0'}\n allowFullScreen={true}\n frameBorder={0}\n seamless={true}\n />\n </div>\n )}\n <div data-testid=\"download-link\" style={{ padding: '2px 16px 16px 16px' }}>\n <Anchor href={value?.url} data-testid=\"attachment-details\" target=\"_blank\" rel=\"noopener noreferrer\">\n {value?.title || 'Download'}\n </Anchor>\n </div>\n </div>\n );\n}\n","import { Attachment } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { AttachmentDisplay } from '../AttachmentDisplay/AttachmentDisplay';\n\nexport interface AttachmentArrayDisplayProps {\n values?: Attachment[];\n maxWidth?: number;\n}\n\nexport function AttachmentArrayDisplay(props: AttachmentArrayDisplayProps): JSX.Element {\n return (\n <div>\n {props.values &&\n props.values.map((v, index) => (\n <div key={'attatchment-' + index}>\n <AttachmentDisplay value={v} maxWidth={props.maxWidth} />\n </div>\n ))}\n </div>\n );\n}\n","/**\n * Kills a browser event.\n * Prevents default behavior.\n * Stops event propagation.\n * @param e The event.\n */\nexport function killEvent(e: Event | React.SyntheticEvent): void {\n e.preventDefault();\n e.stopPropagation();\n}\n\n/**\n * Returns true if the element is a checkbox or a table cell containing a checkbox.\n * Table cells containing checkboxes are commonly accidentally clicked.\n * @param el The HTML DOM element.\n * @returns True if the element is a checkbox or a table cell containing a checkbox.\n */\nexport function isCheckboxCell(el: Element): boolean {\n if (isCheckboxElement(el)) {\n return true;\n }\n\n if (el instanceof HTMLTableCellElement) {\n const children = el.children;\n if (children.length === 1 && isCheckboxElement(children[0])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isCheckboxElement(el: Element): boolean {\n return el instanceof HTMLInputElement && el.type === 'checkbox';\n}\n","import { Attachment, Binary, OperationOutcome } from '@medplum/fhirtypes';\nimport React, { useRef } from 'react';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { killEvent } from '../utils/dom';\n\nexport interface AttachmentButtonProps {\n onUpload: (attachment: Attachment) => void;\n onUploadStart?: () => void;\n onUploadProgress?: (e: ProgressEvent) => void;\n children(props: { onClick(e: React.MouseEvent): void }): React.ReactNode;\n}\n\nexport function AttachmentButton(props: AttachmentButtonProps): JSX.Element {\n const medplum = useMedplum();\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n function onClick(e: React.MouseEvent): void {\n killEvent(e);\n fileInputRef.current?.click();\n }\n\n function onFileChange(e: React.ChangeEvent): void {\n killEvent(e);\n const files = (e.target as HTMLInputElement).files;\n if (files) {\n Array.from(files).forEach(processFile);\n }\n }\n\n /**\n * Processes a single file.\n *\n * @param {File} file The file descriptor.\n */\n function processFile(file: File): void {\n if (!file) {\n return;\n }\n\n const fileName = file.name;\n if (!fileName) {\n return;\n }\n\n if (props.onUploadStart) {\n props.onUploadStart();\n }\n\n const filename = file.name;\n const contentType = file.type || 'application/octet-stream';\n medplum\n .createBinary(file, filename, contentType, props.onUploadProgress)\n .then((binary: Binary) => {\n props.onUpload({\n contentType: binary.contentType,\n url: binary.url,\n title: filename,\n });\n })\n .catch((outcome: OperationOutcome) => {\n alert(outcome?.issue?.[0]?.details?.text);\n });\n }\n\n return (\n <>\n <input\n type=\"file\"\n data-testid=\"upload-file-input\"\n style={{ display: 'none' }}\n ref={fileInputRef}\n onChange={(e) => onFileChange(e)}\n />\n {props.children({ onClick })}\n </>\n );\n}\n","import { ActionIcon } from '@mantine/core';\nimport { Attachment } from '@medplum/fhirtypes';\nimport { IconCircleMinus, IconCloudUpload } from '@tabler/icons';\nimport React, { useRef, useState } from 'react';\nimport { AttachmentButton } from '../AttachmentButton/AttachmentButton';\nimport { AttachmentDisplay } from '../AttachmentDisplay/AttachmentDisplay';\nimport { killEvent } from '../utils/dom';\n\nexport interface AttachmentArrayInputProps {\n name: string;\n defaultValue?: Attachment[];\n arrayElement?: boolean;\n onChange?: (value: Attachment[]) => void;\n}\n\nexport function AttachmentArrayInput(props: AttachmentArrayInputProps): JSX.Element {\n const [values, setValues] = useState<Attachment[]>(props.defaultValue ?? []);\n\n const valuesRef = useRef<Attachment[]>();\n valuesRef.current = values;\n\n function setValuesWrapper(newValues: Attachment[]): void {\n setValues(newValues);\n if (props.onChange) {\n props.onChange(newValues);\n }\n }\n\n return (\n <table style={{ width: '100%' }}>\n <colgroup>\n <col width=\"97%\" />\n <col width=\"3%\" />\n </colgroup>\n <tbody>\n {values.map((v: Attachment, index: number) => (\n <tr key={`${index}-${values.length}`}>\n <td>\n <AttachmentDisplay value={v} maxWidth={200} />\n </td>\n <td>\n <ActionIcon\n title=\"Remove\"\n size=\"sm\"\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n const copy = values.slice();\n copy.splice(index, 1);\n setValuesWrapper(copy);\n }}\n >\n <IconCircleMinus />\n </ActionIcon>\n </td>\n </tr>\n ))}\n <tr>\n <td></td>\n <td>\n <AttachmentButton\n onUpload={(attachment: Attachment) => {\n setValuesWrapper([...(valuesRef.current as Attachment[]), attachment]);\n }}\n >\n {(props) => (\n <ActionIcon {...props} title=\"Add\" size=\"sm\" color=\"green\">\n <IconCloudUpload size={16} />\n </ActionIcon>\n )}\n </AttachmentButton>\n </td>\n </tr>\n </tbody>\n </table>\n );\n}\n","import { Button } from '@mantine/core';\nimport { Attachment } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { AttachmentButton } from '../AttachmentButton/AttachmentButton';\nimport { AttachmentDisplay } from '../AttachmentDisplay/AttachmentDisplay';\nimport { killEvent } from '../utils/dom';\n\nexport interface AttachmentInputProps {\n name: string;\n defaultValue?: Attachment;\n arrayElement?: boolean;\n onChange?: (value: Attachment | undefined) => void;\n}\n\nexport function AttachmentInput(props: AttachmentInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Attachment | undefined): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n if (value) {\n return (\n <>\n <AttachmentDisplay value={value} maxWidth={200} />\n <Button\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n setValueWrapper(undefined);\n }}\n >\n Remove\n </Button>\n </>\n );\n }\n\n return (\n <AttachmentButton onUpload={setValueWrapper}>{(props) => <Button {...props}>Upload...</Button>}</AttachmentButton>\n );\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { Container as MantineContainer, ContainerProps, createStyles } from '@mantine/core';\nimport React from 'react';\n\nconst useStyles = createStyles(() => ({\n root: {\n '@media (max-width: 800px)': {\n paddingLeft: 4,\n paddingRight: 4,\n },\n },\n}));\n\nexport function Container(props: ContainerProps): JSX.Element {\n const { children, ...others } = props;\n const { classes } = useStyles();\n\n return (\n <MantineContainer className={classes.root} {...others}>\n {children}\n </MantineContainer>\n );\n}\n","import { createStyles, Paper, PaperProps, useComponentDefaultProps } from '@mantine/core';\nimport React from 'react';\n\nexport interface PanelStylesParams {\n width?: number;\n fill?: boolean;\n}\n\nconst useStyles = createStyles((theme, { width, fill }: PanelStylesParams) => ({\n paper: {\n maxWidth: width,\n margin: `${theme.spacing.xl}px auto`,\n padding: fill ? 0 : theme.spacing.md,\n '@media (max-width: 800px)': {\n padding: fill ? 0 : 8,\n },\n '& img': {\n width: '100%',\n maxWidth: '100%',\n },\n '& video': {\n width: '100%',\n maxWidth: '100%',\n },\n },\n}));\n\nexport interface PanelProps extends PaperProps {\n width?: number;\n fill?: boolean;\n}\n\nconst defaultProps: Partial<PanelProps> = {\n shadow: 'xs',\n radius: 'md',\n withBorder: true,\n};\n\nexport function Panel(props: PanelProps): JSX.Element {\n const { className, children, width, fill, unstyled, ...others } = useComponentDefaultProps(\n 'Panel',\n defaultProps,\n props\n );\n const { classes, cx } = useStyles({ width, fill }, { name: 'Panel', unstyled });\n\n return (\n <Paper className={cx(classes.paper, className)} {...others}>\n {children}\n </Paper>\n );\n}\n","import React from 'react';\nimport { Container } from '../Container/Container';\nimport { Panel, PanelProps } from '../Panel/Panel';\n\nexport function Document(props: PanelProps): JSX.Element {\n const { children, ...others } = props;\n return (\n <Container>\n <Panel {...others}>{children}</Panel>\n </Container>\n );\n}\n","/**\n * Parses an HTML form and returns the result as a JavaScript object.\n * @param form The HTML form element.\n */\nexport function parseForm(form: HTMLFormElement): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const element of Array.from(form.elements)) {\n if (element instanceof HTMLInputElement) {\n parseInputElement(result, element);\n } else if (element instanceof HTMLTextAreaElement) {\n result[element.name] = element.value;\n } else if (element instanceof HTMLSelectElement) {\n parseSelectElement(result, element);\n }\n }\n\n return result;\n}\n\n/**\n * Parses an HTML input element.\n * Sets the name/value pair in the result,\n * but only if the element is enabled and checked.\n * @param el The input element.\n * @param result The result builder.\n */\nfunction parseInputElement(result: Record<string, string>, el: HTMLInputElement): void {\n if (el.disabled) {\n // Ignore disabled elements\n return;\n }\n\n if ((el.type === 'checkbox' || el.type === 'radio') && !el.checked) {\n // Ignore unchecked radio or checkbox elements\n return;\n }\n\n result[el.name] = el.value;\n}\n\n/**\n * Parses an HTML select element.\n * Sets the name/value pair if one is selected.\n * @param result The result builder.\n * @param el The select element.\n */\nfunction parseSelectElement(result: Record<string, string>, el: HTMLSelectElement): void {\n result[el.name] = el.value;\n}\n","import React, { CSSProperties } from 'react';\nimport { parseForm } from './FormUtils';\n\nexport interface FormProps {\n onSubmit?: (formData: Record<string, string>) => void;\n style?: CSSProperties;\n children?: React.ReactNode;\n testid?: string;\n}\n\nexport function Form(props: FormProps): JSX.Element {\n return (\n <form\n style={props.style}\n data-testid={props.testid}\n onSubmit={(e: React.SyntheticEvent) => {\n e.preventDefault();\n const formData = parseForm(e.target as HTMLFormElement);\n if (props.onSubmit) {\n props.onSubmit(formData);\n }\n }}\n >\n {props.children}\n </form>\n );\n}\n","import React from 'react';\n\nexport interface LogoProps {\n size: number;\n fill?: string;\n}\n\nexport function Logo(props: LogoProps): JSX.Element {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 491 491\" style={{ width: props.size, height: props.size }}>\n <title>Medplum Logo</title>\n <path fill={props.fill || '#ad7136'} d=\"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z\" />\n <path\n fill={props.fill || '#946af9'}\n 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 />\n <path\n fill={props.fill || '#7857c5'}\n 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 />\n <path\n fill={props.fill || '#40bc26'}\n d=\"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z\"\n />\n <path fill={props.fill || '#33961e'} d=\"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z\" />\n </svg>\n );\n}\n","import { OperationOutcome, OperationOutcomeIssue } from '@medplum/fhirtypes';\n\nexport function getErrorsForInput(\n outcome: OperationOutcome | undefined,\n expression: string | undefined\n): string | undefined {\n return outcome?.issue\n ?.filter((issue) => isExpressionMatch(issue.expression?.[0], expression))\n ?.map((issue) => issue.details?.text)\n ?.join('\\n');\n}\n\nexport function getIssuesForExpression(\n outcome: OperationOutcome | undefined,\n expression: string | undefined\n): OperationOutcomeIssue[] | undefined {\n return outcome?.issue?.filter((issue) => isExpressionMatch(issue.expression?.[0], expression));\n}\n\nfunction isExpressionMatch(expr1: string | undefined, expr2: string | undefined): boolean {\n // Expression can be either \"fieldName\" or \"resourceType.fieldName\"\n if (expr1 === expr2) {\n return true;\n }\n if (!expr1 || !expr2) {\n return false;\n }\n const dot1 = expr1.indexOf('.');\n if (dot1 >= 0 && expr1.substring(dot1 + 1) === expr2) {\n return true;\n }\n const dot2 = expr2.indexOf('.');\n if (dot2 >= 0 && expr2.substring(dot2 + 1) === expr1) {\n return true;\n }\n return false;\n}\n","import { Anchor, Button, Center, Group, Stack, Text, TextInput, Title } from '@mantine/core';\nimport { LoginAuthenticationResponse } from '@medplum/core';\nimport { OperationOutcome } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { Form } from '../Form/Form';\nimport { Logo } from '../Logo/Logo';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { getErrorsForInput } from '../utils/outcomes';\n\nexport interface NewProjectFormProps {\n login: string;\n handleAuthResponse: (response: LoginAuthenticationResponse) => void;\n}\n\nexport function NewProjectForm(props: NewProjectFormProps): JSX.Element {\n const medplum = useMedplum();\n const [outcome, setOutcome] = useState<OperationOutcome | undefined>();\n return (\n <Form\n style={{ maxWidth: 400 }}\n onSubmit={async (formData: Record<string, string>) => {\n try {\n props.handleAuthResponse(\n await medplum.startNewProject({\n login: props.login,\n projectName: formData.projectName,\n })\n );\n } catch (err) {\n setOutcome(err as OperationOutcome);\n }\n }}\n >\n <Center sx={{ flexDirection: 'column' }}>\n <Logo size={32} />\n <Title>Create project</Title>\n </Center>\n <Stack spacing=\"xl\">\n <TextInput\n name=\"projectName\"\n label=\"Project Name\"\n placeholder=\"My Project\"\n required={true}\n autoFocus={true}\n error={getErrorsForInput(outcome, 'firstName')}\n />\n <Text color=\"dimmed\" size=\"xs\">\n By clicking submit you agree to the Medplum{' '}\n <Anchor href=\"https://www.medplum.com/privacy\">Privacy&nbsp;Policy</Anchor>\n {' and '}\n <Anchor href=\"https://www.medplum.com/terms\">Terms&nbsp;of&nbsp;Service</Anchor>.\n </Text>\n </Stack>\n <Group position=\"right\" mt=\"xl\" noWrap>\n <Button type=\"submit\">Create project</Button>\n </Group>\n </Form>\n );\n}\n","/**\n * Dynamically creates a script tag for the specified JavaScript file.\n * @param src The JavaScript file URL.\n */\nexport function createScriptTag(src: string, onload?: () => void): void {\n const head = document.getElementsByTagName('head')[0];\n const script = document.createElement('script');\n script.async = true;\n script.src = src;\n script.onload = onload || null;\n head.appendChild(script);\n}\n","import { GoogleCredentialResponse } from '@medplum/core';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { createScriptTag } from '../utils/script';\n\ninterface GoogleApi {\n accounts: {\n id: {\n initialize: (args: any) => void;\n renderButton: (parent: HTMLElement, args: any) => void;\n };\n };\n}\n\ndeclare const google: GoogleApi;\n\nexport interface GoogleButtonProps {\n readonly googleClientId?: string;\n readonly handleGoogleCredential: (response: GoogleCredentialResponse) => void;\n}\n\nexport function GoogleButton(props: GoogleButtonProps): JSX.Element | null {\n const medplum = useMedplum();\n const { googleClientId, handleGoogleCredential } = props;\n const parentRef = useRef<HTMLDivElement>(null);\n const [scriptLoaded, setScriptLoaded] = useState<boolean>(typeof google !== 'undefined');\n const [initialized, setInitialized] = useState<boolean>(false);\n const [buttonRendered, setButtonRendered] = useState<boolean>(false);\n\n useEffect(() => {\n if (typeof google === 'undefined') {\n createScriptTag('https://accounts.google.com/gsi/client', () => setScriptLoaded(true));\n return;\n }\n\n if (!initialized) {\n google.accounts.id.initialize({\n client_id: googleClientId,\n callback: handleGoogleCredential,\n });\n setInitialized(true);\n }\n\n if (parentRef.current && !buttonRendered) {\n google.accounts.id.renderButton(parentRef.current, {});\n setButtonRendered(true);\n }\n }, [medplum, googleClientId, initialized, scriptLoaded, parentRef, buttonRendered, handleGoogleCredential]);\n\n if (!googleClientId) {\n return null;\n }\n\n return <div ref={parentRef} />;\n}\n\nexport function getGoogleClientId(clientId: string | undefined): string | undefined {\n if (clientId) {\n return clientId;\n }\n\n const origin = window.location.protocol + '//' + window.location.host;\n const authorizedOrigins = process.env.GOOGLE_AUTH_ORIGINS?.split(',') ?? [];\n if (authorizedOrigins.includes(origin)) {\n return process.env.GOOGLE_CLIENT_ID;\n }\n\n return undefined;\n}\n","import { createScriptTag } from './script';\n\n/**\n * Dynamically loads the recaptcha script.\n * We do not want to load the script on page load unless the user needs it.\n * @param siteKey The reCAPTCHA site key, available from the reCAPTCHA admin page.\n */\nexport function initRecaptcha(siteKey: string): void {\n if (typeof grecaptcha === 'undefined') {\n createScriptTag('https://www.google.com/recaptcha/api.js?render=' + siteKey);\n }\n}\n\n/**\n * Starts a request to generate a recapcha token.\n * @param siteKey The reCAPTCHA site key, available from the reCAPTCHA admin page.\n * @returns Promise to a recaptcha token for the current user.\n */\nexport function getRecaptcha(siteKey: string): Promise<string> {\n return new Promise((resolve, reject) => {\n grecaptcha.ready(async () => {\n try {\n resolve(await grecaptcha.execute(siteKey, { action: 'submit' }));\n } catch (err) {\n reject(err);\n }\n });\n });\n}\n","import {\n Alert,\n Anchor,\n Button,\n Center,\n Checkbox,\n Divider,\n Group,\n PasswordInput,\n Stack,\n Text,\n TextInput,\n} from '@mantine/core';\nimport { GoogleCredentialResponse, LoginAuthenticationResponse } from '@medplum/core';\nimport { OperationOutcome } from '@medplum/fhirtypes';\nimport { IconAlertCircle } from '@tabler/icons';\nimport React, { useEffect, useState } from 'react';\nimport { Form } from '../Form/Form';\nimport { getGoogleClientId, GoogleButton } from '../GoogleButton/GoogleButton';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { getErrorsForInput, getIssuesForExpression } from '../utils/outcomes';\nimport { getRecaptcha, initRecaptcha } from '../utils/recaptcha';\n\nexport interface NewUserFormProps {\n readonly projectId: string;\n readonly googleClientId?: string;\n readonly recaptchaSiteKey: string;\n readonly children?: React.ReactNode;\n readonly handleAuthResponse: (response: LoginAuthenticationResponse) => void;\n}\n\nexport function NewUserForm(props: NewUserFormProps): JSX.Element {\n const googleClientId = getGoogleClientId(props.googleClientId);\n const recaptchaSiteKey = props.recaptchaSiteKey;\n const medplum = useMedplum();\n const [outcome, setOutcome] = useState<OperationOutcome>();\n const issues = getIssuesForExpression(outcome, undefined);\n\n useEffect(() => initRecaptcha(recaptchaSiteKey), [recaptchaSiteKey]);\n\n return (\n <Form\n style={{ maxWidth: 400 }}\n onSubmit={async (formData: Record<string, string>) => {\n try {\n const recaptchaToken = await getRecaptcha(recaptchaSiteKey);\n props.handleAuthResponse(\n await medplum.startNewUser({\n projectId: props.projectId,\n firstName: formData.firstName,\n lastName: formData.lastName,\n email: formData.email,\n password: formData.password,\n remember: formData.remember === 'true',\n recaptchaSiteKey,\n recaptchaToken,\n })\n );\n } catch (err) {\n setOutcome(err as OperationOutcome);\n }\n }}\n >\n <Center sx={{ flexDirection: 'column' }}>{props.children}</Center>\n {issues && (\n <Alert icon={<IconAlertCircle size={16} />} color=\"red\">\n {issues.map((issue) => (\n <div data-testid=\"text-field-error\" key={issue.details?.text}>\n {issue.details?.text}\n </div>\n ))}\n </Alert>\n )}\n {googleClientId && (\n <>\n <Group position=\"center\" p=\"xl\" style={{ height: 70 }}>\n <GoogleButton\n googleClientId={googleClientId}\n handleGoogleCredential={async (response: GoogleCredentialResponse) => {\n try {\n await medplum.startPkce();\n props.handleAuthResponse(\n await medplum.startGoogleLogin({\n googleClientId: response.clientId,\n googleCredential: response.credential,\n createUser: true,\n })\n );\n } catch (err) {\n setOutcome(err as OperationOutcome);\n }\n }}\n />\n </Group>\n <Divider label=\"or\" labelPosition=\"center\" my=\"lg\" />\n </>\n )}\n <Stack spacing=\"xl\">\n <TextInput\n name=\"firstName\"\n type=\"text\"\n label=\"First name\"\n placeholder=\"First name\"\n required={true}\n autoFocus={true}\n error={getErrorsForInput(outcome, 'firstName')}\n />\n <TextInput\n name=\"lastName\"\n type=\"text\"\n label=\"Last name\"\n placeholder=\"Last name\"\n required={true}\n error={getErrorsForInput(outcome, 'lastName')}\n />\n <TextInput\n name=\"email\"\n type=\"email\"\n label=\"Email\"\n placeholder=\"name@domain.com\"\n required={true}\n error={getErrorsForInput(outcome, 'email')}\n />\n <PasswordInput\n name=\"password\"\n label=\"Password\"\n autoComplete=\"off\"\n required={true}\n error={getErrorsForInput(outcome, 'password')}\n />\n <Text color=\"dimmed\" size=\"xs\">\n By clicking submit you agree to the Medplum{' '}\n <Anchor href=\"https://www.medplum.com/privacy\">Privacy&nbsp;Policy</Anchor>\n {' and '}\n <Anchor href=\"https://www.medplum.com/terms\">Terms&nbsp;of&nbsp;Service</Anchor>.\n </Text>\n <Text color=\"dimmed\" size=\"xs\">\n This site is protected by reCAPTCHA and the Google{' '}\n <Anchor href=\"https://policies.google.com/privacy\">Privacy&nbsp;Policy</Anchor>\n {' and '}\n <Anchor href=\"https://policies.google.com/terms\">Terms&nbsp;of&nbsp;Service</Anchor> apply.\n </Text>\n </Stack>\n <Group position=\"apart\" mt=\"xl\" noWrap>\n <Checkbox name=\"remember\" label=\"Remember me\" size=\"xs\" />\n <Button type=\"submit\">Create account</Button>\n </Group>\n </Form>\n );\n}\n","import { LoginAuthenticationResponse } from '@medplum/core';\nimport { OperationOutcome } from '@medplum/fhirtypes';\nimport React, { useEffect, useState } from 'react';\nimport { Document } from '../Document/Document';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { NewProjectForm } from './NewProjectForm';\nimport { NewUserForm } from './NewUserForm';\n\nexport interface RegisterFormProps {\n readonly type: 'patient' | 'project';\n readonly projectId?: string;\n readonly googleClientId?: string;\n readonly recaptchaSiteKey: string;\n readonly children?: React.ReactNode;\n readonly onSuccess: () => void;\n}\n\nexport function RegisterForm(props: RegisterFormProps): JSX.Element {\n const { type, projectId, googleClientId, recaptchaSiteKey, onSuccess } = props;\n const medplum = useMedplum();\n const [login, setLogin] = useState<string | undefined>(undefined);\n const [outcome, setOutcome] = useState<OperationOutcome>();\n\n useEffect(() => {\n if (type === 'patient' && login) {\n medplum\n .startNewPatient({ login, projectId: projectId as string })\n .then((response) => medplum.processCode(response.code as string))\n .then(() => onSuccess())\n .catch((err) => setOutcome(err as OperationOutcome));\n }\n }, [medplum, type, projectId, login, onSuccess]);\n\n function handleAuthResponse(response: LoginAuthenticationResponse): void {\n if (response.code) {\n medplum\n .processCode(response.code)\n .then(() => onSuccess())\n .catch(console.log);\n } else if (response.login) {\n setLogin(response.login);\n }\n }\n\n return (\n <Document width={450}>\n {outcome && <pre>{JSON.stringify(outcome, null, 2)}</pre>}\n {!login && (\n <NewUserForm\n projectId={projectId as string}\n googleClientId={googleClientId}\n recaptchaSiteKey={recaptchaSiteKey}\n handleAuthResponse={handleAuthResponse}\n >\n {props.children}\n </NewUserForm>\n )}\n {login && type === 'project' && <NewProjectForm login={login} handleAuthResponse={handleAuthResponse} />}\n </Document>\n );\n}\n","import {\n Alert,\n Anchor,\n Button,\n Center,\n Checkbox,\n Divider,\n Group,\n PasswordInput,\n Stack,\n TextInput,\n} from '@mantine/core';\nimport {\n BaseLoginRequest,\n GoogleCredentialResponse,\n GoogleLoginRequest,\n LoginAuthenticationResponse,\n} from '@medplum/core';\nimport { OperationOutcome } from '@medplum/fhirtypes';\nimport { IconAlertCircle } from '@tabler/icons';\nimport React, { useState } from 'react';\nimport { Form } from '../Form/Form';\nimport { getGoogleClientId, GoogleButton } from '../GoogleButton/GoogleButton';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { getErrorsForInput, getIssuesForExpression } from '../utils/outcomes';\n\nexport interface AuthenticationFormProps extends BaseLoginRequest {\n readonly generatePkce?: boolean;\n readonly onForgotPassword?: () => void;\n readonly onRegister?: () => void;\n readonly handleAuthResponse: (response: LoginAuthenticationResponse) => void;\n readonly children?: React.ReactNode;\n}\n\nexport function AuthenticationForm(props: AuthenticationFormProps): JSX.Element {\n const { generatePkce, onForgotPassword, onRegister, handleAuthResponse, children, ...baseLoginRequest } = props;\n const medplum = useMedplum();\n const googleClientId = getGoogleClientId(props.googleClientId);\n const [outcome, setOutcome] = useState<OperationOutcome>();\n const issues = getIssuesForExpression(outcome, undefined);\n\n async function startPkce(): Promise<void> {\n if (generatePkce) {\n await medplum.startPkce();\n }\n }\n\n return (\n <Form\n style={{ maxWidth: 400 }}\n onSubmit={(formData: Record<string, string>) => {\n startPkce()\n .then(() =>\n medplum.startLogin({\n ...baseLoginRequest,\n email: formData.email,\n password: formData.password,\n remember: formData.remember === 'on',\n })\n )\n .then(handleAuthResponse)\n .catch(setOutcome);\n }}\n >\n <Center sx={{ flexDirection: 'column' }}>{children}</Center>\n {issues && (\n <Alert icon={<IconAlertCircle size={16} />} color=\"red\">\n {issues.map((issue) => (\n <div data-testid=\"text-field-error\" key={issue.details?.text}>\n {issue.details?.text}\n </div>\n ))}\n </Alert>\n )}\n {googleClientId && (\n <>\n <Group position=\"center\" p=\"xl\" style={{ height: 70 }}>\n <GoogleButton\n googleClientId={googleClientId}\n handleGoogleCredential={(response: GoogleCredentialResponse) => {\n startPkce()\n .then(() =>\n medplum.startGoogleLogin({\n ...baseLoginRequest,\n googleCredential: response.credential,\n } as GoogleLoginRequest)\n )\n .then(props.handleAuthResponse)\n .catch(setOutcome);\n }}\n />\n </Group>\n <Divider label=\"or\" labelPosition=\"center\" my=\"lg\" />\n </>\n )}\n <Stack spacing=\"xl\">\n <TextInput\n name=\"email\"\n type=\"email\"\n label=\"Email\"\n placeholder=\"name@domain.com\"\n required={true}\n autoFocus={true}\n error={getErrorsForInput(outcome, 'email')}\n />\n <PasswordInput\n name=\"password\"\n type=\"password\"\n label=\"Password\"\n autoComplete=\"off\"\n required={true}\n error={getErrorsForInput(outcome, 'password')}\n />\n </Stack>\n <Group position=\"apart\" mt=\"xl\" spacing={0} noWrap>\n {onForgotPassword && (\n <Anchor component=\"button\" type=\"button\" color=\"dimmed\" onClick={onForgotPassword} size=\"xs\">\n Forgot password\n </Anchor>\n )}\n {onRegister && (\n <Anchor component=\"button\" type=\"button\" color=\"dimmed\" onClick={onRegister} size=\"xs\">\n Register\n </Anchor>\n )}\n <Checkbox id=\"remember\" name=\"remember\" label=\"Remember me\" size=\"xs\" sx={{ lineHeight: 1 }} />\n <Button type=\"submit\">Sign in</Button>\n </Group>\n </Form>\n );\n}\n","import { Avatar, Center, Group, Stack, Text, Title, UnstyledButton } from '@mantine/core';\nimport { ProjectMembership } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { Logo } from '../Logo/Logo';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\n\nexport interface ChooseProfileFormProps {\n login: string;\n memberships: ProjectMembership[];\n handleAuthResponse: (response: any) => void;\n}\n\nexport function ChooseProfileForm(props: ChooseProfileFormProps): JSX.Element {\n const medplum = useMedplum();\n return (\n <Stack>\n <Center sx={{ flexDirection: 'column' }}>\n <Logo size={32} />\n <Title>Choose profile</Title>\n </Center>\n {props.memberships.map((membership: ProjectMembership) => (\n <UnstyledButton\n key={membership.id}\n onClick={() => {\n medplum\n .post('auth/profile', {\n login: props.login,\n profile: membership.id,\n })\n .then(props.handleAuthResponse)\n .catch(console.log);\n }}\n >\n <Group>\n <Avatar radius=\"xl\" />\n <div style={{ flex: 1 }}>\n <Text size=\"sm\" weight={500}>\n {membership.profile?.display}\n </Text>\n <Text color=\"dimmed\" size=\"xs\">\n {membership.project?.display}\n </Text>\n </div>\n </Group>\n </UnstyledButton>\n ))}\n </Stack>\n );\n}\n","import { Button, Center, Checkbox, Group, Stack, Title } from '@mantine/core';\nimport React from 'react';\nimport { Form } from '../Form/Form';\nimport { Logo } from '../Logo/Logo';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\n\nexport interface ChooseScopeFormProps {\n login: string;\n scope: string | undefined;\n handleAuthResponse: (response: any) => void;\n}\n\nexport function ChooseScopeForm(props: ChooseScopeFormProps): JSX.Element {\n const medplum = useMedplum();\n return (\n <Form\n style={{ maxWidth: 400 }}\n onSubmit={(formData: Record<string, string>) => {\n medplum\n .post('auth/scope', {\n login: props.login,\n scope: Object.keys(formData).join(' '),\n })\n .then(props.handleAuthResponse)\n .catch(console.log);\n }}\n >\n <Stack>\n <Center sx={{ flexDirection: 'column' }}>\n <Logo size={32} />\n <Title>Choose scope</Title>\n </Center>\n <Stack>\n {(props.scope || 'openid').split(' ').map((scopeName: string) => (\n <Checkbox key={scopeName} id={scopeName} name={scopeName} label={scopeName} defaultChecked />\n ))}\n </Stack>\n <Group position=\"right\" mt=\"xl\">\n <Button type=\"submit\">Set scope</Button>\n </Group>\n </Stack>\n </Form>\n );\n}\n","import { BaseLoginRequest, LoginAuthenticationResponse } from '@medplum/core';\nimport { ProjectMembership } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { Document } from '../Document/Document';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { AuthenticationForm } from './AuthenticationForm';\nimport { ChooseProfileForm } from './ChooseProfileForm';\nimport { ChooseScopeForm } from './ChooseScopeForm';\nimport { NewProjectForm } from './NewProjectForm';\n\nexport interface SignInFormProps extends BaseLoginRequest {\n readonly chooseScopes?: boolean;\n readonly onSuccess?: () => void;\n readonly onForgotPassword?: () => void;\n readonly onRegister?: () => void;\n readonly onCode?: (code: string) => void;\n readonly children?: React.ReactNode;\n}\n\nexport function SignInForm(props: SignInFormProps): JSX.Element {\n const { chooseScopes, onSuccess, onForgotPassword, onRegister, onCode, ...baseLoginRequest } = props;\n const medplum = useMedplum();\n const [login, setLogin] = useState<string | undefined>(undefined);\n const [memberships, setMemberships] = useState<ProjectMembership[] | undefined>(undefined);\n\n function handleAuthResponse(response: LoginAuthenticationResponse): void {\n if (response.login) {\n setLogin(response.login);\n }\n\n if (response.memberships) {\n setMemberships(response.memberships);\n }\n\n if (response.code) {\n if (chooseScopes) {\n setMemberships(undefined);\n } else {\n handleCode(response.code as string);\n }\n }\n }\n\n function handleScopeResponse(response: LoginAuthenticationResponse): void {\n handleCode(response.code as string);\n }\n\n function handleCode(code: string): void {\n if (onCode) {\n onCode(code);\n } else {\n medplum\n .processCode(code)\n .then(() => {\n if (onSuccess) {\n onSuccess();\n }\n })\n .catch(console.log);\n }\n }\n\n return (\n <Document width={450}>\n {(() => {\n if (!login) {\n return (\n <AuthenticationForm\n generatePkce={!onCode}\n onForgotPassword={onForgotPassword}\n onRegister={onRegister}\n handleAuthResponse={handleAuthResponse}\n {...baseLoginRequest}\n >\n {props.children}\n </AuthenticationForm>\n );\n } else if (memberships) {\n return <ChooseProfileForm login={login} memberships={memberships} handleAuthResponse={handleAuthResponse} />;\n } else if (props.projectId === 'new') {\n return <NewProjectForm login={login} handleAuthResponse={handleAuthResponse} />;\n } else if (props.chooseScopes) {\n return <ChooseScopeForm login={login} scope={props.scope} handleAuthResponse={handleScopeResponse} />;\n } else {\n return <div>Success</div>;\n }\n })()}\n </Document>\n );\n}\n","export const DEFAULT_IGNORED_PROPERTIES = [\n 'meta',\n 'implicitRules',\n 'language',\n 'text',\n 'contained',\n 'extension',\n 'modifierExtension',\n];\n","import { createStyles } from '@mantine/core';\nimport React from 'react';\n\nconst useStyles = createStyles((theme) => ({\n root: {\n display: 'grid',\n gridTemplateColumns: '30% 70%',\n margin: 0,\n\n '& > dt, & > dd': {\n padding: `${theme.spacing.sm}px ${theme.spacing.sm}px`,\n borderTop: `0.1px solid ${theme.colors.gray[3]}`,\n margin: 0,\n },\n },\n\n compact: {\n gridTemplateColumns: '20% 80%',\n\n '& > dt, & > dd': {\n padding: `0 ${theme.spacing.xs}px ${theme.spacing.xs}px 0`,\n border: 0,\n },\n },\n}));\n\nexport interface DescriptionListProps {\n children: React.ReactNode;\n compact?: boolean;\n}\n\nexport function DescriptionList(props: DescriptionListProps): JSX.Element {\n const { children, compact } = props;\n const { classes, cx } = useStyles();\n return <dl className={cx(classes.root, { [classes.compact]: compact })}>{children}</dl>;\n}\n\nexport interface DescriptionListEntryProps {\n term: string;\n children: React.ReactNode;\n}\n\nexport function DescriptionListEntry(props: DescriptionListEntryProps): JSX.Element {\n return (\n <>\n <dt>{props.term}</dt>\n <dd>{props.children}</dd>\n </>\n );\n}\n","import { formatCodeableConcept } from '@medplum/core';\nimport { CodeableConcept } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface CodeableConceptDisplayProps {\n value?: CodeableConcept;\n}\n\nexport function CodeableConceptDisplay(props: CodeableConceptDisplayProps): JSX.Element {\n return <>{formatCodeableConcept(props.value)}</>;\n}\n","import { formatCoding } from '@medplum/core';\nimport { Coding } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface CodingDisplayProps {\n value?: Coding;\n}\n\nexport function CodingDisplay(props: CodingDisplayProps): JSX.Element {\n return <>{formatCoding(props.value)}</>;\n}\n","import { ContactPoint } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface ContactPointDisplayProps {\n value?: ContactPoint;\n}\n\nexport function ContactPointDisplay(props: ContactPointDisplayProps): JSX.Element | null {\n const contactPoint = props.value;\n if (!contactPoint) {\n return null;\n }\n\n const builder = [];\n\n if (contactPoint.value) {\n builder.push(contactPoint.value);\n }\n\n if (contactPoint.use || contactPoint.system) {\n builder.push(' [');\n\n if (contactPoint.use) {\n builder.push(contactPoint.use);\n }\n\n if (contactPoint.use && contactPoint.system) {\n builder.push(' ');\n }\n\n if (contactPoint.system) {\n builder.push(contactPoint.system);\n }\n\n builder.push(']');\n }\n\n return <>{builder.join('').trim()}</>;\n}\n","import { ContactDetail } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ContactPointDisplay } from '../ContactPointDisplay/ContactPointDisplay';\n\nexport interface ContactDetailDisplayProps {\n value?: ContactDetail;\n}\n\nexport function ContactDetailDisplay(props: ContactDetailDisplayProps): JSX.Element | null {\n const contactDetail = props.value;\n if (!contactDetail) {\n return null;\n }\n\n return (\n <>\n {contactDetail.name}\n {contactDetail.name && ': '}\n {contactDetail.telecom?.map((telecom, index) => (\n <ContactPointDisplay key={'telecom-' + index} value={telecom} />\n ))}\n </>\n );\n}\n","import { formatHumanName, HumanNameFormatOptions } from '@medplum/core';\nimport { HumanName } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface HumanNameDisplayProps {\n value?: HumanName;\n options?: HumanNameFormatOptions;\n}\n\nexport function HumanNameDisplay(props: HumanNameDisplayProps): JSX.Element | null {\n const name = props.value;\n if (!name) {\n return null;\n }\n\n return <>{formatHumanName(name, props.options)}</>;\n}\n","import { Identifier } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface IdentifierDisplayProps {\n value?: Identifier;\n}\n\nexport function IdentifierDisplay(props: IdentifierDisplayProps): JSX.Element {\n return (\n <div>\n {props.value?.system}: {props.value?.value}\n </div>\n );\n}\n","import { formatQuantity } from '@medplum/core';\nimport { Quantity } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface QuantityDisplayProps {\n value?: Quantity;\n}\n\nexport function QuantityDisplay(props: QuantityDisplayProps): JSX.Element | null {\n return <>{formatQuantity(props.value)}</>;\n}\n","import { formatRange } from '@medplum/core';\nimport { Range } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface RangeDisplayProps {\n value?: Range;\n}\n\nexport function RangeDisplay(props: RangeDisplayProps): JSX.Element | null {\n return <>{formatRange(props.value)}</>;\n}\n","import { Ratio } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { QuantityDisplay } from '../QuantityDisplay/QuantityDisplay';\n\nexport interface RatioDisplayProps {\n value?: Ratio;\n}\n\nexport function RatioDisplay(props: RatioDisplayProps): JSX.Element | null {\n const value = props.value;\n if (!value) {\n return null;\n }\n\n return (\n <>\n <QuantityDisplay value={value.numerator} />\n &nbsp;/&nbsp;\n <QuantityDisplay value={value.denominator} />\n </>\n );\n}\n","import { Anchor, TextProps } from '@mantine/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { killEvent } from '../utils/dom';\n\nexport interface MedplumLinkProps extends TextProps {\n to?: Resource | Reference | string;\n suffix?: string;\n label?: string;\n onClick?: () => void;\n children: React.ReactNode;\n}\n\nexport function MedplumLink(props: MedplumLinkProps): JSX.Element {\n const navigate = useNavigate();\n const { to, suffix, label, onClick, children, ...rest } = props;\n\n let href = getHref(to);\n if (suffix) {\n href += '/' + suffix;\n }\n\n return (\n <Anchor\n href={href}\n aria-label={label}\n onClick={(e: React.SyntheticEvent) => {\n killEvent(e);\n if (onClick) {\n onClick();\n } else if (to) {\n navigate(href);\n }\n }}\n {...rest}\n >\n {children}\n </Anchor>\n );\n}\n\nfunction getHref(to: Resource | Reference | string | undefined): string {\n if (to) {\n if (typeof to === 'string') {\n return getStringHref(to);\n } else if ('resourceType' in to) {\n return getResourceHref(to);\n } else if ('reference' in to) {\n return getReferenceHref(to);\n }\n }\n return '#';\n}\n\nfunction getStringHref(to: string): string {\n if (to.startsWith('http://') || to.startsWith('https://') || to.startsWith('/')) {\n return to;\n }\n return '/' + to;\n}\n\nfunction getResourceHref(to: Resource): string {\n return `/${to.resourceType}/${to.id}`;\n}\n\nfunction getReferenceHref(to: Reference): string {\n return `/${to.reference}`;\n}\n","import { stringify } from '@medplum/core';\nimport { Reference } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\n\nexport interface ReferenceDisplayProps {\n value?: Reference;\n link?: boolean;\n}\n\nexport function ReferenceDisplay(props: ReferenceDisplayProps): JSX.Element | null {\n if (!props.value) {\n return null;\n }\n\n const displayString = props.value.display || props.value.reference || stringify(props.value);\n\n // The \"link\" prop defaults to \"true\"; undefined is treated as \"true\"\n // To disable the link, it must be explicitly \"false\"\n if (props.link !== false && props.value.reference) {\n return <MedplumLink to={props.value}>{displayString}</MedplumLink>;\n } else {\n return <>{displayString}</>;\n }\n}\n","import { PropertyType } from '@medplum/core';\nimport { ElementDefinition } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\n\ninterface ResourceArrayDisplayProps {\n property: ElementDefinition;\n values: any[];\n arrayElement?: boolean;\n ignoreMissingValues?: boolean;\n link?: boolean;\n}\n\nexport function ResourceArrayDisplay(props: ResourceArrayDisplayProps): JSX.Element {\n const property = props.property;\n const values = props.values ?? [];\n const propertyType = property.type?.[0]?.code as PropertyType;\n return (\n <>\n {values.map((v: any, index: number) => (\n <div key={`${index}-${values.length}`}>\n <ResourcePropertyDisplay\n arrayElement={true}\n property={property}\n propertyType={propertyType}\n value={v}\n ignoreMissingValues={props.ignoreMissingValues}\n link={props.link}\n />\n </div>\n ))}\n </>\n );\n}\n","import {\n buildTypeName,\n formatDateTime,\n formatPeriod,\n formatTiming,\n getTypedPropertyValue,\n PropertyType,\n TypedValue,\n} from '@medplum/core';\nimport { ElementDefinition } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { AddressDisplay } from '../AddressDisplay/AddressDisplay';\nimport { AttachmentArrayDisplay } from '../AttachmentArrayDisplay/AttachmentArrayDisplay';\nimport { AttachmentDisplay } from '../AttachmentDisplay/AttachmentDisplay';\nimport { BackboneElementDisplay } from '../BackboneElementDisplay/BackboneElementDisplay';\nimport { CodeableConceptDisplay } from '../CodeableConceptDisplay/CodeableConceptDisplay';\nimport { CodingDisplay } from '../CodingDisplay/CodingDisplay';\nimport { ContactDetailDisplay } from '../ContactDetailDisplay/ContactDetailDisplay';\nimport { ContactPointDisplay } from '../ContactPointDisplay/ContactPointDisplay';\nimport { HumanNameDisplay } from '../HumanNameDisplay/HumanNameDisplay';\nimport { IdentifierDisplay } from '../IdentifierDisplay/IdentifierDisplay';\nimport { QuantityDisplay } from '../QuantityDisplay/QuantityDisplay';\nimport { RangeDisplay } from '../RangeDisplay/RangeDisplay';\nimport { RatioDisplay } from '../RatioDisplay/RatioDisplay';\nimport { ReferenceDisplay } from '../ReferenceDisplay/ReferenceDisplay';\nimport { ResourceArrayDisplay } from '../ResourceArrayDisplay/ResourceArrayDisplay';\n\nexport interface ResourcePropertyDisplayProps {\n property?: ElementDefinition;\n propertyType: PropertyType;\n value: any;\n arrayElement?: boolean;\n maxWidth?: number;\n ignoreMissingValues?: boolean;\n link?: boolean;\n}\n\nexport function ResourcePropertyDisplay(props: ResourcePropertyDisplayProps): JSX.Element {\n const { property, propertyType, value } = props;\n\n if (property?.max === '*' && !props.arrayElement) {\n if (propertyType === 'Attachment') {\n return <AttachmentArrayDisplay values={value} maxWidth={props.maxWidth} />;\n }\n return (\n <ResourceArrayDisplay\n property={property}\n values={value}\n ignoreMissingValues={props.ignoreMissingValues}\n link={props.link}\n />\n );\n }\n\n switch (propertyType) {\n case PropertyType.boolean:\n return <>{value === undefined ? '' : Boolean(value).toString()}</>;\n case PropertyType.SystemString:\n case PropertyType.code:\n case PropertyType.date:\n case PropertyType.integer:\n case PropertyType.positiveInt:\n case PropertyType.string:\n case PropertyType.unsignedInt:\n case PropertyType.uri:\n case PropertyType.url:\n return <>{value}</>;\n case PropertyType.canonical:\n return <ReferenceDisplay value={{ reference: value }} link={props.link} />;\n case PropertyType.dateTime:\n case PropertyType.instant:\n return <>{formatDateTime(value)}</>;\n case PropertyType.markdown:\n return <pre>{value}</pre>;\n case PropertyType.Address:\n return <AddressDisplay value={value} />;\n case PropertyType.Annotation:\n return <>{value?.text}</>;\n case PropertyType.Attachment:\n return <AttachmentDisplay value={value} maxWidth={props.maxWidth} />;\n case PropertyType.CodeableConcept:\n return <CodeableConceptDisplay value={value} />;\n case PropertyType.Coding:\n return <CodingDisplay value={value} />;\n case PropertyType.ContactDetail:\n return <ContactDetailDisplay value={value} />;\n case PropertyType.ContactPoint:\n return <ContactPointDisplay value={value} />;\n case PropertyType.HumanName:\n return <HumanNameDisplay value={value} />;\n case PropertyType.Identifier:\n return <IdentifierDisplay value={value} />;\n case PropertyType.Period:\n return <>{formatPeriod(value)}</>;\n case PropertyType.Quantity:\n case PropertyType.Duration:\n return <QuantityDisplay value={value} />;\n case PropertyType.Range:\n return <RangeDisplay value={value} />;\n case PropertyType.Ratio:\n return <RatioDisplay value={value} />;\n case PropertyType.Reference:\n return <ReferenceDisplay value={value} link={props.link} />;\n case PropertyType.Timing:\n return <>{formatTiming(value)}</>;\n case PropertyType.Dosage:\n case PropertyType.UsageContext:\n return (\n <BackboneElementDisplay\n value={{ type: propertyType, value }}\n compact={true}\n ignoreMissingValues={props.ignoreMissingValues}\n />\n );\n default:\n if (!property?.path) {\n throw Error(`Displaying property of type ${props.propertyType} requires element definition path`);\n }\n return (\n <BackboneElementDisplay\n value={{ type: buildTypeName(property?.path?.split('.') as string[]), value }}\n compact={true}\n ignoreMissingValues={props.ignoreMissingValues}\n />\n );\n }\n}\n\n/**\n * Returns the value of the property and the property type.\n * Some property definitions support multiple types.\n * For example, \"Observation.value[x]\" can be \"valueString\", \"valueInteger\", \"valueQuantity\", etc.\n * According to the spec, there can only be one property for a given element definition.\n * This function returns the value and the type.\n * @param context The base context (usually a FHIR resource).\n * @param property The property definition.\n * @returns The value of the property and the property type.\n */\nexport function getValueAndType(context: TypedValue, path: string): [any, PropertyType] {\n const typedResult = getTypedPropertyValue(context, path);\n if (!typedResult) {\n return [undefined, 'undefined' as PropertyType];\n }\n\n if (Array.isArray(typedResult)) {\n return [typedResult.map((e) => e.value), typedResult[0].type as PropertyType];\n }\n\n return [typedResult.value, typedResult.type as PropertyType];\n}\n","import { getPropertyDisplayName, globalSchema, TypedValue } from '@medplum/core';\nimport React from 'react';\nimport { DEFAULT_IGNORED_PROPERTIES } from '../constants';\nimport { DescriptionList, DescriptionListEntry } from '../DescriptionList/DescriptionList';\nimport { getValueAndType, ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\n\nexport interface BackboneElementDisplayProps {\n value: TypedValue;\n compact?: boolean;\n ignoreMissingValues?: boolean;\n link?: boolean;\n}\n\nexport function BackboneElementDisplay(props: BackboneElementDisplayProps): JSX.Element | null {\n const typedValue = props.value;\n const value = typedValue.value;\n if (!value) {\n return null;\n }\n\n const typeName = typedValue.type;\n const typeSchema = globalSchema.types[typeName];\n if (!typeSchema) {\n return <div>{typeName}&nbsp;not implemented</div>;\n }\n\n if (\n typeof value === 'object' &&\n 'name' in value &&\n Object.keys(value).length === 1 &&\n typeof value.name === 'string'\n ) {\n // Special case for common BackboneElement pattern\n // Where there is an object with a single property 'name'\n // Just display the name value.\n return <div>{value.name}</div>;\n }\n\n return (\n <DescriptionList compact={props.compact}>\n {Object.entries(typeSchema.properties).map((entry) => {\n const key = entry[0];\n if (DEFAULT_IGNORED_PROPERTIES.indexOf(key) >= 0) {\n return null;\n }\n const property = entry[1];\n if (!property.path) {\n property.path = typeName + '.' + key;\n }\n const [propertyValue, propertyType] = getValueAndType(typedValue, key);\n if (\n props.ignoreMissingValues &&\n (!propertyValue || (Array.isArray(propertyValue) && propertyValue.length === 0))\n ) {\n return null;\n }\n return (\n <DescriptionListEntry key={key} term={getPropertyDisplayName(key)}>\n <ResourcePropertyDisplay\n property={property}\n propertyType={propertyType}\n value={propertyValue}\n ignoreMissingValues={props.ignoreMissingValues}\n link={props.link}\n />\n </DescriptionListEntry>\n );\n })}\n </DescriptionList>\n );\n}\n","import { Group, Input } from '@mantine/core';\nimport React from 'react';\n\nexport interface CheckboxFormSectionProps {\n htmlFor?: string;\n title?: string;\n description?: string;\n children?: React.ReactNode;\n}\n\nexport function CheckboxFormSection(props: CheckboxFormSectionProps): JSX.Element {\n return (\n <Group noWrap>\n <div>{props.children}</div>\n <div>\n <Input.Wrapper id={props.htmlFor} label={props.title} description={props.description}>\n {(() => null)()}\n </Input.Wrapper>\n </div>\n </Group>\n );\n}\n","import { Input } from '@mantine/core';\nimport { OperationOutcome } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { getErrorsForInput } from '../utils/outcomes';\n\nexport interface FormSectionProps {\n title?: string;\n htmlFor?: string;\n description?: string;\n outcome?: OperationOutcome;\n children?: React.ReactNode;\n}\n\nexport function FormSection(props: FormSectionProps): JSX.Element {\n return (\n <Input.Wrapper\n id={props.htmlFor}\n label={props.title}\n description={props.description}\n error={getErrorsForInput(props.outcome, props.htmlFor)}\n >\n {props.children}\n </Input.Wrapper>\n );\n}\n","import { MedplumClient } from '@medplum/core';\nimport { Device, Reference, Resource } from '@medplum/fhirtypes';\nimport { useEffect, useState } from 'react';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\n\nconst system: Device = {\n resourceType: 'Device',\n id: 'system',\n deviceName: [\n {\n name: 'System',\n },\n ],\n};\n\n/**\n * React Hook to use a FHIR reference.\n * Handles the complexity of resolving references and caching resources.\n * @param value The resource or reference to resource.\n * @returns The resolved resource.\n */\nexport function useResource<T extends Resource>(value: Reference<T> | T | undefined): T | undefined {\n const medplum = useMedplum();\n const [resource, setResource] = useState<T | undefined>(getInitialResource(medplum, value));\n\n useEffect(() => {\n let subscribed = true;\n\n if (!resource && value && 'reference' in value && value.reference) {\n medplum\n .readReference(value as Reference<T>)\n .then((r) => {\n if (subscribed) {\n setResource(r);\n }\n })\n .catch(() => setResource(undefined));\n }\n\n return (() => (subscribed = false)) as () => void;\n }, [medplum, resource, value]);\n\n return resource;\n}\n\n/**\n * Returns the initial resource value based on the input value.\n * If the input value is a resource, returns the resource.\n * If the input value is a reference to system, returns the system resource.\n * If the input value is a reference to a resource available in the cache, returns the resource.\n * Otherwise, returns undefined.\n * @param medplum The medplum client.\n * @param value The resource or reference to resource.\n * @returns An initial resource if available; undefined otherwise.\n */\nfunction getInitialResource<T extends Resource>(\n medplum: MedplumClient,\n value: Reference<T> | T | undefined\n): T | undefined {\n if (!value) {\n return undefined;\n }\n\n if ('resourceType' in value) {\n return value;\n }\n\n if ('reference' in value) {\n if (value.reference === 'system') {\n return system as T;\n }\n\n return medplum.getCachedReference(value);\n }\n\n return undefined;\n}\n","import { Button, Group, Stack, TextInput } from '@mantine/core';\nimport { capitalize, IndexedStructureDefinition } from '@medplum/core';\nimport { ElementDefinition, ElementDefinitionType, OperationOutcome, Reference, Resource } from '@medplum/fhirtypes';\nimport React, { useEffect, useState } from 'react';\nimport { BackboneElementInput } from '../BackboneElementInput/BackboneElementInput';\nimport { FormSection } from '../FormSection/FormSection';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { useResource } from '../useResource/useResource';\n\nexport interface ResourceFormProps {\n defaultValue: Resource | Reference;\n outcome?: OperationOutcome;\n onSubmit: (resource: Resource) => void;\n onDelete?: (resource: Resource) => void;\n}\n\nexport function ResourceForm(props: ResourceFormProps): JSX.Element {\n const medplum = useMedplum();\n const defaultValue = useResource(props.defaultValue);\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>();\n const [value, setValue] = useState<Resource | undefined>();\n\n useEffect(() => {\n if (defaultValue) {\n setValue(JSON.parse(JSON.stringify(defaultValue)));\n medplum.requestSchema(defaultValue.resourceType).then(setSchema).catch(console.log);\n }\n }, [medplum, defaultValue]);\n\n if (!schema || !value) {\n return <div>Loading...</div>;\n }\n\n return (\n <form\n noValidate\n autoComplete=\"off\"\n onSubmit={(e: React.FormEvent) => {\n e.preventDefault();\n if (props.onSubmit) {\n props.onSubmit(value);\n }\n }}\n >\n <Stack mb=\"xl\">\n <FormSection title=\"Resource Type\" htmlFor=\"resourceType\" outcome={props.outcome}>\n <TextInput name=\"resourceType\" defaultValue={value.resourceType} disabled={true} />\n </FormSection>\n <FormSection title=\"ID\" htmlFor=\"id\" outcome={props.outcome}>\n <TextInput name=\"id\" defaultValue={value.id} disabled={true} />\n </FormSection>\n </Stack>\n <BackboneElementInput\n typeName={value.resourceType}\n defaultValue={value}\n outcome={props.outcome}\n onChange={setValue}\n />\n <Group position=\"right\" mt=\"xl\">\n <Button type=\"submit\">OK</Button>\n {props.onDelete && (\n <Button\n variant=\"outline\"\n color=\"red\"\n type=\"button\"\n onClick={() => {\n (props.onDelete as (resource: Resource) => void)(value);\n }}\n >\n Delete\n </Button>\n )}\n </Group>\n </form>\n );\n}\n\nexport function setPropertyValue(\n obj: any,\n key: string,\n propName: string,\n elementDefinition: ElementDefinition,\n value: any\n): any {\n const types = elementDefinition.type as ElementDefinitionType[];\n if (types.length > 1) {\n for (const type of types) {\n const compoundKey = key.replace('[x]', capitalize(type.code as string));\n if (compoundKey in obj) {\n delete obj[compoundKey];\n }\n }\n }\n obj[propName] = value;\n return obj;\n}\n","import { MultiSelect } from '@mantine/core';\nimport { ElementDefinition, ValueSetExpansionContains } from '@medplum/fhirtypes';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\n\nexport interface ValueSetAutocompleteProps {\n property: ElementDefinition;\n name: string;\n placeholder?: string;\n defaultValue?: ValueSetExpansionContains;\n onChange?: (value: ValueSetExpansionContains | undefined) => void;\n}\n\ninterface ValueSetAutocompleteItem {\n value: string;\n label: string;\n element: ValueSetExpansionContains;\n}\n\nfunction valueSetElementToAutocompleteItem(element: ValueSetExpansionContains): ValueSetAutocompleteItem {\n return {\n value: element.code as string,\n label: getDisplay(element),\n element,\n };\n}\n\nexport function ValueSetAutocomplete(props: ValueSetAutocompleteProps): JSX.Element {\n const medplum = useMedplum();\n const { property, defaultValue } = props;\n const [textValues, setTextValues] = useState<string[]>(defaultValue?.code ? [defaultValue.code as string] : []);\n\n const [data, setData] = useState<ValueSetAutocompleteItem[]>(\n defaultValue?.code ? [valueSetElementToAutocompleteItem(defaultValue)] : []\n );\n\n const dataRef = useRef<ValueSetAutocompleteItem[]>();\n dataRef.current = data;\n\n const loadValues = useCallback(\n async (input: string): Promise<void> => {\n const system = property.binding?.valueSet as string;\n const valueSet = await medplum.searchValueSet(system, input);\n const valueSetElements = valueSet.expansion?.contains as ValueSetExpansionContains[];\n const newData = [...(dataRef.current as ValueSetAutocompleteItem[])];\n\n for (const valueSetElement of valueSetElements) {\n if (valueSetElement.code && !newData.some((item) => item.value === valueSetElement.code)) {\n newData.push(valueSetElementToAutocompleteItem(valueSetElement));\n }\n }\n\n setData(newData);\n },\n [medplum, property, dataRef]\n );\n\n function handleChange(values: string[]): void {\n setTextValues(values);\n\n const textValue = values[0];\n let currentItem = undefined;\n if (textValue) {\n currentItem = (dataRef.current as ValueSetAutocompleteItem[]).find((item) => item.value === values[0]);\n if (!currentItem) {\n const newElement = { code: textValue, display: textValue };\n currentItem = valueSetElementToAutocompleteItem(newElement);\n setData([...(dataRef.current as ValueSetAutocompleteItem[]), currentItem]);\n }\n }\n\n if (props.onChange) {\n props.onChange(currentItem?.element);\n }\n }\n\n useEffect(() => {\n loadValues('').catch(console.log);\n }, [loadValues]);\n\n return (\n <MultiSelect\n data={data}\n placeholder={props.placeholder}\n searchable\n creatable\n clearable\n value={textValues}\n filter={(value: string, selected: boolean, item: ValueSetAutocompleteItem) =>\n !!(\n textValues.length === 0 &&\n !selected &&\n (item.element.display?.toLowerCase().includes(value.toLowerCase().trim()) ||\n item.element.code?.toLowerCase().includes(value.toLowerCase().trim()))\n )\n }\n onChange={handleChange}\n getCreateLabel={(query) => `+ Create ${query}`}\n onCreate={(query) => valueSetElementToAutocompleteItem({ code: query, display: query })}\n />\n );\n}\n\nfunction getDisplay(item: ValueSetExpansionContains): string {\n return item.display || item.code || '';\n}\n","import { CodeableConcept, ElementDefinition, ValueSetExpansionContains } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { ValueSetAutocomplete } from '../ValueSetAutocomplete/ValueSetAutocomplete';\n\nexport interface CodeableConceptInputProps {\n property: ElementDefinition;\n name: string;\n placeholder?: string;\n defaultValue?: CodeableConcept;\n onChange?: (value: CodeableConcept | undefined) => void;\n}\n\nexport function CodeableConceptInput(props: CodeableConceptInputProps): JSX.Element {\n const [value, setValue] = useState<CodeableConcept | undefined>(props.defaultValue);\n\n function handleChange(newValue: ValueSetExpansionContains | undefined): void {\n const newConcept = newValue && valueSetElementToCodeableConcept(newValue);\n setValue(newConcept);\n if (props.onChange) {\n props.onChange(newConcept);\n }\n }\n\n return (\n <ValueSetAutocomplete\n property={props.property}\n name={props.name}\n placeholder={props.placeholder}\n defaultValue={value && codeableConceptToValueSetElement(value)}\n onChange={handleChange}\n />\n );\n}\n\nfunction codeableConceptToValueSetElement(concept: CodeableConcept): ValueSetExpansionContains {\n return {\n system: concept.coding?.[0]?.system,\n code: concept.coding?.[0]?.code,\n display: concept.coding?.[0]?.display,\n };\n}\n\nfunction valueSetElementToCodeableConcept(element: ValueSetExpansionContains): CodeableConcept {\n return {\n text: element.display,\n coding: [\n {\n system: element.system,\n code: element.code,\n display: element.display,\n },\n ],\n };\n}\n","import { ElementDefinition, ValueSetExpansionContains } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { ValueSetAutocomplete } from '../ValueSetAutocomplete/ValueSetAutocomplete';\n\nexport interface CodeInputProps {\n property: ElementDefinition;\n name: string;\n placeholder?: string;\n defaultValue?: string;\n onChange?: (value: string | undefined) => void;\n}\n\nexport function CodeInput(props: CodeInputProps): JSX.Element {\n const [value, setValue] = useState<string | undefined>(props.defaultValue);\n\n function handleChange(newValue: ValueSetExpansionContains | undefined): void {\n const newCode = valueSetElementToCode(newValue);\n setValue(newCode);\n if (props.onChange) {\n props.onChange(newCode);\n }\n }\n\n return (\n <ValueSetAutocomplete\n property={props.property}\n name={props.name}\n placeholder={props.placeholder}\n defaultValue={codeToValueSetElement(value)}\n onChange={handleChange}\n />\n );\n}\n\nfunction codeToValueSetElement(code: string | undefined): ValueSetExpansionContains | undefined {\n return code ? { code } : undefined;\n}\n\nfunction valueSetElementToCode(element: ValueSetExpansionContains | undefined): string | undefined {\n return element?.code;\n}\n","import { Coding, ElementDefinition, ValueSetExpansionContains } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { ValueSetAutocomplete } from '../ValueSetAutocomplete/ValueSetAutocomplete';\n\nexport interface CodingInputProps {\n property: ElementDefinition;\n name: string;\n placeholder?: string;\n defaultValue?: Coding;\n onChange?: (value: Coding | undefined) => void;\n}\n\nexport function CodingInput(props: CodingInputProps): JSX.Element {\n const [value, setValue] = useState<Coding | undefined>(props.defaultValue);\n\n function handleChange(newValue: ValueSetExpansionContains | undefined): void {\n const newConcept = newValue && valueSetElementToCoding(newValue);\n setValue(newConcept);\n if (props.onChange) {\n props.onChange(newConcept);\n }\n }\n\n return (\n <ValueSetAutocomplete\n property={props.property}\n name={props.name}\n placeholder={props.placeholder}\n defaultValue={value && codingToValueSetElement(value)}\n onChange={handleChange}\n />\n );\n}\n\nfunction codingToValueSetElement(coding: Coding): ValueSetExpansionContains {\n return {\n system: coding.system,\n code: coding.code,\n display: coding.display,\n };\n}\n\nfunction valueSetElementToCoding(element: ValueSetExpansionContains): Coding {\n return {\n system: element.system,\n code: element.code,\n display: element.display,\n };\n}\n","import { Group, NativeSelect, TextInput } from '@mantine/core';\nimport { ContactPoint } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\n\nexport interface ContactPointInputProps {\n name: string;\n defaultValue?: ContactPoint;\n onChange?: (value: ContactPoint | undefined) => void;\n}\n\nexport function ContactPointInput(props: ContactPointInputProps): JSX.Element {\n const [contactPoint, setContactPoint] = useState(props.defaultValue);\n\n const ref = useRef<ContactPoint>();\n ref.current = contactPoint;\n\n function setContactPointWrapper(newValue: ContactPoint | undefined): void {\n if (newValue && Object.keys(newValue).length === 0) {\n newValue = undefined;\n }\n setContactPoint(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n function setSystem(system: 'url' | 'phone' | 'fax' | 'email' | 'pager' | 'sms' | 'other'): void {\n const newValue: ContactPoint = { ...ref.current, system };\n if (!system) {\n delete newValue.system;\n }\n setContactPointWrapper(newValue);\n }\n\n function setUse(use: 'home' | 'work' | 'temp' | 'old' | 'mobile'): void {\n const newValue: ContactPoint = { ...ref.current, use };\n if (!use) {\n delete newValue.use;\n }\n setContactPointWrapper(newValue);\n }\n\n function setValue(value: string): void {\n const newValue: ContactPoint = { ...ref.current, value };\n if (!value) {\n delete newValue.value;\n }\n setContactPointWrapper(newValue);\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <NativeSelect\n data-testid=\"system\"\n defaultValue={contactPoint?.system}\n onChange={(e) =>\n setSystem(e.currentTarget.value as 'url' | 'phone' | 'fax' | 'email' | 'pager' | 'sms' | 'other')\n }\n data={['', 'email', 'phone', 'fax', 'pager', 'sms', 'other']}\n />\n <NativeSelect\n data-testid=\"use\"\n defaultValue={contactPoint?.use}\n onChange={(e) => setUse(e.currentTarget.value as 'home' | 'work' | 'temp' | 'old' | 'mobile')}\n data={['', 'home', 'work', 'temp', 'old', 'mobile']}\n />\n <TextInput\n placeholder=\"Value\"\n defaultValue={contactPoint?.value}\n onChange={(e) => setValue(e.currentTarget.value)}\n />\n </Group>\n );\n}\n","import { Group, TextInput } from '@mantine/core';\nimport { ContactDetail, ContactPoint } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { ContactPointInput } from '../ContactPointInput/ContactPointInput';\n\nexport interface ContactDetailInputProps {\n name: string;\n defaultValue?: ContactDetail;\n onChange?: (value: ContactDetail) => void;\n}\n\nexport function ContactDetailInput(props: ContactDetailInputProps): JSX.Element {\n const [contactPoint, setContactDetail] = useState(props.defaultValue);\n\n const ref = useRef<ContactDetail>();\n ref.current = contactPoint;\n\n function setContactDetailWrapper(newValue: ContactDetail): void {\n setContactDetail(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n function setName(name: string): void {\n const newValue: ContactDetail = { ...ref.current, name };\n if (!name) {\n delete newValue.name;\n }\n setContactDetailWrapper(newValue);\n }\n\n function setTelecom(telecom: ContactPoint | undefined): void {\n const newValue: ContactDetail = { ...ref.current, telecom: telecom && [telecom] };\n if (!telecom) {\n delete newValue.telecom;\n }\n setContactDetailWrapper(newValue);\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <TextInput\n data-testid={props.name + '-name'}\n name={props.name + '-name'}\n placeholder=\"Name\"\n style={{ width: 180 }}\n defaultValue={contactPoint?.name}\n onChange={(e) => setName(e.currentTarget.value)}\n />\n <ContactPointInput\n name={props.name + '-telecom'}\n defaultValue={contactPoint?.telecom?.[0]}\n onChange={setTelecom}\n />\n </Group>\n );\n}\n","import { TextInput } from '@mantine/core';\nimport { isValidDate } from '@medplum/core';\nimport { OperationOutcome } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { getErrorsForInput } from '../utils/outcomes';\n\nexport interface DateTimeInputProps {\n name?: string;\n placeholder?: string;\n defaultValue?: string;\n outcome?: OperationOutcome;\n onChange?: (value: string) => void;\n}\n\n/**\n * The DateTimeInput component is a wrapper around the HTML5 input type=\"datetime-local\".\n * The main purpose is to reconcile time zones.\n * Most of our date/time values are in ISO-8601, which includes a time zone offset.\n * The datetime-local input does not support the time zone offset.\n * @param props The Input props.\n * @returns The JSX element to render.\n */\nexport function DateTimeInput(props: DateTimeInputProps): JSX.Element {\n return (\n <TextInput\n id={props.name}\n name={props.name}\n data-testid={props.name}\n placeholder={props.placeholder}\n type={getInputType()}\n defaultValue={convertIsoToLocal(props.defaultValue)}\n error={getErrorsForInput(props.outcome, props.name)}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (props.onChange) {\n const newValue = e.currentTarget.value;\n props.onChange(convertLocalToIso(newValue));\n }\n }}\n />\n );\n}\n\n/**\n * Converts an ISO-8601 date/time string to a local date/time string.\n * @param isoString The ISO-8601 date/time string to convert.\n * @returns The local date/time string.\n */\nexport function convertIsoToLocal(isoString: string | undefined): string {\n if (!isoString) {\n return '';\n }\n\n // Convert the ISO-8601 date to a local datetime-local value.\n // See: https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#local_date_and_time_strings\n // See: https://stackoverflow.com/a/60368477\n const date = new Date(isoString);\n if (!isValidDate(date)) {\n // If the input string was malformed, return an empty string.\n return '';\n }\n\n return date.toLocaleDateString('sv') + 'T' + date.toLocaleTimeString('sv');\n}\n\n/**\n * Converts a local date/time string to an ISO-8601 date/time string.\n * @param localString The local date/time string to convert.\n * @returns The ISO-8601 date/time string.\n */\nexport function convertLocalToIso(localString: string | undefined): string {\n if (!localString) {\n return '';\n }\n\n // Try to parse the local string as a Date\n // JavaScript's Date() constructor defaults to the local time zone.\n // The Date() constructor will throw if the value is malformed.\n const date = new Date(localString);\n if (!isValidDate(date)) {\n // If the input string was malformed, return an empty string.\n return '';\n }\n\n return date.toISOString();\n}\n\n/**\n * Returns the input type for the requested type.\n * JSDOM does not support many of the valid <input> type attributes.\n * For example, it won't fire change events for <input type=\"datetime-local\">.\n */\nfunction getInputType(): string {\n return process.env.NODE_ENV === 'test' ? 'text' : 'datetime-local';\n}\n","import { JsonInput } from '@mantine/core';\nimport { stringify } from '@medplum/core';\nimport { Extension } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface ExtensionInputProps {\n name: string;\n defaultValue?: Extension;\n onChange?: (value: Extension) => void;\n}\n\nexport function ExtensionInput(props: ExtensionInputProps): JSX.Element {\n return (\n <JsonInput\n id={props.name}\n name={props.name}\n data-testid=\"extension-input\"\n defaultValue={stringify(props.defaultValue)}\n onChange={(newValue) => {\n if (props.onChange) {\n props.onChange(JSON.parse(newValue));\n }\n }}\n />\n );\n}\n","import { Group, NativeSelect, TextInput } from '@mantine/core';\nimport { HumanName } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\n\nexport interface HumanNameInputProps {\n name: string;\n defaultValue?: HumanName;\n onChange?: (value: HumanName) => void;\n}\n\nexport function HumanNameInput(props: HumanNameInputProps): JSX.Element {\n const [value, setValue] = useState<HumanName | undefined>(props.defaultValue);\n\n const valueRef = useRef<HumanName>();\n valueRef.current = value;\n\n function setValueWrapper(newValue: HumanName): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n function setUse(use: 'temp' | 'old' | 'usual' | 'official' | 'nickname' | 'anonymous' | 'maiden' | undefined): void {\n setValueWrapper({ ...valueRef.current, use: use ? use : undefined });\n }\n\n function setPrefix(prefix: string): void {\n setValueWrapper({\n ...valueRef.current,\n prefix: prefix ? prefix.split(' ') : undefined,\n });\n }\n\n function setGiven(given: string): void {\n setValueWrapper({\n ...valueRef.current,\n given: given ? given.split(' ') : undefined,\n });\n }\n\n function setFamily(family: string): void {\n setValueWrapper({\n ...valueRef.current,\n family: family ? family : undefined,\n });\n }\n\n function setSuffix(suffix: string): void {\n setValueWrapper({\n ...valueRef.current,\n suffix: suffix ? suffix.split(' ') : undefined,\n });\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <NativeSelect\n defaultValue={value?.use}\n data-testid=\"use\"\n onChange={(e) =>\n setUse(e.currentTarget.value as 'temp' | 'old' | 'usual' | 'official' | 'nickname' | 'anonymous' | 'maiden')\n }\n data={['', 'temp', 'old', 'usual', 'official', 'nickname', 'anonymous', 'maiden']}\n />\n <TextInput\n placeholder=\"Prefix\"\n defaultValue={value?.prefix?.join(' ')}\n onChange={(e) => setPrefix(e.currentTarget.value)}\n />\n <TextInput\n placeholder=\"Given\"\n defaultValue={value?.given?.join(' ')}\n onChange={(e) => setGiven(e.currentTarget.value)}\n />\n <TextInput placeholder=\"Family\" defaultValue={value?.family} onChange={(e) => setFamily(e.currentTarget.value)} />\n <TextInput\n placeholder=\"Suffix\"\n defaultValue={value?.suffix?.join(' ')}\n onChange={(e) => setSuffix(e.currentTarget.value)}\n />\n </Group>\n );\n}\n","import { Group, TextInput } from '@mantine/core';\nimport { Identifier } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\n\nexport interface IdentifierInputProps {\n name: string;\n defaultValue?: Identifier;\n onChange?: (value: Identifier) => void;\n}\n\nexport function IdentifierInput(props: IdentifierInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Identifier): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <TextInput\n placeholder=\"System\"\n defaultValue={value?.system}\n onChange={(e) => setValueWrapper({ ...value, system: e.currentTarget.value })}\n />\n <TextInput\n placeholder=\"Value\"\n defaultValue={value?.value}\n onChange={(e) => setValueWrapper({ ...value, value: e.currentTarget.value })}\n />\n </Group>\n );\n}\n","import { Group } from '@mantine/core';\nimport { Period } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { DateTimeInput } from '../DateTimeInput/DateTimeInput';\n\nexport interface PeriodInputProps {\n name: string;\n defaultValue?: Period;\n onChange?: (value: Period) => void;\n}\n\nexport function PeriodInput(props: PeriodInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Period): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <DateTimeInput\n name={props.name + '.start'}\n placeholder=\"Start\"\n defaultValue={value?.start}\n onChange={(newValue) => setValueWrapper({ ...value, start: newValue })}\n />\n <DateTimeInput\n name={props.name + '.end'}\n placeholder=\"End\"\n defaultValue={value?.end}\n onChange={(newValue) => setValueWrapper({ ...value, end: newValue })}\n />\n </Group>\n );\n}\n","import { Group, NativeSelect, TextInput } from '@mantine/core';\nimport { Quantity } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\n\nexport interface QuantityInputProps {\n name: string;\n defaultValue?: Quantity;\n onChange?: (value: Quantity) => void;\n}\n\nexport function QuantityInput(props: QuantityInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Quantity): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <NativeSelect\n style={{ width: 80 }}\n data-testid={props.name + '-comparator'}\n defaultValue={value?.comparator}\n data={['', '<', '<=', '>=', '>']}\n onChange={(e) =>\n setValueWrapper({\n ...value,\n comparator: e.currentTarget.value as '<' | '<=' | '>=' | '>',\n })\n }\n />\n <TextInput\n id={props.name}\n name={props.name}\n data-testid={props.name + '-value'}\n type=\"number\"\n step=\"any\"\n placeholder=\"Value\"\n defaultValue={value?.value?.toString()}\n onChange={(e) =>\n setValueWrapper({\n ...value,\n value: tryParseNumber(e.currentTarget.value),\n })\n }\n />\n <TextInput\n placeholder=\"Unit\"\n data-testid={props.name + '-unit'}\n defaultValue={value?.unit}\n onChange={(e) =>\n setValueWrapper({\n ...value,\n unit: e.currentTarget.value,\n })\n }\n />\n </Group>\n );\n}\n\nfunction tryParseNumber(str: string): number | undefined {\n if (!str) {\n return undefined;\n }\n return parseFloat(str);\n}\n","import { Group } from '@mantine/core';\nimport { Range } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { QuantityInput } from '../QuantityInput/QuantityInput';\n\nexport interface RangeInputProps {\n name: string;\n defaultValue?: Range;\n onChange?: (value: Range) => void;\n}\n\n/**\n * Renders a Range input.\n * See: https://www.hl7.org/fhir/datatypes.html#Range\n * @param props Range input properties.\n * @returns Range input element.\n */\nexport function RangeInput(props: RangeInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Range): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <QuantityInput\n name={props.name + '-low'}\n defaultValue={value?.low}\n onChange={(v) =>\n setValueWrapper({\n ...value,\n low: v,\n })\n }\n />\n\n <QuantityInput\n name={props.name + '-high'}\n defaultValue={value?.high}\n onChange={(v) =>\n setValueWrapper({\n ...value,\n high: v,\n })\n }\n />\n </Group>\n );\n}\n","import { Group } from '@mantine/core';\nimport { Ratio } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { QuantityInput } from '../QuantityInput/QuantityInput';\n\nexport interface RatioInputProps {\n name: string;\n defaultValue?: Ratio;\n onChange?: (value: Ratio) => void;\n}\n\n/**\n * Renders a Ratio input.\n * See: https://www.hl7.org/fhir/datatypes.html#Ratio\n * @param props Ratio input properties.\n * @returns Ratio input element.\n */\nexport function RatioInput(props: RatioInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Ratio): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <QuantityInput\n name={props.name + '-numerator'}\n defaultValue={value?.numerator}\n onChange={(v) =>\n setValueWrapper({\n ...value,\n numerator: v,\n })\n }\n />\n <QuantityInput\n name={props.name + '-denominator'}\n defaultValue={value?.denominator}\n onChange={(v) =>\n setValueWrapper({\n ...value,\n denominator: v,\n })\n }\n />\n </Group>\n );\n}\n","import { Avatar, AvatarProps } from '@mantine/core';\nimport { getDisplayString, getImageSrc } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { useResource } from '../useResource/useResource';\n\nexport interface ResourceAvatarProps extends AvatarProps {\n value?: Reference | Resource;\n link?: boolean;\n}\n\nexport function ResourceAvatar(props: ResourceAvatarProps): JSX.Element {\n const resource = useResource(props.value);\n const text = resource ? getDisplayString(resource) : props.alt ?? '';\n const imageUrl = (resource && getImageSrc(resource)) ?? props.src;\n const radius = props.radius ?? 'xl';\n\n const avatarProps = { ...props };\n delete avatarProps.value;\n delete avatarProps.link;\n\n if (props.link) {\n return (\n <MedplumLink to={resource}>\n <Avatar src={imageUrl} alt={text} radius={radius} {...avatarProps} />\n </MedplumLink>\n );\n }\n\n return <Avatar src={imageUrl} alt={text} radius={radius} {...avatarProps} />;\n}\n","import { Autocomplete, AutocompleteItem, Group, Loader, Text } from '@mantine/core';\nimport { getDisplayString } from '@medplum/core';\nimport { Patient, Reference, Resource, ResourceType } from '@medplum/fhirtypes';\nimport React, { forwardRef, useEffect, useState } from 'react';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { useResource } from '../useResource/useResource';\n\n/**\n * Defines which search parameters will be used by the type ahead to search for each resourceType\n */\nconst SEARCH_CODES: Record<string, string> = {\n Schedule: '_id',\n Task: '_id',\n Patient: 'name',\n Practitioner: 'name',\n Questionnaire: 'name',\n ServiceRequest: '_id',\n DiagnosticReport: '_id',\n Specimen: '_id',\n Observation: 'code',\n RequestGroup: '_id',\n ActivityDefinition: 'name',\n User: 'email',\n};\n\nexport interface ResourceInputProps<T extends Resource = Resource> {\n readonly resourceType: ResourceType;\n readonly name: string;\n readonly defaultValue?: T | Reference<T>;\n readonly placeholder?: string;\n readonly loadOnFocus?: boolean;\n readonly onChange?: (value: T | undefined) => void;\n}\n\nexport function ResourceInput<T extends Resource = Resource>(props: ResourceInputProps<T>): JSX.Element {\n const medplum = useMedplum();\n const defaultValue = useResource(props.defaultValue);\n const [value, setValue] = useState<string>(defaultValue ? getDisplayString(defaultValue) : '');\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState<AutocompleteItem[]>([]);\n\n useEffect(() => {\n if (defaultValue) {\n setValue(getDisplayString(defaultValue));\n }\n }, [defaultValue, setValue]);\n\n async function loadValues(input: string): Promise<void> {\n setLoading(true);\n const searchCode = SEARCH_CODES[props.resourceType] || 'name';\n const searchParams = new URLSearchParams({\n [searchCode]: encodeURIComponent(input),\n _count: '10',\n });\n\n const resources = await medplum.searchResources(props.resourceType, searchParams);\n setData(resources.map((resource) => ({ value: getDisplayString(resource), resource })));\n setLoading(false);\n }\n\n async function handleChange(val: string): Promise<void> {\n setValue(val);\n return loadValues(val);\n }\n\n function handleSelect(item: AutocompleteItem): void {\n setValue(item.value);\n setData([]);\n if (props.onChange) {\n props.onChange(item.resource);\n }\n }\n\n return (\n <Autocomplete\n itemComponent={ItemComponent}\n value={value}\n data={data}\n placeholder={props.placeholder}\n onFocus={() => loadValues(value)}\n onChange={handleChange}\n onItemSubmit={handleSelect}\n rightSection={loading ? <Loader size={16} /> : null}\n />\n );\n}\n\nconst ItemComponent = forwardRef<HTMLDivElement, any>(({ value, resource, ...others }: any, ref) => {\n return (\n <div ref={ref} {...others}>\n <Group noWrap>\n <ResourceAvatar value={resource} />\n <div>\n <Text>{value}</Text>\n <Text size=\"xs\" color=\"dimmed\">\n {(resource as Patient).birthDate}\n </Text>\n </div>\n </Group>\n </div>\n );\n});\n","import { Group, NativeSelect, TextInput } from '@mantine/core';\nimport { createReference } from '@medplum/core';\nimport { Reference, Resource, ResourceType } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { ResourceInput } from '../ResourceInput/ResourceInput';\n\nexport interface ReferenceInputProps {\n name: string;\n placeholder?: string;\n defaultValue?: Reference;\n targetTypes?: string[];\n onChange?: (value: Reference | undefined) => void;\n}\n\nexport function ReferenceInput(props: ReferenceInputProps): JSX.Element {\n const targetTypes = props.targetTypes;\n const initialResourceType = getInitialResourceType(props.defaultValue, targetTypes);\n const [value, setValue] = useState<Reference | undefined>(props.defaultValue);\n const [resourceType, setResourceType] = useState<string | undefined>(initialResourceType);\n\n const valueRef = useRef<Reference>();\n valueRef.current = value;\n\n const resourceTypeRef = useRef<string>();\n resourceTypeRef.current = resourceType;\n\n function setValueHelper(newValue: Reference | undefined): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n {targetTypes ? (\n <NativeSelect\n data-testid=\"reference-input-resource-type-select\"\n defaultValue={resourceType}\n onChange={(e) => setResourceType(e.currentTarget.value)}\n data={targetTypes}\n />\n ) : (\n <TextInput\n data-testid=\"reference-input-resource-type-input\"\n defaultValue={resourceType}\n onChange={(e) => setResourceType(e.currentTarget.value)}\n />\n )}\n <ResourceInput\n resourceType={resourceType as ResourceType}\n name={props.name + '-id'}\n placeholder={props.placeholder}\n defaultValue={value}\n onChange={(item: Resource | undefined) => {\n setValueHelper(item ? createReference(item) : undefined);\n }}\n />\n </Group>\n );\n}\n\nfunction getInitialResourceType(\n defaultValue: Reference | undefined,\n targetTypes: string[] | undefined\n): string | undefined {\n const defaultValueResourceType = defaultValue?.reference?.split('/')[0];\n if (defaultValueResourceType) {\n return defaultValueResourceType;\n }\n\n if (targetTypes && targetTypes.length > 0) {\n return targetTypes[0];\n }\n\n return undefined;\n}\n","import { ActionIcon } from '@mantine/core';\nimport { ElementDefinition } from '@medplum/fhirtypes';\nimport { IconCircleMinus, IconCirclePlus } from '@tabler/icons';\nimport React, { useRef, useState } from 'react';\nimport { ResourcePropertyInput } from '../ResourcePropertyInput/ResourcePropertyInput';\nimport { killEvent } from '../utils/dom';\n\ninterface ResourceArrayInputProps {\n property: ElementDefinition;\n name: string;\n defaultValue?: any[];\n arrayElement?: boolean;\n onChange?: (value: any[]) => void;\n}\n\nexport function ResourceArrayInput(props: ResourceArrayInputProps): JSX.Element {\n const [values, setValues] = useState(\n props.defaultValue && Array.isArray(props.defaultValue) ? props.defaultValue : []\n );\n\n const valuesRef = useRef<any[]>();\n valuesRef.current = values;\n\n function setValuesWrapper(newValues: any[]): void {\n setValues(newValues);\n if (props.onChange) {\n props.onChange(newValues);\n }\n }\n\n return (\n <table style={{ width: '100%', borderCollapse: 'collapse' }}>\n <colgroup>\n <col width=\"97%\" />\n <col width=\"3%\" />\n </colgroup>\n <tbody>\n {values.map((v, index) => (\n <tr key={`${index}-${values.length}`}>\n <td>\n <ResourcePropertyInput\n arrayElement={true}\n property={props.property}\n name={props.name + '.' + index}\n defaultValue={v}\n onChange={(newValue: any) => {\n const copy = [...(valuesRef.current as any[])];\n copy[index] = newValue;\n setValuesWrapper(copy);\n }}\n />\n </td>\n <td style={{ textAlign: 'right' }}>\n <ActionIcon\n title=\"Remove\"\n size=\"sm\"\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n const copy = [...(valuesRef.current as any[])];\n copy.splice(index, 1);\n setValuesWrapper(copy);\n }}\n >\n <IconCircleMinus />\n </ActionIcon>\n </td>\n </tr>\n ))}\n <tr>\n <td></td>\n <td style={{ textAlign: 'right' }}>\n <ActionIcon\n title=\"Add\"\n size=\"sm\"\n color=\"green\"\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n const copy = [...(valuesRef.current as any[])];\n copy.push(undefined);\n setValuesWrapper(copy);\n }}\n >\n <IconCirclePlus />\n </ActionIcon>\n </td>\n </tr>\n </tbody>\n </table>\n );\n}\n","import { Button, Checkbox, Group, Modal, NativeSelect, TextInput } from '@mantine/core';\nimport { formatTiming } from '@medplum/core';\nimport { Timing, TimingRepeat } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { DateTimeInput } from '../DateTimeInput/DateTimeInput';\nimport { FormSection } from '../FormSection/FormSection';\n\nconst daysOfWeek = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n\ntype DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\nexport interface TimingInputProps {\n name: string;\n defaultValue?: Timing;\n onChange?: (newValue: Timing) => void;\n}\n\nexport function TimingInput(props: TimingInputProps): JSX.Element {\n const [value, setValue] = useState<Timing>(props.defaultValue || {});\n const [open, setOpen] = useState(false);\n\n const valueRef = useRef<Timing>();\n valueRef.current = value;\n\n return (\n <>\n <Group spacing=\"xs\" grow noWrap>\n <span>{formatTiming(valueRef.current) || 'No repeat'}</span>\n <Button onClick={() => setOpen(true)}>Edit</Button>\n </Group>\n <TimingEditorDialog\n visible={open}\n defaultValue={valueRef.current}\n onOk={(newValue) => {\n if (props.onChange) {\n props.onChange(newValue);\n }\n setValue(newValue);\n setOpen(false);\n }}\n onCancel={() => setOpen(false)}\n />\n </>\n );\n}\n\ninterface TimingEditorDialogProps {\n visible: boolean;\n defaultValue?: Timing;\n onOk: (newValue: Timing) => void;\n onCancel: () => void;\n}\n\nfunction TimingEditorDialog(props: TimingEditorDialogProps): JSX.Element {\n const [value, setValue] = useState<Timing>(props.defaultValue || {});\n\n const valueRef = useRef<Timing>();\n valueRef.current = value;\n\n function setStart(newStart: string): void {\n setValue({ ...valueRef.current, event: [newStart] });\n }\n\n function setRepeat(repeat: TimingRepeat): void {\n setValue({ ...valueRef.current, repeat });\n }\n\n function setPeriod(newPeriod: number | undefined): void {\n setRepeat({ ...valueRef.current?.repeat, period: newPeriod });\n }\n\n function setPeriodUnit(newPeriodUnit: 'a' | 's' | 'min' | 'h' | 'd' | 'wk' | 'mo' | undefined): void {\n setRepeat({ ...valueRef.current?.repeat, periodUnit: newPeriodUnit });\n }\n\n function setDayOfWeek(day: DayOfWeek, enabled: boolean): void {\n if (enabled) {\n addDayOfWeek(day);\n } else {\n removeDayOfWeek(day);\n }\n }\n\n function addDayOfWeek(day: DayOfWeek): void {\n const existing = valueRef.current?.repeat?.dayOfWeek || [];\n if (!existing.includes(day)) {\n setRepeat({ ...valueRef.current?.repeat, dayOfWeek: [...existing, day] });\n }\n }\n\n function removeDayOfWeek(day: DayOfWeek): void {\n const existing = valueRef.current?.repeat?.dayOfWeek || [];\n if (existing.includes(day)) {\n setRepeat({ ...valueRef.current?.repeat, dayOfWeek: existing.filter((d) => d !== day) });\n }\n }\n\n return (\n <Modal title=\"Timing\" closeButtonLabel=\"Close\" opened={props.visible} onClose={() => props.onCancel()}>\n <div style={{ padding: '5px 20px', textAlign: 'left' }}>\n <FormSection title=\"Starts on\" htmlFor={'timing-dialog-start'}>\n <DateTimeInput name={'timing-dialog-start'} onChange={(newValue) => setStart(newValue)} />\n </FormSection>\n <FormSection title=\"Repeat every\" htmlFor={'timing-dialog-period'}>\n <Group spacing=\"xs\" grow noWrap>\n <TextInput\n type=\"number\"\n step={1}\n id=\"timing-dialog-period\"\n name=\"timing-dialog-period\"\n defaultValue={value?.repeat?.period}\n onChange={(e) => setPeriod(parseInt(e.currentTarget.value))}\n />\n <NativeSelect\n id=\"timing-dialog-periodUnit\"\n name=\"timing-dialog-periodUnit\"\n defaultValue={value?.repeat?.periodUnit}\n onChange={(e) => setPeriodUnit(e.currentTarget.value as 'a' | 'd' | 'wk' | 'mo' | undefined)}\n data={[\n { label: 'day', value: 'd' },\n { label: 'week', value: 'wk' },\n { label: 'month', value: 'mo' },\n { label: 'year', value: 'a' },\n ]}\n />\n </Group>\n </FormSection>\n <FormSection title=\"Repeat on\">\n <Group spacing=\"xs\" grow noWrap>\n {daysOfWeek.map((day) => (\n <React.Fragment key={day}>\n <label htmlFor={'timing-dialog-repeat-' + day}>{day.charAt(0).toUpperCase()}</label>\n <Checkbox\n id={'timing-dialog-repeat-' + day}\n name={'timing-dialog-repeat-' + day}\n onChange={(e) => setDayOfWeek(day as DayOfWeek, e.currentTarget.checked)}\n />\n </React.Fragment>\n ))}\n </Group>\n </FormSection>\n </div>\n <Button onClick={() => props.onOk(value)}>OK</Button>\n </Modal>\n );\n}\n","import { Checkbox, Group, NativeSelect, Textarea, TextInput } from '@mantine/core';\nimport { buildTypeName, capitalize, PropertyType } from '@medplum/core';\nimport { ElementDefinition, ElementDefinitionType, OperationOutcome } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { AddressInput } from '../AddressInput/AddressInput';\nimport { AnnotationInput } from '../AnnotationInput/AnnotationInput';\nimport { AttachmentArrayInput } from '../AttachmentArrayInput/AttachmentArrayInput';\nimport { AttachmentInput } from '../AttachmentInput/AttachmentInput';\nimport { BackboneElementInput } from '../BackboneElementInput/BackboneElementInput';\nimport { CodeableConceptInput } from '../CodeableConceptInput/CodeableConceptInput';\nimport { CodeInput } from '../CodeInput/CodeInput';\nimport { CodingInput } from '../CodingInput/CodingInput';\nimport { ContactDetailInput } from '../ContactDetailInput/ContactDetailInput';\nimport { ContactPointInput } from '../ContactPointInput/ContactPointInput';\nimport { DateTimeInput } from '../DateTimeInput/DateTimeInput';\nimport { ExtensionInput } from '../ExtensionInput/ExtensionInput';\nimport { HumanNameInput } from '../HumanNameInput/HumanNameInput';\nimport { IdentifierInput } from '../IdentifierInput/IdentifierInput';\nimport { PeriodInput } from '../PeriodInput/PeriodInput';\nimport { QuantityInput } from '../QuantityInput/QuantityInput';\nimport { RangeInput } from '../RangeInput/RangeInput';\nimport { RatioInput } from '../RatioInput/RatioInput';\nimport { ReferenceInput } from '../ReferenceInput/ReferenceInput';\nimport { ResourceArrayInput } from '../ResourceArrayInput/ResourceArrayInput';\nimport { TimingInput } from '../TimingInput/TimingInput';\nimport { getErrorsForInput } from '../utils/outcomes';\n\nexport interface ResourcePropertyInputProps {\n property: ElementDefinition;\n name: string;\n defaultPropertyType?: PropertyType;\n defaultValue?: any;\n arrayElement?: boolean;\n onChange?: (value: any, propName?: string) => void;\n outcome?: OperationOutcome;\n}\n\nexport function ResourcePropertyInput(props: ResourcePropertyInputProps): JSX.Element {\n const property = props.property;\n const propertyType = props.defaultPropertyType ?? (property.type?.[0]?.code as PropertyType);\n const name = props.name;\n const value = props.defaultValue;\n\n if (property.max === '*' && !props.arrayElement) {\n if (propertyType === 'Attachment') {\n return <AttachmentArrayInput name={name} defaultValue={value} onChange={props.onChange} />;\n }\n return <ResourceArrayInput property={property} name={name} defaultValue={value} onChange={props.onChange} />;\n }\n\n const propertyTypes = property.type as ElementDefinitionType[];\n if (propertyTypes.length > 1) {\n return <ElementDefinitionInputSelector elementDefinitionTypes={propertyTypes} {...props} />;\n } else {\n return <ElementDefinitionTypeInput elementDefinitionType={propertyTypes[0]} {...props} />;\n }\n}\n\nexport interface ElementDefinitionSelectorProps extends ResourcePropertyInputProps {\n elementDefinitionTypes: ElementDefinitionType[];\n}\n\nexport function ElementDefinitionInputSelector(props: ElementDefinitionSelectorProps): JSX.Element {\n const propertyTypes = props.elementDefinitionTypes;\n let initialPropertyType: ElementDefinitionType | undefined = undefined;\n if (props.defaultPropertyType) {\n initialPropertyType = propertyTypes.find((t) => t.code === props.defaultPropertyType) as ElementDefinitionType;\n }\n if (!initialPropertyType) {\n initialPropertyType = propertyTypes[0];\n }\n const [selectedType, setSelectedType] = useState(initialPropertyType);\n return (\n <Group spacing=\"xs\" grow noWrap>\n <NativeSelect\n style={{ width: '200px' }}\n defaultValue={selectedType?.code}\n onChange={(e) => {\n setSelectedType(\n propertyTypes.find(\n (type: ElementDefinitionType) => type.code === e.currentTarget.value\n ) as ElementDefinitionType\n );\n }}\n data={propertyTypes.map((type: ElementDefinitionType) => ({\n value: type.code as string,\n label: type.code as string,\n }))}\n />\n <ElementDefinitionTypeInput\n {...props}\n elementDefinitionType={selectedType}\n onChange={(newValue: any) => {\n if (props.onChange) {\n props.onChange(newValue, props.name.replace('[x]', capitalize(selectedType.code as string)));\n }\n }}\n />\n </Group>\n );\n}\n\nexport interface ElementDefinitionTypeInputProps extends ResourcePropertyInputProps {\n elementDefinitionType: ElementDefinitionType;\n}\n\nexport function ElementDefinitionTypeInput(props: ElementDefinitionTypeInputProps): JSX.Element {\n const property = props.property;\n const propertyType = props.elementDefinitionType.code as PropertyType;\n const name = props.name;\n const value = props.defaultValue;\n\n switch (propertyType) {\n // 2.24.0.1 Primitive Types\n // https://www.hl7.org/fhir/datatypes.html#primitive\n\n case PropertyType.SystemString:\n case PropertyType.canonical:\n case PropertyType.string:\n case PropertyType.time:\n case PropertyType.uri:\n case PropertyType.url:\n return (\n <TextInput\n id={name}\n name={name}\n data-testid={name}\n defaultValue={value}\n onChange={(e) => {\n if (props.onChange) {\n props.onChange(e.currentTarget.value);\n }\n }}\n error={getErrorsForInput(props.outcome, name)}\n />\n );\n case PropertyType.date:\n return (\n <TextInput\n type=\"date\"\n id={name}\n name={name}\n data-testid={name}\n defaultValue={value}\n onChange={(e) => {\n if (props.onChange) {\n props.onChange(e.currentTarget.value);\n }\n }}\n error={getErrorsForInput(props.outcome, name)}\n />\n );\n case PropertyType.dateTime:\n case PropertyType.instant:\n return <DateTimeInput name={name} defaultValue={value} onChange={props.onChange} outcome={props.outcome} />;\n case PropertyType.decimal:\n case PropertyType.integer:\n case PropertyType.positiveInt:\n case PropertyType.unsignedInt:\n return (\n <TextInput\n type=\"number\"\n step={propertyType === PropertyType.decimal ? 'any' : '1'}\n id={name}\n name={name}\n data-testid={name}\n defaultValue={value}\n onChange={(e) => {\n if (props.onChange) {\n props.onChange(e.currentTarget.valueAsNumber);\n }\n }}\n />\n );\n case PropertyType.code:\n return <CodeInput property={property} name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.boolean:\n return (\n <Checkbox\n id={name}\n name={name}\n data-testid={name}\n defaultChecked={!!value}\n onChange={(e) => {\n if (props.onChange) {\n props.onChange(e.currentTarget.checked);\n }\n }}\n />\n );\n case PropertyType.markdown:\n return (\n <Textarea\n id={name}\n name={name}\n data-testid={name}\n defaultValue={value}\n onChange={(e) => {\n if (props.onChange) {\n props.onChange(e.currentTarget.value);\n }\n }}\n />\n );\n\n // 2.24.0.2 Complex Types\n // https://www.hl7.org/fhir/datatypes.html#complex\n\n case PropertyType.Address:\n return <AddressInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Annotation:\n return <AnnotationInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Attachment:\n return <AttachmentInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.CodeableConcept:\n return <CodeableConceptInput property={property} name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Coding:\n return <CodingInput property={property} name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.ContactDetail:\n return <ContactDetailInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.ContactPoint:\n return <ContactPointInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Extension:\n return <ExtensionInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.HumanName:\n return <HumanNameInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Identifier:\n return <IdentifierInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Period:\n return <PeriodInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Duration:\n case PropertyType.Quantity:\n return <QuantityInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Range:\n return <RangeInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Ratio:\n return <RatioInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Reference:\n return (\n <ReferenceInput\n name={name}\n defaultValue={value}\n targetTypes={getTargetTypes(property)}\n onChange={props.onChange}\n />\n );\n case PropertyType.Timing:\n return <TimingInput name={name} defaultValue={value} onChange={props.onChange} />;\n case PropertyType.Dosage:\n case PropertyType.UsageContext:\n return (\n <BackboneElementInput\n typeName={propertyType}\n defaultValue={value}\n onChange={props.onChange}\n outcome={props.outcome}\n />\n );\n default:\n return (\n <BackboneElementInput\n typeName={buildTypeName(property.path?.split('.') as string[])}\n defaultValue={value}\n onChange={props.onChange}\n outcome={props.outcome}\n />\n );\n }\n}\n\nfunction getTargetTypes(property?: ElementDefinition): string[] | undefined {\n return property?.type?.[0]?.targetProfile?.map((p) => p.split('/').pop() as string);\n}\n","import { Stack } from '@mantine/core';\nimport { getPropertyDisplayName, globalSchema } from '@medplum/core';\nimport { OperationOutcome } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { CheckboxFormSection } from '../CheckboxFormSection/CheckboxFormSection';\nimport { DEFAULT_IGNORED_PROPERTIES } from '../constants';\nimport { FormSection } from '../FormSection/FormSection';\nimport { setPropertyValue } from '../ResourceForm/ResourceForm';\nimport { getValueAndType } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\nimport { ResourcePropertyInput } from '../ResourcePropertyInput/ResourcePropertyInput';\n\nexport interface BackboneElementInputProps {\n typeName: string;\n defaultValue?: any;\n outcome?: OperationOutcome;\n onChange?: (value: any) => void;\n}\n\nexport function BackboneElementInput(props: BackboneElementInputProps): JSX.Element {\n const [value, setValue] = useState<any>(props.defaultValue ?? {});\n\n function setValueWrapper(newValue: any): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n const typeName = props.typeName;\n const typeSchema = globalSchema.types[typeName];\n if (!typeSchema) {\n return <div>{typeName}&nbsp;not implemented</div>;\n }\n\n const typedValue = { type: typeName, value };\n\n return (\n <Stack>\n {Object.entries(typeSchema.properties).map((entry) => {\n const key = entry[0];\n if (key === 'id' || DEFAULT_IGNORED_PROPERTIES.indexOf(key) >= 0) {\n return null;\n }\n const property = entry[1];\n if (!property.type) {\n return null;\n }\n\n const [propertyValue, propertyType] = getValueAndType(typedValue, key);\n\n if (property.type.length === 1 && property.type[0].code === 'boolean') {\n return (\n <CheckboxFormSection\n key={key}\n title={getPropertyDisplayName(key)}\n description={property.definition}\n htmlFor={key}\n >\n <ResourcePropertyInput\n property={property}\n name={key}\n defaultValue={propertyValue}\n defaultPropertyType={propertyType}\n outcome={props.outcome}\n onChange={(newValue: any, propName?: string) => {\n setValueWrapper(setPropertyValue(value, key, propName ?? key, entry[1], newValue));\n }}\n />\n </CheckboxFormSection>\n );\n }\n\n return (\n <FormSection\n key={key}\n title={getPropertyDisplayName(key)}\n description={property.definition}\n htmlFor={key}\n outcome={props.outcome}\n >\n <ResourcePropertyInput\n property={property}\n name={key}\n defaultValue={propertyValue}\n defaultPropertyType={propertyType}\n outcome={props.outcome}\n onChange={(newValue: any, propName?: string) => {\n setValueWrapper(setPropertyValue(value, key, propName ?? key, entry[1], newValue));\n }}\n />\n </FormSection>\n );\n })}\n </Stack>\n );\n}\n","import { Button, createStyles, Group } from '@mantine/core';\nimport { Slot } from '@medplum/fhirtypes';\nimport React, { useMemo, useState } from 'react';\n\nconst useStyles = createStyles((theme) => ({\n table: {\n width: 350,\n\n '& th': {\n fontWeight: 'normal',\n fontSize: 11,\n padding: 8,\n textAlign: 'center',\n },\n\n '& td': {\n padding: '2px 4px',\n },\n\n '& td button': {\n width: 44,\n height: 44,\n color: theme.colors[theme.primaryColor][5],\n fontSize: 16,\n fontWeight: 500,\n textAlign: 'center',\n padding: 0,\n backgroundColor: theme.colors[theme.primaryColor][0],\n border: 0,\n borderRadius: '50%',\n cursor: 'pointer',\n },\n\n '& td button:hover': {\n backgroundColor: theme.colors[theme.primaryColor][1],\n },\n\n '& td button:disabled': {\n backgroundColor: 'transparent',\n cursor: 'default',\n color: theme.colors.gray[4],\n fontWeight: 'normal',\n },\n },\n}));\n\nexport interface CalendarInputProps {\n slots: Slot[];\n onChangeMonth: (date: Date) => void;\n onClick: (date: Date) => void;\n}\n\n/**\n * Returns a month display string (e.g. \"January 2020\").\n * @param date Any date within the month.\n * @returns The month display string (e.g. \"January 2020\")\n */\nexport function getMonthString(date: Date): string {\n return date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\n}\n\ninterface CalendarCell {\n date: Date;\n available: boolean;\n}\n\ntype OptionalCalendarCell = CalendarCell | undefined;\n\nexport function CalendarInput(props: CalendarInputProps): JSX.Element {\n const { classes } = useStyles();\n const { onChangeMonth, onClick } = props;\n const [month, setMonth] = useState<Date>(getStartMonth);\n\n function moveMonth(delta: number): void {\n setMonth((currMonth) => {\n const newMonth = new Date(currMonth.getTime());\n newMonth.setMonth(currMonth.getMonth() + delta);\n onChangeMonth(newMonth);\n return newMonth;\n });\n }\n\n const grid = useMemo(() => buildGrid(month, props.slots), [month, props.slots]);\n\n return (\n <div>\n <Group position=\"apart\" spacing=\"xs\" grow noWrap>\n <p style={{ flex: 1 }}>{getMonthString(month)}</p>\n <Group position=\"right\" spacing=\"xs\">\n <Button variant=\"outline\" aria-label=\"Previous month\" onClick={() => moveMonth(-1)}>\n &lt;\n </Button>\n <Button variant=\"outline\" aria-label=\"Next month\" onClick={() => moveMonth(1)}>\n &gt;\n </Button>\n </Group>\n </Group>\n <table className={classes.table}>\n <thead>\n <tr>\n <th>SUN</th>\n <th>MON</th>\n <th>TUE</th>\n <th>WED</th>\n <th>THU</th>\n <th>FRI</th>\n <th>SAT</th>\n </tr>\n </thead>\n <tbody>\n {grid.map((week, weekIndex) => (\n <tr key={'week-' + weekIndex}>\n {week.map((day, dayIndex) => (\n <td key={'day-' + dayIndex}>\n {day && (\n <Button disabled={!day.available} onClick={() => onClick(day.date)}>\n {day.date.getDate()}\n </Button>\n )}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport function getStartMonth(): Date {\n const result = new Date();\n result.setDate(1);\n result.setHours(0, 0, 0, 0);\n return result;\n}\n\nfunction buildGrid(startDate: Date, slots: Slot[]): OptionalCalendarCell[][] {\n const d = new Date(startDate.getFullYear(), startDate.getMonth());\n const grid: OptionalCalendarCell[][] = [];\n let row: OptionalCalendarCell[] = [];\n\n // Fill leading empty days\n for (let i = 0; i < d.getDay(); i++) {\n row.push(undefined);\n }\n\n while (d.getMonth() === startDate.getMonth()) {\n row.push({\n date: new Date(d.getTime()),\n available: isDayAvailable(d, slots),\n });\n\n if (d.getDay() === 6) {\n grid.push(row);\n row = [];\n }\n\n d.setDate(d.getDate() + 1);\n }\n\n // Fill trailing empty days\n if (d.getDay() !== 0) {\n for (let i = d.getDay(); i < 7; i++) {\n row.push(undefined);\n }\n grid.push(row);\n }\n\n return grid;\n}\n\n/**\n * Returns true if the given date is available for booking.\n * @param day The day to check.\n * @param slots The list of available slots.\n * @returns True if there are any available slots for the day.\n */\nfunction isDayAvailable(day: Date, slots: Slot[]): boolean {\n // Note that slot start and end time may or may not be in UTC.\n for (const slot of slots) {\n const slotStart = new Date(slot.start as string);\n if (\n slotStart.getFullYear() === day.getFullYear() &&\n slotStart.getMonth() === day.getMonth() &&\n slotStart.getDate() === day.getDate()\n ) {\n return true;\n }\n }\n\n return false;\n}\n","import { Text, TextProps } from '@mantine/core';\nimport { getDisplayString } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { useResource } from '../useResource/useResource';\n\nexport interface ResourceNameProps extends TextProps {\n value?: Reference | Resource;\n link?: boolean;\n}\n\nexport function ResourceName(props: ResourceNameProps): JSX.Element | null {\n const { value, link, ...rest } = props;\n const resource = useResource(value);\n if (!resource) {\n return null;\n }\n\n const text = getDisplayString(resource);\n\n return link ? (\n <MedplumLink to={resource} {...rest}>\n {text}\n </MedplumLink>\n ) : (\n <Text component=\"span\" {...rest}>\n {text}\n </Text>\n );\n}\n","import { Group } from '@mantine/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { ResourceName } from '../ResourceName/ResourceName';\n\nexport interface ResourceBadgeProps {\n value?: Reference | Resource;\n link?: boolean;\n}\n\nexport function ResourceBadge(props: ResourceBadgeProps): JSX.Element {\n return (\n <Group spacing=\"xs\">\n <ResourceAvatar size={24} radius={12} value={props.value} link={props.link} />\n <ResourceName value={props.value} link={props.link} />\n </Group>\n );\n}\n","import { createStyles, Group, Stack, Text, Title } from '@mantine/core';\nimport { capitalize, formatDateTime, formatObservationValue } from '@medplum/core';\nimport {\n DiagnosticReport,\n Observation,\n ObservationComponent,\n ObservationReferenceRange,\n Reference,\n} from '@medplum/fhirtypes';\nimport React from 'react';\nimport { CodeableConceptDisplay } from '../CodeableConceptDisplay/CodeableConceptDisplay';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { RangeDisplay } from '../RangeDisplay/RangeDisplay';\nimport { ResourceBadge } from '../ResourceBadge/ResourceBadge';\nimport { useResource } from '../useResource/useResource';\n\nconst useStyles = createStyles((theme) => ({\n table: {\n border: `0.1px solid ${theme.colors.gray[5]}`,\n borderCollapse: 'collapse',\n\n '& td, & th': {\n border: `0.1px solid ${theme.colors.gray[5]}`,\n padding: 4,\n },\n },\n\n criticalRow: {\n background: theme.colorScheme === 'dark' ? theme.colors.red[7] : theme.colors.red[1],\n border: `0.1px solid ${theme.colors.red[5]}`,\n color: theme.colors.red[5],\n fontWeight: 500,\n\n '& td': {\n border: `0.1px solid ${theme.colors.red[5]}`,\n },\n },\n}));\n\nexport interface DiagnosticReportDisplayProps {\n value?: DiagnosticReport | Reference<DiagnosticReport>;\n}\n\nexport function DiagnosticReportDisplay(props: DiagnosticReportDisplayProps): JSX.Element | null {\n const diagnosticReport = useResource(props.value);\n const specimen = useResource(diagnosticReport?.specimen?.[0]);\n if (!diagnosticReport) {\n return null;\n }\n\n let textContent = '';\n\n if (diagnosticReport.presentedForm && diagnosticReport.presentedForm.length > 0) {\n const pf = diagnosticReport.presentedForm[0];\n if (pf.contentType?.startsWith('text/plain') && pf.data) {\n textContent = window.atob(pf.data);\n }\n }\n\n if (specimen?.note) {\n for (const note of specimen.note) {\n textContent += note.text + '\\n\\n';\n }\n }\n\n return (\n <Stack>\n <Title>Diagnostic Report</Title>\n <Group mt=\"md\" spacing={30}>\n {diagnosticReport.subject && (\n <div>\n <Text size=\"xs\" transform=\"uppercase\" color=\"dimmed\">\n Subject\n </Text>\n <Text>\n <ResourceBadge value={diagnosticReport.subject} link={true} />\n </Text>\n </div>\n )}\n {diagnosticReport.resultsInterpreter &&\n diagnosticReport.resultsInterpreter.map((interpreter) => (\n <div key={interpreter.reference}>\n <Text size=\"xs\" transform=\"uppercase\" color=\"dimmed\">\n Interpreter\n </Text>\n <Text>\n <ResourceBadge value={interpreter} link={true} />\n </Text>\n </div>\n ))}\n {diagnosticReport.issued && (\n <div>\n <Text size=\"xs\" transform=\"uppercase\" color=\"dimmed\">\n Issued\n </Text>\n <Text>{formatDateTime(diagnosticReport.issued)}</Text>\n </div>\n )}\n {diagnosticReport.status && (\n <div>\n <Text size=\"xs\" transform=\"uppercase\" color=\"dimmed\">\n Status\n </Text>\n <Text>{capitalize(diagnosticReport.status)}</Text>\n </div>\n )}\n </Group>\n {diagnosticReport.result && <ObservationTable value={diagnosticReport.result} />}\n {textContent && <pre>{textContent.trim()}</pre>}\n </Stack>\n );\n}\n\nexport interface ObservationTableProps {\n value?: Observation[] | Reference<Observation>[];\n}\n\nexport function ObservationTable(props: ObservationTableProps): JSX.Element {\n const { classes } = useStyles();\n return (\n <table className={classes.table}>\n <thead>\n <tr>\n <th>Test</th>\n <th>Value</th>\n <th>Reference Range</th>\n <th>Interpretation</th>\n </tr>\n </thead>\n <tbody>\n {props.value?.map((observation, index) => (\n <ObservationRow key={'obs-' + index} value={observation} />\n ))}\n </tbody>\n </table>\n );\n}\n\ninterface ObservationRowProps {\n value: Observation | Reference<Observation>;\n}\n\nfunction ObservationRow(props: ObservationRowProps): JSX.Element | null {\n const { classes, cx } = useStyles();\n const observation = useResource(props.value);\n if (!observation) {\n return null;\n }\n\n const critical = isCritical(observation);\n\n return (\n <tr className={cx({ [classes.criticalRow]: critical })}>\n <td>\n <MedplumLink to={observation}>\n <CodeableConceptDisplay value={observation.code} />\n </MedplumLink>\n </td>\n <td>\n <ObservationValueDisplay value={observation} />\n </td>\n <td>\n <ReferenceRangeDisplay value={observation.referenceRange} />\n </td>\n <td>\n {observation.interpretation && observation.interpretation.length > 0 && (\n <CodeableConceptDisplay value={observation.interpretation[0]} />\n )}\n </td>\n </tr>\n );\n}\n\ninterface ObservationValueDisplayProps {\n value?: Observation | ObservationComponent;\n}\n\nfunction ObservationValueDisplay(props: ObservationValueDisplayProps): JSX.Element | null {\n const obs = props.value;\n return <>{formatObservationValue(obs)}</>;\n}\n\ninterface ReferenceRangeProps {\n value?: ObservationReferenceRange[];\n}\n\nfunction ReferenceRangeDisplay(props: ReferenceRangeProps): JSX.Element | null {\n const range = props.value && props.value.length > 0 && props.value[0];\n if (!range) {\n return null;\n }\n if (range.text) {\n return <>{range.text}</>;\n }\n return <RangeDisplay value={range} />;\n}\n\n/**\n * Returns true if the observation is critical.\n * See: https://www.hl7.org/fhir/valueset-observation-interpretation.html\n * @param observation The FHIR observation.\n * @returns True if the FHIR observation is a critical value.\n */\nfunction isCritical(observation: Observation): boolean {\n const code = observation.interpretation?.[0]?.coding?.[0]?.code;\n return code === 'AA' || code === 'LL' || code === 'HH' || code === 'A';\n}\n","import { createStyles } from '@mantine/core';\nimport { getPropertyDisplayName, IndexedStructureDefinition, stringify, toTypedValue } from '@medplum/core';\nimport { Resource } from '@medplum/fhirtypes';\nimport React, { useEffect, useState } from 'react';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { getValueAndType, ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\n\nconst useStyles = createStyles((theme) => ({\n root: {\n borderCollapse: 'collapse',\n width: '100%',\n\n '& tr': {\n borderTop: `0.1px solid ${theme.colors.gray[3]}`,\n },\n\n '& th, & td': {\n padding: `${theme.spacing.sm}px ${theme.spacing.sm}px`,\n verticalAlign: 'top',\n },\n },\n\n removed: {\n color: theme.colors.red[7],\n textDecoration: 'line-through',\n },\n\n added: {\n color: theme.colors.green[7],\n },\n}));\n\nexport interface ResourceDiffTableProps {\n original: Resource;\n revised: Resource;\n}\n\nexport function ResourceDiffTable(props: ResourceDiffTableProps): JSX.Element | null {\n const { classes } = useStyles();\n const medplum = useMedplum();\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>();\n\n useEffect(() => {\n medplum.requestSchema(props.original.resourceType).then(setSchema).catch(console.log);\n }, [medplum, props.original.resourceType]);\n\n if (!schema) {\n return null;\n }\n\n const typeSchema = schema.types[props.original.resourceType];\n if (!typeSchema) {\n return null;\n }\n\n return (\n <table className={classes.root}>\n <colgroup>\n <col style={{ width: '30%' }} />\n <col style={{ width: '35%' }} />\n <col style={{ width: '35%' }} />\n </colgroup>\n <thead>\n <tr>\n <th>Property</th>\n <th>Before</th>\n <th>After</th>\n </tr>\n </thead>\n <tbody>\n {Object.entries(typeSchema.properties).map((entry) => {\n const key = entry[0];\n if (key === 'id' || key === 'meta') {\n return null;\n }\n\n const property = entry[1];\n const [originalPropertyValue, originalPropertyType] = getValueAndType(toTypedValue(props.original), key);\n const [revisedPropertyValue, revisedPropertyType] = getValueAndType(toTypedValue(props.revised), key);\n if (isEmpty(originalPropertyValue) && isEmpty(revisedPropertyValue)) {\n return null;\n }\n\n if (stringify(originalPropertyValue) === stringify(revisedPropertyValue)) {\n return null;\n }\n\n return (\n <tr key={key}>\n <td>{getPropertyDisplayName(key)}</td>\n <td className={classes.removed}>\n <ResourcePropertyDisplay\n property={property}\n propertyType={originalPropertyType}\n value={originalPropertyValue}\n ignoreMissingValues={true}\n />\n </td>\n <td className={classes.added}>\n <ResourcePropertyDisplay\n property={property}\n propertyType={revisedPropertyType}\n value={revisedPropertyValue}\n ignoreMissingValues={true}\n />\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n}\n\nfunction isEmpty(value: unknown): boolean {\n return (\n !value ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && Object.keys(value).length === 0)\n );\n}\n","import { IndexedStructureDefinition } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport React, { useEffect, useState } from 'react';\nimport { BackboneElementDisplay } from '../BackboneElementDisplay/BackboneElementDisplay';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { useResource } from '../useResource/useResource';\n\nexport interface ResourceTableProps {\n value: Resource | Reference;\n ignoreMissingValues?: boolean;\n}\n\nexport function ResourceTable(props: ResourceTableProps): JSX.Element | null {\n const medplum = useMedplum();\n const value = useResource(props.value);\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>();\n\n useEffect(() => {\n if (value) {\n medplum.requestSchema(value.resourceType).then(setSchema).catch(console.log);\n }\n }, [medplum, value]);\n\n if (!schema || !value) {\n return null;\n }\n\n return (\n <BackboneElementDisplay\n value={{ type: value.resourceType, value }}\n ignoreMissingValues={props.ignoreMissingValues}\n />\n );\n}\n","import { Alert } from '@mantine/core';\nimport { normalizeErrorString } from '@medplum/core';\nimport { IconAlertCircle } from '@tabler/icons';\nimport React, { ErrorInfo, ReactNode } from 'react';\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n}\n\nexport interface ErrorBoundaryState {\n error?: any;\n}\n\n/**\n * ErrorBoundary is a React component that handles errors in its child components.\n * See: https://reactjs.org/docs/error-boundaries.html\n */\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState;\n\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = {};\n }\n\n static getDerivedStateFromError(error: any): ErrorBoundaryState {\n return { error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error('Uncaught error:', error, errorInfo);\n }\n\n render(): ReactNode {\n if (this.state.error) {\n return (\n <Alert icon={<IconAlertCircle size={16} />} title=\"Something went wrong\" color=\"red\">\n {normalizeErrorString(this.state.error)}\n </Alert>\n );\n }\n\n return this.props.children;\n }\n}\n","import { ActionIcon, Group, Menu, Text } from '@mantine/core';\nimport { formatDateTime, getReferenceString } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport { IconDots } from '@tabler/icons';\nimport React from 'react';\nimport { Container } from '../Container/Container';\nimport { ErrorBoundary } from '../ErrorBoundary/ErrorBoundary';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { Panel, PanelProps } from '../Panel/Panel';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { ResourceName } from '../ResourceName/ResourceName';\n\nexport interface TimelineProps {\n children?: React.ReactNode;\n}\n\nexport function Timeline(props: TimelineProps): JSX.Element {\n return <Container>{props.children}</Container>;\n}\n\nexport interface TimelineItemProps extends PanelProps {\n resource: Resource;\n profile?: Reference;\n padding?: boolean;\n popupMenuItems?: React.ReactNode;\n}\n\nexport function TimelineItem(props: TimelineItemProps): JSX.Element {\n const { resource, profile, padding, popupMenuItems, ...others } = props;\n const author = profile ?? resource.meta?.author;\n\n return (\n <Panel data-testid=\"timeline-item\" fill={true} {...others}>\n <Group position=\"apart\" spacing={8} mx=\"xs\" my=\"sm\">\n <ResourceAvatar value={author} link={true} size=\"md\" />\n <div style={{ flex: 1 }}>\n <Text size=\"sm\">\n <ResourceName color=\"dark\" weight={500} value={author} link={true} />\n </Text>\n <Text size=\"xs\">\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {formatDateTime(props.resource.meta?.lastUpdated)}\n </MedplumLink>\n <Text component=\"span\" color=\"dimmed\" mx={8}>\n &middot;\n </Text>\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {props.resource.resourceType}\n </MedplumLink>\n </Text>\n </div>\n {popupMenuItems && (\n <Menu position=\"bottom-end\" shadow=\"md\" width={200}>\n <Menu.Target>\n <ActionIcon radius=\"xl\" aria-label={`Actions for ${getReferenceString(props.resource)}`}>\n <IconDots />\n </ActionIcon>\n </Menu.Target>\n {popupMenuItems}\n </Menu>\n )}\n </Group>\n <ErrorBoundary>\n {padding && <div style={{ padding: '0 16px 16px 16px' }}>{props.children}</div>}\n {!padding && <>{props.children}</>}\n </ErrorBoundary>\n </Panel>\n );\n}\n","import { Resource } from '@medplum/fhirtypes';\n\n/**\n * Sorts an array of resources in place by meta.lastUpdated ascending.\n * @param resources Array of resources.\n */\nexport function sortByDateAndPriority(resources: Resource[]): void {\n resources.sort(resourceDateComparator);\n}\n\nfunction resourceDateComparator(a: Resource, b: Resource): number {\n const priority1 = getPriorityScore(a);\n const priority2 = getPriorityScore(b);\n if (priority1 > priority2) {\n return 1;\n }\n if (priority1 < priority2) {\n return -1;\n }\n return getTime(a) - getTime(b);\n}\n\nfunction getPriorityScore(resource: Resource): number {\n const priority = (resource as any).priority;\n if (typeof priority === 'string') {\n return { stat: 4, asap: 3, urgent: 2 }[priority] || 0;\n }\n return 0;\n}\n\nfunction getTime(resource: Resource): number {\n if (resource.resourceType === 'Communication' && resource.sent) {\n return new Date(resource.sent).getTime();\n }\n\n if (\n (resource.resourceType === 'DiagnosticReport' ||\n resource.resourceType === 'Media' ||\n resource.resourceType === 'Observation') &&\n resource.issued\n ) {\n return new Date(resource.issued).getTime();\n }\n\n if (resource.resourceType === 'DocumentReference' && resource.date) {\n return new Date(resource.date).getTime();\n }\n\n const dateTime = resource.meta?.lastUpdated;\n if (!dateTime) {\n return 0;\n }\n return new Date(dateTime).getTime();\n}\n","import { ActionIcon, Center, createStyles, Group, Loader, Menu, ScrollArea, TextInput } from '@mantine/core';\nimport { showNotification, updateNotification } from '@mantine/notifications';\nimport { getReferenceString, normalizeErrorString, ProfileResource } from '@medplum/core';\nimport {\n Attachment,\n AuditEvent,\n Bundle,\n BundleEntry,\n Communication,\n DiagnosticReport,\n Media,\n Reference,\n Resource,\n} from '@medplum/fhirtypes';\nimport {\n IconCheck,\n IconCloudUpload,\n IconEdit,\n IconFileAlert,\n IconListDetails,\n IconMessage,\n IconPin,\n IconPinnedOff,\n IconTrash,\n} from '@tabler/icons';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { AttachmentButton } from '../AttachmentButton/AttachmentButton';\nimport { AttachmentDisplay } from '../AttachmentDisplay/AttachmentDisplay';\nimport { DiagnosticReportDisplay } from '../DiagnosticReportDisplay/DiagnosticReportDisplay';\nimport { Form } from '../Form/Form';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { Panel } from '../Panel/Panel';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { ResourceDiffTable } from '../ResourceDiffTable/ResourceDiffTable';\nimport { ResourceTable } from '../ResourceTable/ResourceTable';\nimport { Timeline, TimelineItem } from '../Timeline/Timeline';\nimport { useResource } from '../useResource/useResource';\nimport { sortByDateAndPriority } from '../utils/date';\n\nconst useStyles = createStyles((theme) => ({\n pinnedComment: {\n backgroundColor: theme.colors.blue[0],\n },\n}));\n\nexport interface ResourceTimelineProps<T extends Resource> {\n value: T | Reference<T>;\n buildSearchRequests: (resource: T) => Bundle;\n createCommunication?: (resource: T, sender: ProfileResource, text: string) => Communication;\n createMedia?: (resource: T, operator: ProfileResource, attachment: Attachment) => Media;\n}\n\nexport function ResourceTimeline<T extends Resource>(props: ResourceTimelineProps<T>): JSX.Element {\n const navigate = useNavigate();\n const medplum = useMedplum();\n const sender = medplum.getProfile() as ProfileResource;\n const inputRef = useRef<HTMLInputElement>(null);\n const resource = useResource(props.value);\n const [history, setHistory] = useState<Bundle>();\n const [items, setItems] = useState<Resource[]>([]);\n const buildSearchRequests = props.buildSearchRequests;\n\n const itemsRef = useRef<Resource[]>(items);\n itemsRef.current = items;\n\n const loadTimeline = useCallback(() => {\n if (!resource) {\n setItems([]);\n setHistory({} as Bundle);\n return;\n }\n medplum.executeBatch(buildSearchRequests(resource)).then(handleBatchResponse).catch(console.log);\n }, [medplum, resource, buildSearchRequests]);\n\n useEffect(() => {\n loadTimeline();\n }, [loadTimeline]);\n\n /**\n * Handles a batch request response.\n * @param batchResponse The batch response.\n */\n function handleBatchResponse(batchResponse: Bundle): void {\n const newItems = [];\n\n if (batchResponse.entry) {\n for (const batchEntry of batchResponse.entry) {\n const bundle = batchEntry.resource as Bundle;\n if (!bundle) {\n // User may not have access to all resource types\n continue;\n }\n\n if (bundle.type === 'history') {\n setHistory(bundle);\n }\n\n if (bundle.entry) {\n for (const entry of bundle.entry) {\n if (entry.resource) {\n newItems.push(entry.resource);\n }\n }\n }\n }\n\n sortByDateAndPriority(newItems);\n newItems.reverse();\n }\n\n setItems(newItems);\n }\n\n /**\n * Adds an array of resources to the timeline.\n * @param resources Array of resources.\n */\n function addResources(resources: Resource[]): void {\n const newItems = [...itemsRef.current, ...resources];\n sortByDateAndPriority(newItems);\n newItems.reverse();\n setItems(newItems);\n }\n\n /**\n * Adds a Communication resource to the timeline.\n * @param contentString The comment content.\n */\n function createComment(contentString: string): void {\n if (!resource || !props.createCommunication) {\n // Encounter not loaded yet\n return;\n }\n medplum\n .createResource(props.createCommunication(resource, sender, contentString))\n .then((result) => {\n addResources([result]);\n })\n .catch(console.log);\n }\n\n /**\n * Adds a Media resource to the timeline.\n * @param attachment The media attachment.\n */\n function createMedia(attachment: Attachment): void {\n if (!resource || !props.createMedia) {\n // Encounter not loaded yet\n return;\n }\n medplum\n .createResource(props.createMedia(resource, sender, attachment))\n .then((result) => addResources([result]))\n .then(() =>\n updateNotification({\n id: 'upload-notification',\n color: 'teal',\n title: 'Upload complete',\n message: '',\n icon: <IconCheck size={16} />,\n autoClose: 2000,\n })\n )\n .catch((reason) =>\n updateNotification({\n id: 'upload-notification',\n color: 'red',\n title: 'Upload error',\n message: normalizeErrorString(reason),\n icon: <IconFileAlert size={16} />,\n autoClose: 2000,\n })\n );\n }\n\n function setPriority(\n communication: Communication,\n priority: 'routine' | 'urgent' | 'asap' | 'stat'\n ): Promise<Communication> {\n return medplum.updateResource({ ...communication, priority });\n }\n\n function onPin(communication: Communication): void {\n setPriority(communication, 'stat').then(loadTimeline).catch(console.log);\n }\n\n function onUnpin(communication: Communication): void {\n setPriority(communication, 'routine').then(loadTimeline).catch(console.log);\n }\n\n function onDetails(timelineItem: Resource): void {\n navigate(`/${timelineItem.resourceType}/${timelineItem.id}`);\n }\n\n function onEdit(timelineItem: Resource): void {\n navigate(`/${timelineItem.resourceType}/${timelineItem.id}/edit`);\n }\n\n function onDelete(timelineItem: Resource): void {\n navigate(`/${timelineItem.resourceType}/${timelineItem.id}/delete`);\n }\n\n function onVersionDetails(version: Resource): void {\n navigate(`/${version.resourceType}/${version.id}/_history/${version.meta?.versionId}`);\n }\n\n function onUploadStart(): void {\n showNotification({\n id: 'upload-notification',\n loading: true,\n title: 'Initializing upload...',\n message: 'Please wait...',\n autoClose: false,\n disallowClose: true,\n });\n }\n\n function onUploadProgress(e: ProgressEvent): void {\n updateNotification({\n id: 'upload-notification',\n loading: true,\n title: 'Uploading...',\n message: getProgressMessage(e),\n autoClose: false,\n disallowClose: true,\n });\n }\n\n if (!resource) {\n return (\n <Center style={{ width: '100%', height: '100%' }}>\n <Loader />\n </Center>\n );\n }\n\n return (\n <Timeline>\n {props.createCommunication && (\n <Panel>\n <Form\n testid=\"timeline-form\"\n onSubmit={(formData: Record<string, string>) => {\n createComment(formData.text);\n\n const input = inputRef.current;\n if (input) {\n input.value = '';\n input.focus();\n }\n }}\n >\n <Group spacing=\"xs\" noWrap style={{ width: '100%' }}>\n <ResourceAvatar value={sender} />\n <TextInput\n name=\"text\"\n ref={inputRef}\n placeholder=\"Add comment\"\n style={{ width: '100%', maxWidth: 300 }}\n />\n <ActionIcon type=\"submit\" radius=\"xl\" color=\"blue\" variant=\"filled\">\n <IconMessage size={16} />\n </ActionIcon>\n <AttachmentButton\n onUpload={createMedia}\n onUploadStart={onUploadStart}\n onUploadProgress={onUploadProgress}\n >\n {(props) => (\n <ActionIcon {...props} radius=\"xl\" color=\"blue\" variant=\"filled\">\n <IconCloudUpload size={16} />\n </ActionIcon>\n )}\n </AttachmentButton>\n </Group>\n </Form>\n </Panel>\n )}\n {items.map((item) => {\n if (item.resourceType === resource.resourceType && item.id === resource.id) {\n return (\n <HistoryTimelineItem\n key={item.meta?.versionId}\n history={history as Bundle<Resource>}\n resource={item}\n onDetails={onVersionDetails}\n />\n );\n }\n const key = `${item.resourceType}/${item.id}`;\n switch (item.resourceType) {\n case 'AuditEvent':\n return <AuditEventTimelineItem key={key} resource={item} onDetails={onDetails} />;\n case 'Communication':\n return (\n <CommunicationTimelineItem\n key={key}\n resource={item}\n onPin={item.priority !== 'stat' ? onPin : undefined}\n onUnpin={item.priority === 'stat' ? onUnpin : undefined}\n onDetails={onDetails}\n onEdit={onEdit}\n onDelete={onDelete}\n />\n );\n case 'DiagnosticReport':\n return (\n <DiagnosticReportTimelineItem\n key={key}\n resource={item}\n onDetails={onDetails}\n onEdit={onEdit}\n onDelete={onDelete}\n />\n );\n case 'Media':\n return (\n <MediaTimelineItem key={key} resource={item} onDetails={onDetails} onEdit={onEdit} onDelete={onDelete} />\n );\n default:\n return (\n <TimelineItem key={key} resource={item} padding={true}>\n <ResourceTable value={item} ignoreMissingValues={true} />\n </TimelineItem>\n );\n }\n })}\n </Timeline>\n );\n}\n\ninterface BaseTimelineItemProps<T extends Resource> {\n resource: T;\n onPin?: (resource: T) => void;\n onUnpin?: (resource: T) => void;\n onDetails?: (resource: T) => void;\n onEdit?: (resource: T) => void;\n onDelete?: (resource: T) => void;\n}\n\nfunction TimelineItemPopupMenu<T extends Resource>(props: BaseTimelineItemProps<T>): JSX.Element {\n return (\n <Menu.Dropdown>\n <Menu.Label>Resource</Menu.Label>\n {props.onPin && (\n <Menu.Item\n icon={<IconPin size={14} />}\n onClick={() => (props.onPin as (resource: T) => void)(props.resource)}\n aria-label={`Pin ${getReferenceString(props.resource)}`}\n >\n Pin\n </Menu.Item>\n )}\n {props.onUnpin && (\n <Menu.Item\n icon={<IconPinnedOff size={14} />}\n onClick={() => (props.onUnpin as (resource: T) => void)(props.resource)}\n aria-label={`Unpin ${getReferenceString(props.resource)}`}\n >\n Unpin\n </Menu.Item>\n )}\n {props.onDetails && (\n <Menu.Item\n icon={<IconListDetails size={14} />}\n onClick={() => (props.onDetails as (resource: T) => void)(props.resource)}\n aria-label={`Details ${getReferenceString(props.resource)}`}\n >\n Details\n </Menu.Item>\n )}\n {props.onEdit && (\n <Menu.Item\n icon={<IconEdit size={14} />}\n onClick={() => (props.onEdit as (resource: T) => void)(props.resource)}\n aria-label={`Edit ${getReferenceString(props.resource)}`}\n >\n Edit\n </Menu.Item>\n )}\n {props.onDelete && (\n <>\n <Menu.Divider />\n <Menu.Label>Danger zone</Menu.Label>\n <Menu.Item\n color=\"red\"\n icon={<IconTrash size={14} />}\n onClick={() => (props.onDelete as (resource: T) => void)(props.resource)}\n aria-label={`Delete ${getReferenceString(props.resource)}`}\n >\n Delete\n </Menu.Item>\n </>\n )}\n </Menu.Dropdown>\n );\n}\n\ninterface HistoryTimelineItemProps extends BaseTimelineItemProps<Resource> {\n history: Bundle;\n}\n\nfunction HistoryTimelineItem(props: HistoryTimelineItemProps): JSX.Element {\n const previous = getPrevious(props.history, props.resource);\n if (previous) {\n return (\n <TimelineItem resource={props.resource} padding={true} popupMenuItems={<TimelineItemPopupMenu {...props} />}>\n <ResourceDiffTable original={previous} revised={props.resource} />\n </TimelineItem>\n );\n } else {\n return (\n <TimelineItem resource={props.resource} padding={true} popupMenuItems={<TimelineItemPopupMenu {...props} />}>\n <h3>Created</h3>\n <ResourceTable value={props.resource} ignoreMissingValues={true} />\n </TimelineItem>\n );\n }\n}\n\nfunction getPrevious(history: Bundle, version: Resource): Resource | undefined {\n const entries = history.entry as BundleEntry[];\n const index = entries.findIndex((entry) => entry.resource?.meta?.versionId === version.meta?.versionId);\n if (index >= entries.length - 1) {\n return undefined;\n }\n return entries[index + 1].resource;\n}\n\nfunction CommunicationTimelineItem(props: BaseTimelineItemProps<Communication>): JSX.Element {\n const { classes } = useStyles();\n const routine = !props.resource.priority || props.resource.priority === 'routine';\n const className = routine ? undefined : classes.pinnedComment;\n return (\n <TimelineItem\n resource={props.resource}\n profile={props.resource.sender}\n padding={true}\n className={className}\n popupMenuItems={<TimelineItemPopupMenu {...props} />}\n >\n <p>{props.resource.payload?.[0]?.contentString}</p>\n </TimelineItem>\n );\n}\n\nfunction MediaTimelineItem(props: BaseTimelineItemProps<Media>): JSX.Element {\n const contentType = props.resource.content?.contentType;\n const padding =\n contentType &&\n !contentType.startsWith('image/') &&\n !contentType.startsWith('video/') &&\n contentType !== 'application/pdf';\n return (\n <TimelineItem resource={props.resource} padding={!!padding} popupMenuItems={<TimelineItemPopupMenu {...props} />}>\n <AttachmentDisplay value={props.resource.content} />\n </TimelineItem>\n );\n}\n\nfunction AuditEventTimelineItem(props: BaseTimelineItemProps<AuditEvent>): JSX.Element {\n return (\n <TimelineItem resource={props.resource} padding={true} popupMenuItems={<TimelineItemPopupMenu {...props} />}>\n <ScrollArea>\n <pre>{props.resource.outcomeDesc}</pre>\n </ScrollArea>\n </TimelineItem>\n );\n}\n\nfunction DiagnosticReportTimelineItem(props: BaseTimelineItemProps<DiagnosticReport>): JSX.Element {\n return (\n <TimelineItem resource={props.resource} padding={true} popupMenuItems={<TimelineItemPopupMenu {...props} />}>\n <DiagnosticReportDisplay value={props.resource} />\n </TimelineItem>\n );\n}\n\nfunction getProgressMessage(e: ProgressEvent): string {\n if (e.lengthComputable) {\n const percent = (100 * e.loaded) / e.total;\n return `Uploaded: ${formatFileSize(e.loaded)} / ${formatFileSize(e.total)} ${percent.toFixed(2)}%`;\n }\n return `Uploaded: ${formatFileSize(e.loaded)}`;\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes == 0) {\n return '0.00 B';\n }\n const e = Math.floor(Math.log(bytes) / Math.log(1024));\n return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';\n}\n","import { getReferenceString } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface DefaultResourceTimelineProps {\n resource: Resource | Reference;\n}\n\nexport function DefaultResourceTimeline(props: DefaultResourceTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.resource}\n buildSearchRequests={(resource: Resource) => ({\n resourceType: 'Bundle',\n type: 'batch',\n entry: [\n {\n request: {\n method: 'GET',\n url: `${getReferenceString(resource)}/_history`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `AuditEvent?entity=${getReferenceString(resource)}&_sort=-_lastUpdated`,\n },\n },\n ],\n })}\n />\n );\n}\n","import { createReference, getReferenceString, ProfileResource } from '@medplum/core';\nimport { Attachment, Encounter, Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface EncounterTimelineProps {\n encounter: Encounter | Reference<Encounter>;\n}\n\nexport function EncounterTimeline(props: EncounterTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.encounter}\n buildSearchRequests={(resource: Resource) => ({\n resourceType: 'Bundle',\n type: 'batch',\n entry: [\n {\n request: {\n method: 'GET',\n url: `${getReferenceString(resource)}/_history`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `Communication?encounter=${getReferenceString(resource)}`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `Media?encounter=${getReferenceString(resource)}`,\n },\n },\n ],\n })}\n createCommunication={(resource: Encounter, sender: ProfileResource, text: string) => ({\n resourceType: 'Communication',\n status: 'completed',\n encounter: createReference(resource),\n subject: resource.subject,\n sender: createReference(sender),\n sent: new Date().toISOString(),\n payload: [{ contentString: text }],\n })}\n createMedia={(resource: Encounter, operator: ProfileResource, content: Attachment) => ({\n resourceType: 'Media',\n status: 'completed',\n encounter: createReference(resource),\n subject: resource.subject,\n operator: createReference(operator),\n issued: new Date().toISOString(),\n content,\n })}\n />\n );\n}\n","import { evalFhirPath, PropertyType } from '@medplum/core';\nimport { Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\n\nexport interface FhirPathDisplayProps {\n resource: Resource;\n path: string;\n propertyType: PropertyType;\n}\n\nexport function FhirPathDisplay(props: FhirPathDisplayProps): JSX.Element | null {\n let value;\n\n try {\n value = evalFhirPath(props.path, props.resource);\n } catch (err) {\n console.warn('FhirPathDisplay:', err);\n return null;\n }\n\n if (value.length > 1) {\n throw new Error(\n `Component \"path\" for \"FhirPathDisplay\" must resolve to a single element. \\\n Received ${value.length} elements \\\n [${JSON.stringify(value, null, 2)}]`\n );\n }\n return <ResourcePropertyDisplay value={value[0] || ''} propertyType={props.propertyType} />;\n}\n","import {\n capitalize,\n DEFAULT_SEARCH_COUNT,\n evalFhirPathTyped,\n Filter,\n formatDateTime,\n Operator,\n PropertyType,\n SearchRequest,\n} from '@medplum/core';\nimport { ElementDefinition, Resource, SearchParameter } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { getValueAndType, ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\nimport { SearchControlField } from './SearchControlField';\n\nconst searchParamToOperators: Record<string, Operator[]> = {\n string: [Operator.EQUALS, Operator.NOT, Operator.CONTAINS, Operator.EXACT],\n fulltext: [Operator.EQUALS, Operator.NOT, Operator.CONTAINS, Operator.EXACT],\n token: [Operator.EQUALS, Operator.NOT],\n reference: [Operator.EQUALS, Operator.NOT],\n numeric: [\n Operator.EQUALS,\n Operator.NOT_EQUALS,\n Operator.GREATER_THAN,\n Operator.LESS_THAN,\n Operator.GREATER_THAN_OR_EQUALS,\n Operator.LESS_THAN_OR_EQUALS,\n ],\n quantity: [\n Operator.EQUALS,\n Operator.NOT_EQUALS,\n Operator.GREATER_THAN,\n Operator.LESS_THAN,\n Operator.GREATER_THAN_OR_EQUALS,\n Operator.LESS_THAN_OR_EQUALS,\n ],\n date: [\n Operator.EQUALS,\n Operator.NOT_EQUALS,\n Operator.GREATER_THAN,\n Operator.LESS_THAN,\n Operator.GREATER_THAN_OR_EQUALS,\n Operator.LESS_THAN_OR_EQUALS,\n Operator.STARTS_AFTER,\n Operator.ENDS_BEFORE,\n Operator.APPROXIMATELY,\n ],\n datetime: [\n Operator.EQUALS,\n Operator.NOT_EQUALS,\n Operator.GREATER_THAN,\n Operator.LESS_THAN,\n Operator.GREATER_THAN_OR_EQUALS,\n Operator.LESS_THAN_OR_EQUALS,\n Operator.STARTS_AFTER,\n Operator.ENDS_BEFORE,\n Operator.APPROXIMATELY,\n ],\n};\n\nconst operatorNames: Record<Operator, string> = {\n eq: 'equals',\n ne: 'not equals',\n gt: 'greater than',\n lt: 'less than',\n ge: 'greater than or equals',\n le: 'less than or equals',\n sa: 'starts after',\n eb: 'ends before',\n ap: 'approximately',\n contains: 'contains',\n exact: 'exact',\n text: 'text',\n not: 'not',\n above: 'above',\n below: 'below',\n in: 'in',\n 'not-in': 'not in',\n 'of-type': 'of type',\n missing: 'missing',\n};\n\n/**\n * Sets the array of filters.\n *\n * @param {Array} filters The new filters.\n */\nexport function setFilters(definition: SearchRequest, filters: Filter[]): SearchRequest {\n return {\n ...definition,\n filters: filters,\n offset: 0,\n name: undefined,\n };\n}\n\n/**\n * Clears all of the filters.\n */\nexport function clearFilters(definition: SearchRequest): SearchRequest {\n return setFilters(definition, []);\n}\n\n/**\n * Clears all of the filters on a certain field.\n *\n * @param {string} code The field key name to clear filters.\n */\nexport function clearFiltersOnField(definition: SearchRequest, code: string): SearchRequest {\n return setFilters(\n definition,\n (definition.filters || []).filter((f) => f.code !== code)\n );\n}\n\n/**\n * Adds a filter.\n *\n * @param {string} field The field key name.\n * @param {Operator} op The operation key name.\n * @param {?string} value The filter value.\n * @param {boolean=} opt_clear Optional flag to clear filters on the field.\n */\nexport function addFilter(\n definition: SearchRequest,\n field: string,\n op: Operator,\n value?: string,\n opt_clear?: boolean\n): SearchRequest {\n if (opt_clear) {\n definition = clearFiltersOnField(definition, field);\n }\n\n const nextFilters: Filter[] = [];\n if (definition.filters) {\n nextFilters.push(...definition.filters);\n }\n nextFilters.push({ code: field, operator: op, value: value || '' });\n\n return setFilters(definition, nextFilters);\n}\n\n/**\n * Adds a field.\n *\n * @param {string} field The field key name.\n */\nexport function addField(definition: SearchRequest, field: string): SearchRequest {\n if (definition.fields && definition.fields.includes(field)) {\n return definition;\n }\n const newFields = [];\n if (definition.fields) {\n newFields.push(...definition.fields);\n }\n newFields.push(field);\n return {\n ...definition,\n fields: newFields,\n name: undefined,\n };\n}\n\n/**\n * Deletes a filter at the specified index.\n *\n * @param {number} index The filter index.\n */\nexport function deleteFilter(definition: SearchRequest, index: number): SearchRequest {\n if (!definition.filters) {\n return definition;\n }\n const newFilters = [...definition.filters];\n newFilters.splice(index, 1);\n return {\n ...definition,\n filters: newFilters,\n name: undefined,\n };\n}\n\n/**\n * Adds a filter that constrains the specified field to \"yesterday\".\n *\n * @param {string} field The field key name.\n */\nexport function addYesterdayFilter(definition: SearchRequest, field: string): SearchRequest {\n return addDayFilter(definition, field, -1);\n}\n\n/**\n * Adds a filter that constrains the specified field to \"today\".\n *\n * @param {string} field The field key name.\n */\nexport function addTodayFilter(definition: SearchRequest, field: string): SearchRequest {\n return addDayFilter(definition, field, 0);\n}\n\n/**\n * Adds a filter that constrains the specified field to \"tomorrow\".\n *\n * @param {string} field The field key name.\n */\nexport function addTomorrowFilter(definition: SearchRequest, field: string): SearchRequest {\n return addDayFilter(definition, field, 1);\n}\n\n/**\n * Adds a filter that constrains the specified field to a day.\n * The day is specified as a delta from the current day.\n * \"Today\" would be 0.\n * \"Yesterday\" would be -1.\n * \"Tomorrow\" would be 1.\n *\n * @param {string} field The field key name.\n * @param {number} delta The number of days from this day.\n */\nfunction addDayFilter(definition: SearchRequest, field: string, delta: number): SearchRequest {\n const startTime = new Date();\n startTime.setDate(startTime.getDate() + delta);\n startTime.setHours(0, 0, 0, 0);\n\n const endTime = new Date(startTime.getTime());\n endTime.setDate(endTime.getDate() + 1);\n endTime.setTime(endTime.getTime() - 1);\n\n return addDateFilterBetween(definition, field, startTime, endTime);\n}\n\n/**\n * Adds a filter that constrains the specified field to \"last month\".\n *\n * @param {string} field The field key name.\n */\nexport function addLastMonthFilter(definition: SearchRequest, field: string): SearchRequest {\n return addMonthFilter(definition, field, -1);\n}\n\n/**\n * Adds a filter that constrains the specified field to \"this month\".\n *\n * @param {string} field The field key name.\n */\nexport function addThisMonthFilter(definition: SearchRequest, field: string): SearchRequest {\n return addMonthFilter(definition, field, 0);\n}\n\n/**\n * Adds a filter that constrains the specified field to \"next month\".\n *\n * @param {string} field The field key name.\n */\nexport function addNextMonthFilter(definition: SearchRequest, field: string): SearchRequest {\n return addMonthFilter(definition, field, 1);\n}\n\n/**\n * Adds a filter that constrains the specified field to a month.\n * The month is specified as a delta from the current month.\n * \"This month\" would be 0.\n * \"Last month\" would be -1.\n * \"Next month\" would be 1.\n *\n * @param {string} field The field key name.\n * @param {number} delta The number of months from this month.\n */\nfunction addMonthFilter(definition: SearchRequest, field: string, delta: number): SearchRequest {\n const startTime = new Date();\n startTime.setMonth(startTime.getMonth() + delta);\n startTime.setDate(1);\n startTime.setHours(0, 0, 0, 0);\n\n const endTime = new Date(startTime.getTime());\n endTime.setMonth(endTime.getMonth() + 1);\n endTime.setDate(1);\n endTime.setHours(0, 0, 0, 0);\n endTime.setTime(endTime.getTime() - 1);\n\n return addDateFilterBetween(definition, field, startTime, endTime);\n}\n\n/**\n * Adds a filter that constrains the specified field to the year to date.\n *\n * @param {string} field The field key name.\n */\nexport function addYearToDateFilter(definition: SearchRequest, field: string): SearchRequest {\n const startTime = new Date();\n startTime.setMonth(0);\n startTime.setDate(1);\n startTime.setHours(0, 0, 0, 0);\n\n const endTime = new Date();\n\n return addDateFilterBetween(definition, field, startTime, endTime);\n}\n\n/**\n * Adds a filter for a date between two dates (inclusive of both dates).\n *\n * @param {string} field The field key name.\n * @param {Date} d1 The start date.\n * @param {Date} d2 The end date.\n */\nexport function addDateFilterBetween(definition: SearchRequest, field: string, d1: Date, d2: Date): SearchRequest {\n definition = clearFiltersOnField(definition, field);\n definition = addDateFilterImpl(definition, field, Operator.GREATER_THAN_OR_EQUALS, d1);\n definition = addDateFilterImpl(definition, field, Operator.LESS_THAN_OR_EQUALS, d2);\n return definition;\n}\n\n/**\n * Adds a filter for a date before a certain date/time.\n *\n * @param {string} field The field key name.\n * @param {Operator} op The date/time operation.\n * @param {Date} value The date.\n */\nfunction addDateFilterImpl(definition: SearchRequest, field: string, op: Operator, value: Date): SearchRequest {\n return addFilter(definition, field, op, value.toISOString());\n}\n\n/**\n * Adds a filter that constrains the specified field to \"missing\".\n *\n * @param {string} field The field key name.\n */\nexport function addMissingFilter(definition: SearchRequest, field: string, value = true): SearchRequest {\n return addFilter(definition, field, Operator.MISSING, value.toString());\n}\n\n/**\n * Sets the offset (starting at zero).\n *\n * @param {number} offset The offset number.\n */\nexport function setOffset(definition: SearchRequest, offset: number): SearchRequest {\n if (definition.offset === offset) {\n return definition;\n }\n return {\n ...definition,\n offset,\n name: undefined,\n };\n}\n\n/**\n * Creates a new search request with the search offset at the specified page.\n * @param definition The search definition.\n * @param page The new page number\n * @return The new search definition.\n */\nexport function setPage(definition: SearchRequest, page: number): SearchRequest {\n const count = definition.count ?? DEFAULT_SEARCH_COUNT;\n const newOffset = (page - 1) * count;\n return setOffset(definition, newOffset);\n}\n\n/**\n * Sorts the search by the specified key, and optional direction.\n * Direction defaults to ascending ('asc') if not specified.\n *\n * @param {string} sortField The sort key.\n */\nexport function setSort(definition: SearchRequest, sort: string, desc?: boolean): SearchRequest {\n if (sort === getSortField(definition) && desc !== undefined && desc === isSortDescending(definition)) {\n return definition;\n }\n return {\n ...definition,\n sortRules: [\n {\n code: sort,\n descending: !!desc,\n },\n ],\n name: undefined,\n };\n}\n\n/**\n * Toggles the sort of the search by key.\n * If the search is already sorted by the key, reverses the direction.\n * If the search is not sorted by the key, sort in ascending order.\n *\n * @param {string} key The field key name.\n */\nexport function toggleSort(definition: SearchRequest, key: string): SearchRequest {\n let desc = false;\n if (getSortField(definition) === key) {\n desc = !isSortDescending(definition);\n }\n return setSort(definition, key, desc);\n}\n\nexport function getSortField(definition: SearchRequest): string | undefined {\n const sortRules = definition.sortRules;\n if (!sortRules || sortRules.length === 0) {\n return undefined;\n }\n const field = sortRules[0].code;\n return field.startsWith('-') ? field.substr(1) : field;\n}\n\nexport function isSortDescending(definition: SearchRequest): boolean {\n const sortRules = definition.sortRules;\n if (!sortRules || sortRules.length === 0) {\n return false;\n }\n return !!sortRules[0].descending;\n}\n\n/**\n * Returns a list of operators for a search parameter.\n * @param searchParam The search parameter.\n * @returns The list of operators that can be used for the search parameter.\n */\nexport function getSearchOperators(searchParam: SearchParameter): Operator[] | undefined {\n return searchParamToOperators[searchParam.type as string];\n}\n\n/**\n * Returns a string representing the operation.\n *\n * @param {string} op The operation code.\n * @return {string} A display string for the operation.\n */\nexport function getOpString(op: Operator): string {\n return operatorNames[op] ?? '';\n}\n\n/**\n * Returns a field display name.\n * @param key The field key.\n * @returns The field display name.\n */\nexport function buildFieldNameString(key: string): string {\n let tmp = key;\n\n // If dot separated, only the last part\n if (tmp.includes('.')) {\n tmp = tmp.split('.').pop() as string;\n }\n\n // Special case for ID\n if (tmp === 'id') {\n return 'ID';\n }\n\n // Special case for Version ID\n if (tmp === 'versionId') {\n return 'Version ID';\n }\n\n // Remove choice of type\n tmp = tmp.replace('[x]', '');\n\n // Convert camel case to space separated\n tmp = tmp.replace(/([A-Z])/g, ' $1');\n\n // Convert dashes and underscores to spaces\n tmp = tmp.replace(/[-_]/g, ' ');\n\n // Normalize whitespace to single space character\n tmp = tmp.replace(/\\s+/g, ' ');\n\n // Trim\n tmp = tmp.trim();\n\n // Capitalize the first letter of each word\n return tmp.split(/\\s/).map(capitalize).join(' ');\n}\n\n/**\n * Returns a fragment to be displayed in the search table for the value.\n * @param resource The parent resource.\n * @param key The search code or FHIRPath expression.\n * @returns The fragment to display.\n */\nexport function renderValue(resource: Resource, field: SearchControlField): string | JSX.Element | null | undefined {\n const key = field.name;\n if (key === 'id') {\n return resource.id;\n }\n\n if (key === 'meta.versionId') {\n return resource.meta?.versionId;\n }\n\n if (key === '_lastUpdated') {\n return formatDateTime(resource.meta?.lastUpdated);\n }\n\n // Priority 1: ElementDefinition by exact match\n if (field.elementDefinition && `${resource.resourceType}.${field.name}` === field.elementDefinition.path) {\n return renderPropertyValue(resource, field.elementDefinition);\n }\n\n // Priority 2: SearchParameter by exact match\n if (field.searchParams && field.searchParams.length === 1 && field.name === field.searchParams[0].code) {\n return renderSearchParameterValue(resource, field.searchParams[0], field.elementDefinition);\n }\n\n // We don't know how to render this field definition\n return null;\n}\n\n/**\n * Returns a fragment to be displayed in the search table for a resource property.\n * @param resource The parent resource.\n * @param elementDefinition The property element definition.\n * @returns A React element or null.\n */\nfunction renderPropertyValue(resource: Resource, elementDefinition: ElementDefinition): JSX.Element | null {\n const path = elementDefinition.path?.split('.')?.pop()?.replaceAll('[x]', '') || '';\n const [value, propertyType] = getValueAndType({ type: resource.resourceType, value: resource }, path);\n if (!value) {\n return null;\n }\n\n return (\n <ResourcePropertyDisplay\n property={elementDefinition}\n propertyType={propertyType}\n value={value}\n maxWidth={200}\n ignoreMissingValues={true}\n link={false}\n />\n );\n}\n\n/**\n * Returns a fragment to be displayed in the search table for a search parameter.\n * @param resource The parent resource.\n * @param searchParam The search parameter.\n * @param elementDefinition Optional element definition.\n * @returns A React element or null.\n */\nfunction renderSearchParameterValue(\n resource: Resource,\n searchParam: SearchParameter,\n elementDefinition: ElementDefinition | undefined\n): JSX.Element | null {\n const value = evalFhirPathTyped(searchParam.expression as string, [{ type: resource.resourceType, value: resource }]);\n if (!value || value.length === 0) {\n return null;\n }\n\n if (elementDefinition) {\n return (\n <ResourcePropertyDisplay\n propertyType={value[0].type as PropertyType}\n value={value[0].value}\n maxWidth={200}\n ignoreMissingValues={true}\n link={false}\n />\n );\n }\n\n return (\n <>\n {value.map((v, index) => (\n <span key={`${index}-${value.length}`}>\n {typeof v === 'object' ? JSON.stringify(v) : (v as string | number)}\n </span>\n ))}\n </>\n );\n}\n","import { Button, Modal } from '@mantine/core';\nimport { globalSchema, SearchRequest, stringify, TypeSchema } from '@medplum/core';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { buildFieldNameString } from '../SearchControl/SearchUtils';\n\ninterface SearchFieldEditorProps {\n visible: boolean;\n search: SearchRequest;\n onOk: (search: SearchRequest) => void;\n onCancel: () => void;\n}\n\nexport function SearchFieldEditor(props: SearchFieldEditorProps): JSX.Element | null {\n const [state, setState] = useState({\n search: JSON.parse(stringify(props.search)) as SearchRequest,\n });\n\n const availableRef = useRef<HTMLSelectElement>(null);\n const selectedRef = useRef<HTMLSelectElement>(null);\n\n useEffect(() => {\n setState({ search: props.search });\n }, [props.search]);\n\n /**\n * Handles a key down event on the \"available\" field.\n * If the user presses enter, it is a shortcut for the \"Add\" button.\n *\n * @param {KeyboardEvent} e The keyboard event.\n */\n function handleAvailableKeyDown(e: React.KeyboardEvent): void {\n if (e.key === 'Enter') {\n onAddField();\n }\n }\n\n /**\n * Handles a double click on the \"available\" field.\n * If the user double clicks an entry, it is a shortcut for the \"Add\" button.\n */\n function handleAvailableDoubleClick(): void {\n onAddField();\n }\n\n /**\n * Handles a key down event on the \"available\" field.\n * If the user presses enter, it is a shortcut for the \"Add\" button.\n *\n * @param {KeyboardEvent} e The keyboard event.\n */\n function handleSelectedKeyDown(e: React.KeyboardEvent): void {\n if (e.key === 'Enter') {\n onRemoveField();\n }\n }\n\n /**\n * Handles a double click on the \"available\" field.\n * If the user double clicks an entry, it is a shortcut for the \"Add\" button.\n */\n function handleSelectedDoubleClick(): void {\n onRemoveField();\n }\n\n /**\n * Handles a click on the \"Add\" button.\n * Moves the \"available\" selection into the \"selected\" list.\n */\n function onAddField(): void {\n const currentField = state.search.fields ?? [];\n const key = availableRef.current?.value;\n if (key) {\n const newFields = [...currentField, key];\n setState({\n search: {\n ...state.search,\n fields: newFields,\n },\n });\n }\n }\n\n /**\n * Handles a click on the \"Remove\" button.\n * Moves the \"selected\" selection into the \"available\" list.\n */\n function onRemoveField(): void {\n const currentField = state.search.fields ?? [];\n const key = selectedRef.current?.value;\n if (key) {\n const newFields = [...currentField];\n newFields.splice(newFields.indexOf(key), 1);\n setState({\n search: {\n ...state.search,\n fields: newFields,\n },\n });\n }\n }\n\n /**\n * Handles a click on the \"Up\" button.\n * Moves the selection up one position in the list.\n */\n function onMoveUp(): void {\n const currentField = state.search.fields ?? [];\n const field = selectedRef.current?.value;\n if (field) {\n const newFields = [...currentField];\n const index = newFields.indexOf(field);\n swapFields(newFields, index, index - 1);\n\n setState({\n search: {\n ...state.search,\n fields: newFields,\n },\n });\n }\n }\n\n /**\n * Handles a click on the \"Down\" button.\n * Moves the selection down one position in the list.\n */\n function onMoveDown(): void {\n const currentField = state.search.fields ?? [];\n const field = selectedRef.current?.value;\n if (field) {\n const newFields = [...currentField];\n const index = newFields.indexOf(field);\n swapFields(newFields, index, index + 1);\n\n setState({\n search: {\n ...state.search,\n fields: newFields,\n },\n });\n }\n }\n\n /**\n * Swaps two fields in the search.\n *\n * @param {number} i The index of the first field.\n * @param {number} j The index of the second field.\n */\n function swapFields(fields: string[], i: number, j: number): void {\n const temp = fields[i];\n fields[i] = fields[j];\n fields[j] = temp;\n }\n\n if (!props.visible) {\n return null;\n }\n\n const resourceType = props.search.resourceType;\n const typeDef = globalSchema.types[resourceType];\n\n const selected = state.search.fields ?? [];\n const available = getFieldsList(typeDef)\n .filter((field) => !selected?.includes(field))\n .sort();\n\n return (\n <Modal title=\"Fields\" closeButtonLabel=\"Close\" opened={props.visible} onClose={props.onCancel}>\n <div>\n <table style={{ margin: 'auto' }}>\n <thead>\n <tr>\n <th colSpan={2} align=\"center\">\n Available\n </th>\n <th colSpan={2} align=\"center\">\n Selected\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td colSpan={2} align=\"center\">\n <select\n ref={availableRef}\n size={15}\n tabIndex={1}\n style={{ width: '200px' }}\n onKeyDown={(e) => handleAvailableKeyDown(e)}\n onDoubleClick={() => handleAvailableDoubleClick()}\n data-testid=\"available\"\n >\n {available.map((key) => (\n <option key={key} value={key}>\n {buildFieldNameString(key)}\n </option>\n ))}\n </select>\n </td>\n <td colSpan={2} align=\"center\">\n <select\n ref={selectedRef}\n size={15}\n tabIndex={4}\n style={{ width: '200px' }}\n onKeyDown={(e) => handleSelectedKeyDown(e)}\n onDoubleClick={() => handleSelectedDoubleClick()}\n data-testid=\"selected\"\n >\n {selected.map((key) => (\n <option key={key} value={key}>\n {buildFieldNameString(key)}\n </option>\n ))}\n </select>\n </td>\n </tr>\n </tbody>\n <tfoot>\n <tr>\n <td align=\"center\">\n <Button compact variant=\"outline\" onClick={onAddField}>\n Add\n </Button>\n </td>\n <td align=\"center\">\n <Button compact variant=\"outline\" onClick={onRemoveField}>\n Remove\n </Button>\n </td>\n <td align=\"center\">\n <Button compact variant=\"outline\" onClick={onMoveUp}>\n Up\n </Button>\n </td>\n <td align=\"center\">\n <Button compact variant=\"outline\" onClick={onMoveDown}>\n Down\n </Button>\n </td>\n </tr>\n </tfoot>\n </table>\n </div>\n <Button onClick={() => props.onOk(state.search)}>OK</Button>\n </Modal>\n );\n}\n\n/**\n * Returns a list of fields/columns available for a type.\n * The result is the union of properties and search parameters.\n * @param typeSchema The type definition.\n */\nfunction getFieldsList(typeSchema: TypeSchema): string[] {\n const result = [] as string[];\n const keys = new Set<string>();\n const names = new Set<string>();\n\n // Add properties first\n for (const key of Object.keys(typeSchema.properties)) {\n result.push(key);\n keys.add(key.toLowerCase());\n names.add(buildFieldNameString(key));\n }\n\n // Add search parameters if unique\n if (typeSchema.searchParams) {\n for (const code of Object.keys(typeSchema.searchParams)) {\n const name = buildFieldNameString(code);\n if (!keys.has(code) && !names.has(name)) {\n result.push(code);\n keys.add(code);\n names.add(buildFieldNameString(code));\n }\n }\n }\n\n return result;\n}\n","import { Filter, formatDateTime, getSearchParameterDetails, globalSchema, SearchParameterType } from '@medplum/core';\nimport React from 'react';\nimport { ResourceName } from '../ResourceName/ResourceName';\n\nexport interface SearchFilterValueDisplayProps {\n readonly resourceType: string;\n readonly filter: Filter;\n}\n\nexport function SearchFilterValueDisplay(props: SearchFilterValueDisplayProps): JSX.Element {\n const { resourceType, filter } = props;\n\n const searchParam = globalSchema.types[resourceType]?.searchParams?.[filter.code];\n if (searchParam) {\n if (searchParam.type === 'reference') {\n return <ResourceName value={{ reference: filter.value }} />;\n }\n\n const searchParamDetails = getSearchParameterDetails(resourceType, searchParam);\n if (filter.code === '_lastUpdated' || searchParamDetails.type === SearchParameterType.DATETIME) {\n return <>{formatDateTime(filter.value)}</>;\n }\n }\n\n return <>{filter.value}</>;\n}\n","import { Checkbox, TextInput } from '@mantine/core';\nimport { getSearchParameterDetails, SearchParameterType } from '@medplum/core';\nimport { Quantity, Reference, SearchParameter } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { DateTimeInput } from '../DateTimeInput/DateTimeInput';\nimport { QuantityInput } from '../QuantityInput/QuantityInput';\nimport { ReferenceInput } from '../ReferenceInput/ReferenceInput';\n\nexport interface SearchFilterValueInputProps {\n resourceType: string;\n searchParam: SearchParameter;\n defaultValue?: string;\n autoFocus?: boolean;\n onChange: (value: string) => void;\n}\n\nexport function SearchFilterValueInput(props: SearchFilterValueInputProps): JSX.Element | null {\n const details = getSearchParameterDetails(props.resourceType, props.searchParam);\n const name = 'filter-value';\n\n switch (details.type) {\n case SearchParameterType.REFERENCE:\n return (\n <ReferenceInput\n name={name}\n defaultValue={{ reference: props.defaultValue }}\n targetTypes={props.searchParam?.target}\n onChange={(newReference: Reference | undefined) => {\n if (newReference) {\n props.onChange(newReference.reference as string);\n } else {\n props.onChange('');\n }\n }}\n />\n );\n\n case SearchParameterType.BOOLEAN:\n return (\n <Checkbox\n name={name}\n data-testid={name}\n defaultChecked={props.defaultValue === 'true'}\n onChange={(e) => props.onChange(e.currentTarget.checked.toString())}\n />\n );\n\n case SearchParameterType.DATE:\n return (\n <TextInput\n type=\"date\"\n name={name}\n data-testid={name}\n defaultValue={props.defaultValue}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n />\n );\n\n case SearchParameterType.DATETIME:\n return <DateTimeInput name={name} defaultValue={props.defaultValue} onChange={props.onChange} />;\n\n case SearchParameterType.NUMBER:\n return (\n <TextInput\n type=\"number\"\n name={name}\n data-testid={name}\n defaultValue={props.defaultValue}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n />\n );\n\n case SearchParameterType.QUANTITY:\n return (\n <QuantityInput\n name={name}\n defaultValue={tryParseQuantity(props.defaultValue)}\n onChange={(newQuantity: Quantity | undefined) => {\n if (newQuantity) {\n props.onChange(`${newQuantity.value}`);\n } else {\n props.onChange('');\n }\n }}\n />\n );\n\n default:\n return (\n <TextInput\n name={name}\n data-testid={name}\n defaultValue={props.defaultValue}\n autoFocus={props.autoFocus}\n onChange={(e) => props.onChange(e.currentTarget.value)}\n placeholder=\"Search value\"\n />\n );\n }\n}\n\nfunction tryParseQuantity(value: string | undefined): Quantity | undefined {\n if (value) {\n const [valueString, systemString, unitString] = value.split('|');\n if (valueString) {\n return {\n value: parseFloat(valueString),\n system: systemString,\n unit: unitString,\n };\n }\n }\n return undefined;\n}\n","import { Button, Group, Modal, NativeSelect } from '@mantine/core';\nimport { Filter, globalSchema, Operator, SearchRequest, stringify } from '@medplum/core';\nimport { SearchParameter } from '@medplum/fhirtypes';\nimport React, { useEffect, useRef, useState } from 'react';\nimport {\n addFilter,\n buildFieldNameString,\n deleteFilter,\n getOpString,\n getSearchOperators,\n setFilters,\n} from '../SearchControl/SearchUtils';\nimport { SearchFilterValueDisplay } from '../SearchFilterValueDisplay/SearchFilterValueDisplay';\nimport { SearchFilterValueInput } from '../SearchFilterValueInput/SearchFilterValueInput';\n\nexport interface SearchFilterEditorProps {\n visible: boolean;\n search: SearchRequest;\n onOk: (search: SearchRequest) => void;\n onCancel: () => void;\n}\n\nexport function SearchFilterEditor(props: SearchFilterEditorProps): JSX.Element | null {\n const [search, setSearch] = useState<SearchRequest>(JSON.parse(stringify(props.search)) as SearchRequest);\n const [editingIndex, setEditingIndex] = useState<number>(-1);\n\n const searchRef = useRef<SearchRequest>(search);\n searchRef.current = search;\n\n useEffect(() => {\n setSearch(JSON.parse(stringify(props.search)) as SearchRequest);\n }, [props.search]);\n\n function onAddFilter(filter: Filter): void {\n setSearch(addFilter(searchRef.current, filter.code, filter.operator, filter.value));\n }\n\n if (!props.visible) {\n return null;\n }\n\n const resourceType = props.search.resourceType;\n const searchParams = globalSchema.types[resourceType].searchParams as Record<string, SearchParameter>;\n const filters = search.filters || [];\n\n return (\n <Modal title=\"Filters\" closeButtonLabel=\"Close\" size={900} opened={props.visible} onClose={props.onCancel}>\n <div>\n <table>\n <colgroup>\n <col style={{ width: 200 }} />\n <col style={{ width: 200 }} />\n <col style={{ width: 380 }} />\n <col style={{ width: 120 }} />\n </colgroup>\n <thead>\n <tr>\n <th>Field</th>\n <th>Operation</th>\n <th>Value</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n {filters.map((filter: Filter, index: number) => {\n if (index === editingIndex) {\n return (\n <FilterRowInput\n key={`filter-${index}-${filters.length}-input`}\n resourceType={resourceType}\n searchParams={searchParams}\n defaultValue={filter}\n okText=\"Save\"\n onOk={(newFilter: Filter) => {\n const newFilters = [...filters];\n newFilters[index] = newFilter;\n setSearch(setFilters(searchRef.current, newFilters));\n setEditingIndex(-1);\n }}\n onCancel={() => setEditingIndex(-1)}\n />\n );\n } else {\n return (\n <FilterRowDisplay\n key={`filter-${index}-${filters.length}-display`}\n resourceType={resourceType}\n searchParams={searchParams}\n filter={filter}\n onEdit={() => setEditingIndex(index)}\n onDelete={() => setSearch(deleteFilter(searchRef.current, index))}\n />\n );\n }\n })}\n <FilterRowInput resourceType={resourceType} searchParams={searchParams} okText=\"Add\" onOk={onAddFilter} />\n </tbody>\n </table>\n </div>\n <Group position=\"right\" mt=\"xl\">\n <Button onClick={() => props.onOk(searchRef.current)}>OK</Button>\n </Group>\n </Modal>\n );\n}\n\ninterface FilterRowDisplayProps {\n readonly searchParams: Record<string, SearchParameter>;\n readonly resourceType: string;\n readonly filter: Filter;\n readonly onEdit: () => void;\n readonly onDelete: () => void;\n}\n\nfunction FilterRowDisplay(props: FilterRowDisplayProps): JSX.Element | null {\n const { filter } = props;\n return (\n <tr>\n <td>{buildFieldNameString(filter.code)}</td>\n <td>{getOpString(filter.operator)}</td>\n <td>\n <SearchFilterValueDisplay resourceType={props.resourceType} filter={filter} />\n </td>\n <td>\n <Button compact variant=\"outline\" onClick={props.onEdit}>\n Edit\n </Button>\n <Button compact variant=\"outline\" onClick={props.onDelete}>\n Delete\n </Button>\n </td>\n </tr>\n );\n}\n\ninterface FilterRowInputProps {\n resourceType: string;\n searchParams: Record<string, SearchParameter>;\n defaultValue?: Filter;\n okText: string;\n onOk: (value: Filter) => void;\n onCancel?: () => void;\n}\n\nfunction FilterRowInput(props: FilterRowInputProps): JSX.Element {\n const [value, setValue] = useState<Filter>(props.defaultValue ?? ({} as Filter));\n const valueRef = useRef<Filter>(value);\n valueRef.current = value;\n\n function setFilterCode(newCode: string): void {\n setValue({ ...valueRef.current, code: newCode });\n }\n\n function setFilterOperator(newOperator: Operator): void {\n setValue({ ...valueRef.current, operator: newOperator });\n }\n\n function setFilterValue(newFilterValue: string): void {\n setValue({ ...valueRef.current, value: newFilterValue });\n }\n\n const searchParam = props.searchParams[value.code];\n const operators = searchParam && getSearchOperators(searchParam);\n\n return (\n <tr>\n <td>\n <NativeSelect\n data-testid=\"filter-field\"\n defaultValue={valueRef.current.code}\n onChange={(e) => setFilterCode(e.currentTarget.value)}\n data={Object.keys(props.searchParams).map((param) => ({ value: param, label: buildFieldNameString(param) }))}\n />\n </td>\n <td>\n {operators && (\n <NativeSelect\n data-testid=\"filter-operation\"\n defaultValue={value.operator}\n onChange={(e) => setFilterOperator(e.currentTarget.value as Operator)}\n data={['', ...operators.map((op) => ({ value: op, label: getOpString(op) }))]}\n />\n )}\n </td>\n <td>\n {searchParam && value.operator && (\n <SearchFilterValueInput\n resourceType={props.resourceType}\n searchParam={searchParam}\n defaultValue={value.value}\n onChange={setFilterValue}\n />\n )}\n </td>\n <td>\n {value.code && value.operator && value.value && (\n <Button\n compact\n variant=\"outline\"\n onClick={() => {\n props.onOk(valueRef.current);\n setValue({} as Filter);\n }}\n >\n {props.okText}\n </Button>\n )}\n {props.onCancel && (\n <Button compact variant=\"outline\" onClick={props.onCancel}>\n Cancel\n </Button>\n )}\n </td>\n </tr>\n );\n}\n","import { Button, Modal } from '@mantine/core';\nimport { Filter } from '@medplum/core';\nimport { SearchParameter } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { Form } from '../Form/Form';\nimport { SearchFilterValueInput } from '../SearchFilterValueInput/SearchFilterValueInput';\n\nexport interface SearchFilterValueDialogProps {\n title: string;\n visible: boolean;\n resourceType: string;\n searchParam?: SearchParameter;\n filter?: Filter;\n defaultValue?: string;\n onOk: (filter: Filter) => void;\n onCancel: () => void;\n}\n\nexport function SearchFilterValueDialog(props: SearchFilterValueDialogProps): JSX.Element | null {\n const [value, setValue] = useState<string>(props.defaultValue ?? '');\n\n if (!props.visible || !props.searchParam || !props.filter) {\n return null;\n }\n\n function onOk(): void {\n props.onOk({ ...(props.filter as Filter), value });\n }\n\n return (\n <Modal title={props.title} size=\"xl\" opened={props.visible} onClose={props.onCancel}>\n <div style={{ width: 500 }}>\n <Form onSubmit={onOk}>\n <SearchFilterValueInput\n resourceType={props.resourceType}\n searchParam={props.searchParam}\n defaultValue={value}\n autoFocus={true}\n onChange={setValue}\n />\n </Form>\n </div>\n <Button onClick={onOk}>OK</Button>\n </Modal>\n );\n}\n","import { Menu } from '@mantine/core';\nimport { Filter, Operator, SearchRequest } from '@medplum/core';\nimport { SearchParameter } from '@medplum/fhirtypes';\nimport {\n IconBleach,\n IconBleachOff,\n IconBracketsContain,\n IconBucket,\n IconBucketOff,\n IconCalendar,\n IconEqual,\n IconEqualNot,\n IconMathGreater,\n IconMathLower,\n IconSettings,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} from '@tabler/icons';\nimport React from 'react';\nimport {\n addLastMonthFilter,\n addMissingFilter,\n addNextMonthFilter,\n addThisMonthFilter,\n addTodayFilter,\n addTomorrowFilter,\n addYearToDateFilter,\n addYesterdayFilter,\n buildFieldNameString,\n clearFiltersOnField,\n setSort,\n} from '../SearchControl/SearchUtils';\n\nexport interface SearchPopupMenuProps {\n search: SearchRequest;\n searchParams?: SearchParameter[];\n onPrompt: (searchParam: SearchParameter, filter: Filter) => void;\n onChange: (definition: SearchRequest) => void;\n}\n\nexport function SearchPopupMenu(props: SearchPopupMenuProps): JSX.Element | null {\n if (!props.searchParams) {\n return null;\n }\n\n function onSort(searchParam: SearchParameter, desc: boolean): void {\n onChange(setSort(props.search, searchParam.code as string, desc));\n }\n\n function onClear(searchParam: SearchParameter): void {\n onChange(clearFiltersOnField(props.search, searchParam.code as string));\n }\n\n function onPrompt(searchParam: SearchParameter, operator: Operator): void {\n props.onPrompt(searchParam, { code: searchParam.code as string, operator, value: '' });\n }\n\n function onChange(definition: SearchRequest): void {\n props.onChange(definition);\n }\n\n // If there is only one search parameter, then show it directly\n if (props.searchParams.length === 1) {\n return (\n <SearchParameterSubMenu\n search={props.search}\n searchParam={props.searchParams[0]}\n onSort={onSort}\n onPrompt={onPrompt}\n onChange={onChange}\n onClear={onClear}\n />\n );\n }\n\n // Otherwise, show a menu, with each search parameter as a sub menu\n return (\n <Menu.Dropdown>\n {props.searchParams.map((searchParam) => (\n <Menu.Item key={searchParam.code}>{buildFieldNameString(searchParam.code as string)}</Menu.Item>\n ))}\n </Menu.Dropdown>\n );\n}\n\ninterface SearchPopupSubMenuProps {\n search: SearchRequest;\n searchParam: SearchParameter;\n onSort: (searchParam: SearchParameter, descending: boolean) => void;\n onPrompt: (searchParam: SearchParameter, operator: Operator) => void;\n onChange: (search: SearchRequest) => void;\n onClear: (searchParam: SearchParameter) => void;\n}\n\nfunction SearchParameterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n switch (props.searchParam.type) {\n case 'date':\n return <DateFilterSubMenu {...props} />;\n case 'number':\n case 'quantity':\n return <NumericFilterSubMenu {...props} />;\n case 'reference':\n return <ReferenceFilterSubMenu {...props} />;\n case 'string':\n case 'token':\n case 'uri':\n return <TextFilterSubMenu {...props} />;\n default:\n return <>Unknown search param type: {props.searchParam.type}</>;\n }\n}\n\nfunction DateFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Oldest to Newest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Newest to Oldest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.ENDS_BEFORE)}>\n Before...\n </Menu.Item>\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.STARTS_AFTER)}\n >\n After...\n </Menu.Item>\n <Menu.Item icon={<IconBracketsContain size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Between...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addTomorrowFilter(props.search, code))}\n >\n Tomorrow\n </Menu.Item>\n <Menu.Item icon={<IconCalendar size={14} />} onClick={() => props.onChange(addTodayFilter(props.search, code))}>\n Today\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYesterdayFilter(props.search, code))}\n >\n Yesterday\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addNextMonthFilter(props.search, code))}\n >\n Next Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addThisMonthFilter(props.search, code))}\n >\n This Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addLastMonthFilter(props.search, code))}\n >\n Last Month\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYearToDateFilter(props.search, code))}\n >\n Year to date\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction NumericFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Smallest to Largest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Largest to Smallest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN)}\n >\n Greater than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN_OR_EQUALS)}\n >\n Greater than or equal to...\n </Menu.Item>\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN)}>\n Less than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN_OR_EQUALS)}\n >\n Less than or equal to...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction ReferenceFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction TextFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort A to Z\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Z to A\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconBucket size={14} />} onClick={() => props.onPrompt(searchParam, Operator.CONTAINS)}>\n Contains...\n </Menu.Item>\n <Menu.Item icon={<IconBucketOff size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Does not contain...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction CommonMenuItems(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <>\n <Menu.Divider />\n <Menu.Item icon={<IconBleach size={14} />} onClick={() => props.onChange(addMissingFilter(props.search, code))}>\n Missing\n </Menu.Item>\n <Menu.Item\n icon={<IconBleachOff size={14} />}\n onClick={() => props.onChange(addMissingFilter(props.search, code, false))}\n >\n Not missing\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconX size={14} />} onClick={() => props.onClear(searchParam)}>\n Clear filters\n </Menu.Item>\n </>\n );\n}\n","import { getSearchParameterDetails, globalSchema, SearchRequest } from '@medplum/core';\nimport { ElementDefinition, ResourceType, SearchParameter } from '@medplum/fhirtypes';\n\n/**\n * The SearchControlField type describes a field in the search control.\n *\n * In a SearchRequest, a field is a simple string. Strings can be one of the following:\n * 1) Simple property names, which refer to ElementDefinition objects\n * 2) Search parameter names, which refer to SearchParameter resources\n *\n * Consider a few examples of how this becomes complicated.\n *\n * \"name\" (easy)\n * - element definition path=\"Patient.name\"\n * - search parameter code=\"name\"\n *\n * \"birthDate\" (medium)\n * - refers to the element definition path=\"Patient.birthDate\"\n * - refers to the search parameter code=\"birthdate\" (note the capitalization)\n *\n * \"email\" (hard)\n * - refers to the search parameter code=\"email\"\n * - refers to the element definition path=\"Patient.telecom\"\n *\n * In the last case, we start with the search parameter, and walk backwards to the\n * element definition in order to get type details for rendering.\n *\n * Overall, we want columns, fields, properties, and search parameters to feel seamless,\n * so we try our darndest to make this work.\n */\nexport interface SearchControlField {\n readonly name: string;\n readonly elementDefinition?: ElementDefinition;\n readonly searchParams?: SearchParameter[];\n}\n\n/**\n * Returns the collection of field definitions for the search request.\n * @param search The search request definition.\n * @returns An array of field definitions.\n */\nexport function getFieldDefinitions(search: SearchRequest): SearchControlField[] {\n const resourceType = search.resourceType;\n const fields = [] as SearchControlField[];\n\n for (const name of search.fields || ['id', '_lastUpdated']) {\n fields.push(getFieldDefinition(resourceType, name));\n }\n return fields;\n}\n\n/**\n * Return the field definition for a given field name.\n * Field names can be either property names or search parameter codes.\n * @param resourceType The resource type.\n * @param name The search field name (either property name or search parameter code).\n * @returns The field definition.\n */\nfunction getFieldDefinition(resourceType: string, name: string): SearchControlField {\n if (name === '_lastUpdated') {\n return {\n name: '_lastUpdated',\n searchParams: [\n {\n resourceType: 'SearchParameter',\n base: ['Resource' as ResourceType],\n code: '_lastUpdated',\n name: '_lastUpdated',\n type: 'date',\n expression: 'Resource.meta.lastUpdated',\n },\n ],\n };\n }\n\n if (name === 'meta.versionId') {\n return {\n name: 'meta.versionId',\n searchParams: [\n {\n resourceType: 'SearchParameter',\n base: ['Resource' as ResourceType],\n code: '_versionId',\n name: '_versionId',\n type: 'token',\n expression: 'Resource.meta.versionId',\n },\n ],\n };\n }\n\n const typeSchema = globalSchema.types[resourceType];\n const exactElementDefinition: ElementDefinition | undefined = typeSchema.properties[name];\n const exactSearchParam: SearchParameter | undefined = typeSchema.searchParams?.[name.toLowerCase()];\n\n // Best case: Exact match of element definition or search parameter.\n // Examples: ServiceRequest.subject, Patient.name, Patient.birthDate\n // In this case, we only show the one search parameter.\n if (exactElementDefinition && exactSearchParam) {\n return { name, elementDefinition: exactElementDefinition, searchParams: [exactSearchParam] };\n }\n\n // Next best case: Exact match of element definition\n // Examples: Observation.value\n // In this case, there could be zero or more search parameters that are a function of the element definition.\n // So search for those search parameters.\n if (exactElementDefinition) {\n let searchParams: SearchParameter[] | undefined = undefined;\n if (typeSchema.searchParams) {\n const path = `${resourceType}.${name.replaceAll('[x]', '')}`;\n searchParams = Object.values(typeSchema.searchParams).filter((p) => p.expression?.includes(path));\n if (searchParams.length === 0) {\n searchParams = undefined;\n }\n }\n return { name, elementDefinition: exactElementDefinition, searchParams };\n }\n\n // Search parameter case: Exact match of search parameter\n // Examples: Observation.value-quantity, Patient.email\n // Here we have a search parameter, but no element definition.\n // Observation.value-quantity is a search parameter for the Observation.value element.\n // Patient.email is a search parameter for the Patient.telecom element.\n // So we need to walk backwards to find the element definition.\n if (exactSearchParam) {\n const details = getSearchParameterDetails(resourceType, exactSearchParam);\n return { name, elementDefinition: details.elementDefinition, searchParams: [exactSearchParam] };\n }\n\n // Worst case: no element definition and no search parameter.\n // This is probably a malformed URL that includes an unknown field.\n // We will render the column header, but all cells will be empty.\n return { name };\n}\n","import {\n Button,\n Center,\n createStyles,\n Group,\n Loader,\n Menu,\n Pagination,\n Table,\n Text,\n UnstyledButton,\n} from '@mantine/core';\nimport { DEFAULT_SEARCH_COUNT, Filter, formatSearchQuery, globalSchema, SearchRequest } from '@medplum/core';\nimport {\n Bundle,\n OperationOutcome,\n Resource,\n ResourceType,\n SearchParameter,\n UserConfiguration,\n} from '@medplum/fhirtypes';\nimport {\n IconAdjustmentsHorizontal,\n IconBoxMultiple,\n IconColumns,\n IconFilePlus,\n IconFilter,\n IconTableExport,\n IconTrash,\n} from '@tabler/icons';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Container } from '../Container/Container';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { SearchFieldEditor } from '../SearchFieldEditor/SearchFieldEditor';\nimport { SearchFilterEditor } from '../SearchFilterEditor/SearchFilterEditor';\nimport { SearchFilterValueDialog } from '../SearchFilterValueDialog/SearchFilterValueDialog';\nimport { SearchFilterValueDisplay } from '../SearchFilterValueDisplay/SearchFilterValueDisplay';\nimport { SearchPopupMenu } from '../SearchPopupMenu/SearchPopupMenu';\nimport { isCheckboxCell, killEvent } from '../utils/dom';\nimport { getFieldDefinitions } from './SearchControlField';\nimport { addFilter, buildFieldNameString, getOpString, renderValue, setPage } from './SearchUtils';\n\nexport class SearchChangeEvent extends Event {\n readonly definition: SearchRequest;\n\n constructor(definition: SearchRequest) {\n super('change');\n this.definition = definition;\n }\n}\n\nexport class SearchLoadEvent extends Event {\n readonly response: Bundle;\n\n constructor(response: Bundle) {\n super('load');\n this.response = response;\n }\n}\n\nexport class SearchClickEvent extends Event {\n readonly resource: Resource;\n readonly browserEvent: React.MouseEvent;\n\n constructor(resource: Resource, browserEvent: React.MouseEvent) {\n super('click');\n this.resource = resource;\n this.browserEvent = browserEvent;\n }\n}\n\nexport interface SearchControlProps {\n search: SearchRequest;\n userConfig?: UserConfiguration;\n checkboxesEnabled?: boolean;\n hideToolbar?: boolean;\n hideFilters?: boolean;\n onLoad?: (e: SearchLoadEvent) => void;\n onChange?: (e: SearchChangeEvent) => void;\n onClick?: (e: SearchClickEvent) => void;\n onAuxClick?: (e: SearchClickEvent) => void;\n onNew?: () => void;\n onExport?: () => void;\n onDelete?: (ids: string[]) => void;\n onPatch?: (ids: string[]) => void;\n onBulk?: (ids: string[]) => void;\n}\n\ninterface SearchControlState {\n searchResponse?: Bundle;\n selected: { [id: string]: boolean };\n fieldEditorVisible: boolean;\n filterEditorVisible: boolean;\n filterDialogVisible: boolean;\n filterDialogFilter?: Filter;\n filterDialogSearchParam?: SearchParameter;\n}\n\nconst useStyles = createStyles((theme) => ({\n root: {\n maxWidth: '100%',\n overflow: 'auto',\n textAlign: 'left',\n marginBottom: '20px',\n },\n\n table: {\n cursor: 'pointer',\n },\n\n tr: {\n '&:hover': {\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[7] : theme.colors.gray[0],\n },\n },\n\n th: {\n padding: '0 !important',\n },\n\n control: {\n width: '100%',\n padding: `${theme.spacing.xs}px ${theme.spacing.md}px`,\n\n '&:hover': {\n backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[6] : theme.colors.gray[0],\n },\n },\n\n icon: {\n width: 21,\n height: 21,\n borderRadius: 21,\n },\n}));\n\n/**\n * The SearchControl component represents the embeddable search table control.\n * It includes the table, rows, headers, sorting, etc.\n * It does not include the field editor, filter editor, pagination buttons.\n */\nexport function SearchControl(props: SearchControlProps): JSX.Element {\n const { classes } = useStyles();\n const medplum = useMedplum();\n const [schemaLoaded, setSchemaLoaded] = useState<boolean>(false);\n const [outcome, setOutcome] = useState<OperationOutcome | undefined>();\n const { search, onLoad } = props;\n\n const [state, setState] = useState<SearchControlState>({\n selected: {},\n fieldEditorVisible: false,\n filterEditorVisible: false,\n filterDialogVisible: false,\n });\n\n const stateRef = useRef<SearchControlState>(state);\n stateRef.current = state;\n\n useEffect(() => {\n setOutcome(undefined);\n medplum\n .search(\n search.resourceType as ResourceType,\n formatSearchQuery({ ...search, total: 'accurate', fields: undefined })\n )\n .then((response) => {\n setState({ ...stateRef.current, searchResponse: response });\n if (onLoad) {\n onLoad(new SearchLoadEvent(response));\n }\n })\n .catch((reason) => {\n setState({ ...stateRef.current, searchResponse: undefined });\n setOutcome(reason);\n });\n }, [medplum, search, onLoad]);\n\n function handleSingleCheckboxClick(e: React.ChangeEvent, id: string): void {\n e.stopPropagation();\n\n const el = e.target as HTMLInputElement;\n const checked = el.checked;\n const newSelected = { ...stateRef.current.selected };\n if (checked) {\n newSelected[id] = true;\n } else {\n delete newSelected[id];\n }\n setState({ ...stateRef.current, selected: newSelected });\n }\n\n function handleAllCheckboxClick(e: React.ChangeEvent): void {\n e.stopPropagation();\n\n const el = e.target as HTMLInputElement;\n const checked = el.checked;\n const newSelected = {} as { [id: string]: boolean };\n const searchResponse = stateRef.current?.searchResponse;\n if (checked && searchResponse?.entry) {\n searchResponse.entry.forEach((entry) => {\n if (entry.resource?.id) {\n newSelected[entry.resource.id] = true;\n }\n });\n }\n setState({ ...stateRef.current, selected: newSelected });\n }\n\n function isAllSelected(): boolean {\n const state = stateRef.current;\n if (!state.searchResponse?.entry || state.searchResponse.entry.length === 0) {\n return false;\n }\n for (const e of state.searchResponse.entry) {\n if (e.resource?.id && !state.selected[e.resource.id]) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Emits a change event to the optional change listener.\n * @param newSearch The new search definition.\n */\n function emitSearchChange(newSearch: SearchRequest): void {\n if (props.onChange) {\n props.onChange(new SearchChangeEvent(newSearch));\n }\n }\n\n /**\n * Handles a click on a order row.\n *\n * @param e The click event.\n * @param resource The FHIR resource.\n */\n function handleRowClick(e: React.MouseEvent, resource: Resource): void {\n if (isCheckboxCell(e.target as Element)) {\n // Ignore clicks on checkboxes\n return;\n }\n\n if (e.button === 2) {\n // Ignore right clicks\n return;\n }\n\n killEvent(e);\n\n if (e.button !== 1 && props.onClick) {\n props.onClick(new SearchClickEvent(resource, e));\n }\n\n if (e.button === 1 && props.onAuxClick) {\n props.onAuxClick(new SearchClickEvent(resource, e));\n }\n }\n\n useEffect(() => {\n setSchemaLoaded(false);\n medplum\n .requestSchema(props.search.resourceType as ResourceType)\n .then(() => setSchemaLoaded(true))\n .catch(console.log);\n }, [medplum, props.search.resourceType]);\n\n const typeSchema = schemaLoaded && globalSchema?.types?.[props.search.resourceType];\n if (!typeSchema) {\n return (\n <Center style={{ width: '100%', height: '100%' }}>\n <Loader />\n </Center>\n );\n }\n\n const checkboxColumn = props.checkboxesEnabled;\n const fields = getFieldDefinitions(search);\n const resourceType = search.resourceType;\n const lastResult = state.searchResponse;\n const entries = lastResult?.entry;\n const resources = entries?.map((e) => e.resource);\n\n const buttonVariant = 'subtle';\n const buttonColor = 'gray';\n const iconSize = 16;\n const isMobile = window.innerWidth < 768;\n\n return (\n <div className={classes.root} data-testid=\"search-control\">\n {!props.hideToolbar && (\n <Group position=\"apart\" mb=\"xl\">\n <Group spacing={2}>\n <Button\n compact\n variant={buttonVariant}\n color={buttonColor}\n leftIcon={<IconFilter size={iconSize} />}\n onClick={() => setState({ ...stateRef.current, fieldEditorVisible: true })}\n >\n Fields\n </Button>\n <Button\n compact\n variant={buttonVariant}\n color={buttonColor}\n leftIcon={<IconColumns size={iconSize} />}\n onClick={() => setState({ ...stateRef.current, filterEditorVisible: true })}\n >\n Filters\n </Button>\n {props.onNew && (\n <Button\n compact\n variant={buttonVariant}\n color={buttonColor}\n leftIcon={<IconFilePlus size={iconSize} />}\n onClick={props.onNew}\n >\n New...\n </Button>\n )}\n {!isMobile && props.onExport && (\n <Button\n compact\n variant={buttonVariant}\n color={buttonColor}\n leftIcon={<IconTableExport size={iconSize} />}\n onClick={props.onExport}\n >\n Export...\n </Button>\n )}\n {!isMobile && props.onDelete && (\n <Button\n compact\n variant={buttonVariant}\n color={buttonColor}\n leftIcon={<IconTrash size={iconSize} />}\n onClick={() => (props.onDelete as (ids: string[]) => any)(Object.keys(state.selected))}\n >\n Delete...\n </Button>\n )}\n {!isMobile && props.onBulk && (\n <Button\n compact\n variant={buttonVariant}\n color={buttonColor}\n leftIcon={<IconBoxMultiple size={iconSize} />}\n onClick={() => (props.onBulk as (ids: string[]) => any)(Object.keys(state.selected))}\n >\n Bulk...\n </Button>\n )}\n </Group>\n {lastResult && (\n <Text size=\"xs\" color=\"dimmed\">\n {getStart(search, lastResult.total as number)}-{getEnd(search, lastResult.total as number)} of{' '}\n {lastResult.total?.toLocaleString()}\n </Text>\n )}\n </Group>\n )}\n <Table className={classes.table}>\n <thead>\n <tr>\n {checkboxColumn && (\n <th>\n <input\n type=\"checkbox\"\n value=\"checked\"\n aria-label=\"all-checkbox\"\n data-testid=\"all-checkbox\"\n checked={isAllSelected()}\n onChange={(e) => handleAllCheckboxClick(e)}\n />\n </th>\n )}\n {fields.map((field) => (\n <th key={field.name}>\n <Menu shadow=\"md\" width={240} position=\"bottom-end\">\n <Menu.Target>\n <UnstyledButton className={classes.control}>\n <Group position=\"apart\" noWrap>\n <Text weight={500} size=\"sm\">\n {buildFieldNameString(field.name)}\n </Text>\n <Center className={classes.icon}>\n <IconAdjustmentsHorizontal size={14} stroke={1.5} />\n </Center>\n </Group>\n </UnstyledButton>\n </Menu.Target>\n <SearchPopupMenu\n search={props.search}\n searchParams={field.searchParams}\n onPrompt={(searchParam, filter) => {\n setState({\n ...stateRef.current,\n filterDialogVisible: true,\n filterDialogSearchParam: searchParam,\n filterDialogFilter: filter,\n });\n }}\n onChange={(result) => {\n emitSearchChange(result);\n }}\n />\n </Menu>\n </th>\n ))}\n </tr>\n {!props.hideFilters && (\n <tr>\n {checkboxColumn && <th />}\n {fields.map((field) => (\n <th key={field.name}>\n {field.searchParams && (\n <FilterDescription\n resourceType={resourceType}\n searchParams={field.searchParams}\n filters={props.search.filters}\n />\n )}\n </th>\n ))}\n </tr>\n )}\n </thead>\n <tbody>\n {resources?.map(\n (resource) =>\n resource && (\n <tr\n key={resource.id}\n className={classes.tr}\n data-testid=\"search-control-row\"\n onClick={(e) => handleRowClick(e, resource)}\n onAuxClick={(e) => handleRowClick(e, resource)}\n >\n {checkboxColumn && (\n <td>\n <input\n type=\"checkbox\"\n value=\"checked\"\n data-testid=\"row-checkbox\"\n aria-label={`Checkbox for ${resource.id}`}\n checked={!!state.selected[resource.id as string]}\n onChange={(e) => handleSingleCheckboxClick(e, resource.id as string)}\n />\n </td>\n )}\n {fields.map((field) => (\n <td key={field.name}>{renderValue(resource, field)}</td>\n ))}\n </tr>\n )\n )}\n </tbody>\n </Table>\n {resources?.length === 0 && (\n <Container>\n <Center>\n <Text size=\"xl\" color=\"dimmed\">\n No results\n </Text>\n </Center>\n </Container>\n )}\n {lastResult?.total !== undefined && lastResult.total > 0 && (\n <Center m=\"md\" p=\"md\">\n <Pagination\n page={getPage(search)}\n total={getTotalPages(search, lastResult.total)}\n onChange={(newPage) => emitSearchChange(setPage(search, newPage))}\n getItemAriaLabel={(page) => {\n switch (page) {\n case 'prev':\n return 'Previous page';\n case 'next':\n return 'Next page';\n default:\n return undefined;\n }\n }}\n />\n </Center>\n )}\n {outcome && (\n <div data-testid=\"search-error\">\n <pre style={{ textAlign: 'left' }}>{JSON.stringify(outcome, undefined, 2)}</pre>\n </div>\n )}\n <SearchFieldEditor\n search={props.search}\n visible={stateRef.current.fieldEditorVisible}\n onOk={(result) => {\n emitSearchChange(result);\n setState({\n ...stateRef.current,\n fieldEditorVisible: false,\n });\n }}\n onCancel={() => {\n setState({\n ...stateRef.current,\n fieldEditorVisible: false,\n });\n }}\n />\n <SearchFilterEditor\n search={props.search}\n visible={stateRef.current.filterEditorVisible}\n onOk={(result) => {\n emitSearchChange(result);\n setState({\n ...stateRef.current,\n filterEditorVisible: false,\n });\n }}\n onCancel={() => {\n setState({\n ...stateRef.current,\n filterEditorVisible: false,\n });\n }}\n />\n <SearchFilterValueDialog\n key={state.filterDialogSearchParam?.code}\n visible={stateRef.current.filterDialogVisible}\n title={'Input'}\n resourceType={resourceType}\n searchParam={state.filterDialogSearchParam}\n filter={state.filterDialogFilter}\n defaultValue={''}\n onOk={(filter) => {\n emitSearchChange(addFilter(props.search, filter.code, filter.operator, filter.value));\n setState({\n ...stateRef.current,\n filterDialogVisible: false,\n });\n }}\n onCancel={() => {\n setState({\n ...stateRef.current,\n filterDialogVisible: false,\n });\n }}\n />\n </div>\n );\n}\n\nexport const MemoizedSearchControl = React.memo(SearchControl);\n\ninterface FilterDescriptionProps {\n readonly resourceType: string;\n readonly searchParams: SearchParameter[];\n readonly filters?: Filter[];\n}\n\nfunction FilterDescription(props: FilterDescriptionProps): JSX.Element {\n const filters = (props.filters ?? []).filter((f) => props.searchParams.find((p) => p.code === f.code));\n if (filters.length === 0) {\n return <span>no filters</span>;\n }\n\n return (\n <>\n {filters.map((filter: Filter, index: number) => (\n <div key={`filter-${index}-${filters.length}`}>\n {getOpString(filter.operator)}\n &nbsp;\n <SearchFilterValueDisplay resourceType={props.resourceType} filter={filter} />\n </div>\n ))}\n </>\n );\n}\n\nfunction getPage(search: SearchRequest): number {\n return Math.floor((search.offset || 0) / (search.count || DEFAULT_SEARCH_COUNT)) + 1;\n}\n\nfunction getTotalPages(search: SearchRequest, total: number): number {\n const pageSize = search.count || DEFAULT_SEARCH_COUNT;\n return Math.ceil(total / pageSize);\n}\n\nfunction getStart(search: SearchRequest, total: number): number {\n return Math.min(total, (search.offset ?? 0) + 1);\n}\n\nfunction getEnd(search: SearchRequest, total: number): number {\n return Math.min(total, ((search.offset ?? 0) + 1) * (search.count ?? DEFAULT_SEARCH_COUNT));\n}\n","import { Button, Loader, Table } from '@mantine/core';\nimport { IndexedStructureDefinition, PropertyType } from '@medplum/core';\nimport { OperationOutcome, Resource } from '@medplum/fhirtypes';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { FhirPathDisplay } from '../FhirPathDisplay/FhirPathDisplay';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { SearchClickEvent } from '../SearchControl/SearchControl';\nimport { isCheckboxCell, killEvent } from '../utils/dom';\n\nexport interface SmartSearchField {\n readonly propertyType: PropertyType;\n readonly name: string;\n readonly fhirPath: string;\n}\n\nexport interface FhirPathTableProps {\n resourceType: string;\n query: string;\n fields: SmartSearchField[];\n checkboxesEnabled?: boolean;\n onClick?: (e: SearchClickEvent) => void;\n onAuxClick?: (e: SearchClickEvent) => void;\n onBulk?: (ids: string[]) => void;\n}\n\nexport interface SmartSearchResponse {\n data: {\n ResourceList: Resource[];\n };\n}\n\n/**\n * The FhirPathTable component represents the embeddable search table control.\n */\nexport function FhirPathTable(props: FhirPathTableProps): JSX.Element {\n const medplum = useMedplum();\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>();\n const [outcome, setOutcome] = useState<OperationOutcome | undefined>();\n const { query, fields } = props;\n const [response, setResponse] = useState<SmartSearchResponse | undefined>();\n const [selected, setSelected] = useState<{ [id: string]: boolean }>({});\n\n const responseRef = useRef<SmartSearchResponse>();\n responseRef.current = response;\n\n const selectedRef = useRef<{ [id: string]: boolean }>({});\n selectedRef.current = selected;\n\n useEffect(() => {\n setOutcome(undefined);\n medplum.graphql(query).then(setResponse).catch(setOutcome);\n }, [medplum, query]);\n\n function handleSingleCheckboxClick(e: React.ChangeEvent, id: string): void {\n e.stopPropagation();\n\n const el = e.target as HTMLInputElement;\n const checked = el.checked;\n const newSelected = { ...selectedRef.current };\n if (checked) {\n newSelected[id] = true;\n } else {\n delete newSelected[id];\n }\n setSelected(newSelected);\n }\n\n function handleAllCheckboxClick(e: React.ChangeEvent): void {\n e.stopPropagation();\n\n const el = e.target as HTMLInputElement;\n const checked = el.checked;\n const newSelected = {} as { [id: string]: boolean };\n const resources = responseRef.current?.data?.ResourceList;\n if (checked && resources) {\n resources.forEach((resource) => {\n if (resource?.id) {\n newSelected[resource.id] = true;\n }\n });\n }\n setSelected(newSelected);\n }\n\n function isAllSelected(): boolean {\n const resources = responseRef.current?.data?.ResourceList;\n if (!resources || resources.length === 0) {\n return false;\n }\n for (const resource of resources) {\n if (resource?.id && !selectedRef.current[resource.id]) {\n return false;\n }\n }\n return true;\n }\n\n function handleRowClick(e: React.MouseEvent, resource: Resource): void {\n if (isCheckboxCell(e.target as Element)) {\n // Ignore clicks on checkboxes\n return;\n }\n\n killEvent(e);\n\n if (e.button !== 1 && props.onClick) {\n props.onClick(new SearchClickEvent(resource, e));\n }\n\n if (e.button === 1 && props.onAuxClick) {\n props.onAuxClick(new SearchClickEvent(resource, e));\n }\n }\n\n useEffect(() => {\n medplum\n .requestSchema(props.resourceType)\n .then((newSchema) => {\n // The schema could have the same object identity,\n // so need to use the spread operator to kick React re-render.\n setSchema({ ...newSchema });\n })\n .catch(console.log);\n }, [medplum, props.resourceType]);\n\n const typeSchema = schema?.types?.[props.resourceType];\n if (!typeSchema) {\n return <Loader />;\n }\n\n const checkboxColumn = props.checkboxesEnabled;\n\n return (\n <div onContextMenu={(e) => killEvent(e)} data-testid=\"search-control\">\n <Table>\n <thead>\n <tr>\n {checkboxColumn && (\n <th>\n <input\n type=\"checkbox\"\n value=\"checked\"\n aria-label=\"all-checkbox\"\n data-testid=\"all-checkbox\"\n checked={isAllSelected()}\n onChange={(e) => handleAllCheckboxClick(e)}\n />\n </th>\n )}\n {fields.map((field) => (\n <th key={field.name}>{field.name}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {response?.data?.ResourceList?.map(\n (resource) =>\n resource && (\n <tr\n key={resource.id}\n data-testid=\"search-control-row\"\n onClick={(e) => handleRowClick(e, resource)}\n onAuxClick={(e) => handleRowClick(e, resource)}\n >\n {checkboxColumn && (\n <td>\n <input\n type=\"checkbox\"\n value=\"checked\"\n data-testid=\"row-checkbox\"\n aria-label={`Checkbox for ${resource.id}`}\n checked={!!selected[resource.id as string]}\n onChange={(e) => handleSingleCheckboxClick(e, resource.id as string)}\n />\n </td>\n )}\n {fields.map((field) => {\n return (\n <td key={field.name}>\n <FhirPathDisplay propertyType={field.propertyType} path={field.fhirPath} resource={resource} />\n </td>\n );\n })}\n </tr>\n )\n )}\n </tbody>\n </Table>\n {response?.data?.ResourceList?.length === 0 && <div data-testid=\"empty-search\">No results</div>}\n {outcome && (\n <div data-testid=\"search-error\">\n <pre style={{ textAlign: 'left' }}>{JSON.stringify(outcome, undefined, 2)}</pre>\n </div>\n )}\n {props.onBulk && (\n <Button onClick={() => (props.onBulk as (ids: string[]) => any)(Object.keys(selectedRef.current))}>\n Bulk...\n </Button>\n )}\n </div>\n );\n}\n\nexport const MemoizedFhirPathTable = React.memo(FhirPathTable);\n","import { createReference, getReferenceString, ProfileResource } from '@medplum/core';\nimport { Attachment, Patient, Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface PatientTimelineProps {\n patient: Patient | Reference<Patient>;\n}\n\nconst searches = [\n '$/_history',\n 'Communication?subject=$',\n 'Device?patient=$',\n 'DeviceRequest?patient=$',\n 'DiagnosticReport?subject=$',\n 'Media?subject=$',\n 'ServiceRequest?subject=$',\n];\n\nexport function PatientTimeline(props: PatientTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.patient}\n buildSearchRequests={(resource: Resource) => ({\n resourceType: 'Bundle',\n type: 'batch',\n entry: searches.map((search) => ({\n request: {\n method: 'GET',\n url: search.replaceAll('$', getReferenceString(resource)),\n },\n })),\n })}\n createCommunication={(resource: Patient, sender: ProfileResource, text: string) => ({\n resourceType: 'Communication',\n status: 'completed',\n subject: createReference(resource),\n sender: createReference(sender),\n sent: new Date().toISOString(),\n payload: [{ contentString: text }],\n })}\n createMedia={(resource: Patient, operator: ProfileResource, content: Attachment) => ({\n resourceType: 'Media',\n status: 'completed',\n subject: createReference(resource),\n operator: createReference(operator),\n issued: new Date().toISOString(),\n content,\n })}\n />\n );\n}\n","import { Anchor, Button, createStyles, NativeSelect, Stack, TextInput } from '@mantine/core';\nimport { getReferenceString, IndexedStructureDefinition, PropertyType } from '@medplum/core';\nimport { ElementDefinition, PlanDefinition, PlanDefinitionAction, Reference, ResourceType } from '@medplum/fhirtypes';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Form } from '../Form/Form';\nimport { FormSection } from '../FormSection/FormSection';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { ReferenceDisplay } from '../ReferenceDisplay/ReferenceDisplay';\nimport { setPropertyValue } from '../ResourceForm/ResourceForm';\nimport { ResourceInput } from '../ResourceInput/ResourceInput';\nimport { getValueAndType, ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\nimport { ResourcePropertyInput } from '../ResourcePropertyInput/ResourcePropertyInput';\nimport { useResource } from '../useResource/useResource';\nimport { killEvent } from '../utils/dom';\n\nconst useStyles = createStyles((theme) => ({\n section: {\n position: 'relative',\n margin: '4px 4px 8px 0',\n padding: '6px 12px 16px 6px',\n border: `1.5px solid ${theme.colors.gray[1]}`,\n borderRadius: theme.radius.sm,\n transition: 'all 0.1s',\n },\n\n hovering: {\n border: `1.5px solid ${theme.colors.blue[5]}`,\n },\n\n editing: {\n border: `1.5px solid ${theme.colors.gray[1]}`,\n borderLeft: `4px solid ${theme.colors.blue[5]}`,\n },\n\n bottomActions: {\n position: 'absolute',\n right: 4,\n bottom: 0,\n fontSize: theme.fontSizes.xs,\n\n '& a': {\n marginLeft: 8,\n },\n },\n}));\n\nexport interface PlanDefinitionBuilderProps {\n value: PlanDefinition | Reference<PlanDefinition>;\n onSubmit: (result: PlanDefinition) => void;\n}\n\nexport function PlanDefinitionBuilder(props: PlanDefinitionBuilderProps): JSX.Element | null {\n const medplum = useMedplum();\n const defaultValue = useResource(props.value);\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>(undefined);\n const [selectedKey, setSelectedKey] = useState<string>();\n const [hoverKey, setHoverKey] = useState<string>();\n const [value, setValue] = useState<PlanDefinition>();\n\n function handleDocumentMouseOver(): void {\n setHoverKey(undefined);\n }\n\n function handleDocumentClick(): void {\n setSelectedKey(undefined);\n }\n\n const valueRef = useRef<PlanDefinition>();\n valueRef.current = value;\n\n useEffect(() => {\n medplum.requestSchema('PlanDefinition').then(setSchema).catch(console.log);\n }, [medplum]);\n\n useEffect(() => {\n setValue(ensurePlanDefinitionKeys(defaultValue ?? { resourceType: 'PlanDefinition' }));\n document.addEventListener('mouseover', handleDocumentMouseOver);\n document.addEventListener('click', handleDocumentClick);\n return () => {\n document.removeEventListener('mouseover', handleDocumentMouseOver);\n document.removeEventListener('click', handleDocumentClick);\n };\n }, [defaultValue]);\n\n if (!schema || !value) {\n return null;\n }\n\n function changeProperty(property: string, newValue: any): void {\n setValue({\n ...valueRef.current,\n [property]: newValue,\n } as PlanDefinition);\n }\n\n return (\n <div>\n <Form testid=\"questionnaire-form\" onSubmit={() => props.onSubmit(value)}>\n <TextInput\n label=\"Plan Title\"\n defaultValue={value.title}\n onChange={(e) => changeProperty('title', e.currentTarget.value)}\n />\n <ActionArrayBuilder\n actions={value.action || []}\n selectedKey={selectedKey}\n setSelectedKey={setSelectedKey}\n hoverKey={hoverKey}\n setHoverKey={setHoverKey}\n onChange={(x) => changeProperty('action', x)}\n />\n <Button type=\"submit\">Save</Button>\n </Form>\n </div>\n );\n}\n\ninterface ActionArrayBuilderProps {\n actions: PlanDefinitionAction[];\n selectedKey: string | undefined;\n setSelectedKey: (key: string | undefined) => void;\n hoverKey: string | undefined;\n setHoverKey: (key: string | undefined) => void;\n onChange: (actions: PlanDefinitionAction[]) => void;\n}\n\nfunction ActionArrayBuilder(props: ActionArrayBuilderProps): JSX.Element {\n const { classes } = useStyles();\n const actionsRef = useRef<PlanDefinitionAction[]>();\n actionsRef.current = props.actions;\n\n function changeAction(changedAction: PlanDefinitionAction): void {\n props.onChange(\n (actionsRef.current as PlanDefinition[]).map((i) => (i.id === changedAction.id ? changedAction : i))\n );\n }\n\n function addAction(addedAction: PlanDefinitionAction): void {\n props.onChange([...(actionsRef.current as PlanDefinition[]), addedAction]);\n props.setSelectedKey(addedAction.id);\n }\n\n function removeAction(removedAction: PlanDefinitionAction): void {\n props.onChange((actionsRef.current as PlanDefinition[]).filter((i) => i !== removedAction));\n }\n\n return (\n <div className={classes.section}>\n {props.actions.map((action) => (\n <div key={action.id}>\n <ActionBuilder\n action={action}\n selectedKey={props.selectedKey}\n setSelectedKey={props.setSelectedKey}\n hoverKey={props.hoverKey}\n setHoverKey={props.setHoverKey}\n onChange={changeAction}\n onRemove={() => removeAction(action)}\n />\n </div>\n ))}\n <div className={classes.bottomActions}>\n <Anchor\n href=\"#\"\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n addAction({ id: generateId() });\n }}\n >\n Add action\n </Anchor>\n </div>\n </div>\n );\n}\n\ninterface ActionBuilderProps {\n action: PlanDefinitionAction;\n selectedKey: string | undefined;\n setSelectedKey: (key: string | undefined) => void;\n hoverKey: string | undefined;\n setHoverKey: (key: string | undefined) => void;\n onChange: (action: PlanDefinitionAction) => void;\n onRemove: () => void;\n}\n\nfunction ActionBuilder(props: ActionBuilderProps): JSX.Element {\n const { classes, cx } = useStyles();\n const { action } = props;\n const actionType = getInitialActionType(action);\n const editing = props.selectedKey === props.action.id;\n const hovering = props.hoverKey === props.action.id;\n\n function onClick(e: React.SyntheticEvent): void {\n e.stopPropagation();\n props.setSelectedKey(props.action.id);\n }\n\n function onHover(e: React.SyntheticEvent): void {\n killEvent(e);\n props.setHoverKey(props.action.id);\n }\n\n const className = cx(classes.section, {\n [classes.editing]: editing,\n [classes.hovering]: hovering && !editing,\n });\n\n return (\n <div data-testid={action.id} className={className} onClick={onClick} onMouseOver={onHover}>\n {editing ? (\n <ActionEditor\n action={action}\n actionType={actionType}\n onChange={props.onChange}\n selectedKey={props.selectedKey}\n setSelectedKey={props.setSelectedKey}\n hoverKey={props.hoverKey}\n setHoverKey={props.setHoverKey}\n onRemove={props.onRemove}\n />\n ) : (\n <ActionDisplay action={action} actionType={actionType} />\n )}\n <div className={classes.bottomActions}>\n <Anchor\n href=\"#\"\n onClick={(e: React.MouseEvent) => {\n e.preventDefault();\n props.onRemove();\n }}\n >\n Remove\n </Anchor>\n </div>\n </div>\n );\n}\n\nconst timingProperty: ElementDefinition = {\n path: 'PlanDefinition.action.timing[x]',\n min: 0,\n max: '1',\n type: [{ code: 'dateTime' }, { code: 'Period' }, { code: 'Range' }, { code: 'Timing' }],\n};\n\ninterface ActionDisplayProps {\n action: PlanDefinitionAction;\n actionType: string | undefined;\n}\n\nfunction ActionDisplay(props: ActionDisplayProps): JSX.Element {\n const { action, actionType } = props;\n const [propertyValue, propertyType] = getActionTiming(action);\n return (\n <div>\n <div>\n {action.title || 'Untitled'} {actionType && `(${actionType})`}\n </div>\n {action.definitionCanonical && (\n <div>\n <ReferenceDisplay value={{ reference: action.definitionCanonical }} />\n </div>\n )}\n {propertyValue && (\n <div>\n <ResourcePropertyDisplay property={timingProperty} propertyType={propertyType} value={propertyValue} />\n </div>\n )}\n </div>\n );\n}\n\ninterface ActionEditorProps {\n action: PlanDefinitionAction;\n actionType: string | undefined;\n selectedKey: string | undefined;\n setSelectedKey: (key: string | undefined) => void;\n hoverKey: string | undefined;\n setHoverKey: (key: string | undefined) => void;\n onChange: (action: PlanDefinitionAction) => void;\n onRemove: () => void;\n}\n\nfunction ActionEditor(props: ActionEditorProps): JSX.Element {\n const { action } = props;\n const [actionType, setActionType] = useState<string | undefined>(props.actionType);\n\n function changeProperty(property: string, value: any): void {\n props.onChange({\n ...action,\n [property]: value,\n } as PlanDefinitionAction);\n }\n\n return (\n <Stack spacing=\"xl\">\n <TextInput\n name={`actionTitle-${action.id}`}\n label=\"Title\"\n defaultValue={action.title}\n onChange={(e) => changeProperty('title', e.currentTarget.value)}\n />\n <TextInput\n name={`actionDescription-${action.id}`}\n label=\"Description\"\n defaultValue={action.description}\n onChange={(e) => changeProperty('description', e.currentTarget.value)}\n />\n <NativeSelect\n label=\"Type of Action\"\n description=\"The type of the action to be performed.\"\n name={`actionType-${action.id}`}\n defaultValue={actionType}\n onChange={(e) => setActionType(e.currentTarget.value)}\n data={['', 'appointment', 'lab', 'questionnaire', 'task']}\n />\n {action.action && action.action.length > 0 && (\n <ActionArrayBuilder\n actions={action.action}\n selectedKey={props.selectedKey}\n setSelectedKey={props.setSelectedKey}\n hoverKey={props.hoverKey}\n setHoverKey={props.setHoverKey}\n onChange={(x) => changeProperty('action', x)}\n />\n )}\n {(() => {\n switch (actionType) {\n case 'appointment':\n return (\n <ActionResourceTypeBuilder\n title=\"Appointment\"\n description=\"The subject must schedule an appointment from the schedule.\"\n resourceType=\"Schedule\"\n action={action}\n onChange={props.onChange}\n />\n );\n case 'lab':\n return (\n <ActionResourceTypeBuilder\n title=\"Lab\"\n description=\"The subject must complete the following lab panel.\"\n resourceType=\"ActivityDefinition\"\n action={action}\n onChange={props.onChange}\n />\n );\n case 'questionnaire':\n return (\n <ActionResourceTypeBuilder\n title=\"Questionnaire\"\n description=\"The subject must complete the selected questionnaire.\"\n resourceType=\"Questionnaire\"\n action={action}\n onChange={props.onChange}\n />\n );\n case 'task':\n return (\n <ActionResourceTypeBuilder\n title=\"Task\"\n description=\"The subject must complete the following task.\"\n resourceType=\"ActivityDefinition\"\n action={action}\n onChange={props.onChange}\n />\n );\n default:\n return null;\n }\n })()}\n <FormSection title=\"Timing\" description=\"When the action should take place.\">\n <ActionTimingInput name={'timing-' + action.id} action={action} onChange={props.onChange} />\n </FormSection>\n </Stack>\n );\n}\n\ninterface ActionResourceTypeBuilderProps {\n action: PlanDefinitionAction;\n title: string;\n description: string;\n resourceType: ResourceType;\n onChange: (action: PlanDefinitionAction) => void;\n}\n\nfunction ActionResourceTypeBuilder(props: ActionResourceTypeBuilderProps): JSX.Element {\n const { id, definitionCanonical } = props.action;\n const reference = definitionCanonical?.startsWith(props.resourceType + '/')\n ? { reference: definitionCanonical }\n : undefined;\n return (\n <ResourceInput\n name={id as string}\n resourceType={props.resourceType}\n defaultValue={reference}\n loadOnFocus={true}\n onChange={(newValue) => {\n if (newValue) {\n props.onChange({ ...props.action, definitionCanonical: getReferenceString(newValue) });\n } else {\n props.onChange({ ...props.action, definitionCanonical: undefined });\n }\n }}\n />\n );\n}\n\ninterface ActionTimingInputProps {\n name: string;\n action: PlanDefinitionAction;\n onChange: (action: PlanDefinitionAction) => void;\n}\n\nfunction ActionTimingInput(props: ActionTimingInputProps): JSX.Element {\n const value = props.action;\n const key = 'timing';\n const [propertyValue, propertyType] = getActionTiming(value);\n return (\n <ResourcePropertyInput\n property={timingProperty}\n name=\"timing[x]\"\n defaultValue={propertyValue}\n defaultPropertyType={propertyType}\n onChange={(newValue: any, propName?: string) => {\n props.onChange(setPropertyValue(value, key, propName ?? key, timingProperty, newValue));\n }}\n />\n );\n}\n\nfunction getInitialActionType(action: PlanDefinitionAction): string | undefined {\n if (action.definitionCanonical?.startsWith('Schedule')) {\n return 'appointment';\n }\n\n if (action.definitionCanonical?.startsWith('Questionnaire/')) {\n return 'questionnaire';\n }\n\n if (action.definitionCanonical?.startsWith('ActivityDefinition/')) {\n return 'task';\n }\n\n return undefined;\n}\n\nfunction getActionTiming(action: PlanDefinitionAction): [any, PropertyType] {\n return getValueAndType({ type: 'PlanDefinitionAction', value: action }, 'timing');\n}\n\nlet nextId = 1;\n\n/**\n * Generates a unique ID.\n * React needs unique IDs for components for rendering performance.\n * All of the important components in the questionnaire builder have id properties for this:\n * Questionnaire, QuestionnaireItem, and QuestionnaireItemAnswerOption.\n * @return A unique key.\n */\nfunction generateId(existing?: string): string {\n if (existing) {\n if (existing.startsWith('id-')) {\n const existingNum = parseInt(existing.substring(3));\n if (!isNaN(existingNum)) {\n nextId = Math.max(nextId, existingNum + 1);\n }\n }\n return existing;\n }\n return 'id-' + nextId++;\n}\n\nfunction ensurePlanDefinitionKeys(planDefinition: PlanDefinition): PlanDefinition {\n return {\n ...planDefinition,\n action: ensurePlanDefinitionActionKeys(planDefinition.action),\n } as PlanDefinition;\n}\n\nfunction ensurePlanDefinitionActionKeys(\n actions: PlanDefinitionAction[] | undefined\n): PlanDefinitionAction[] | undefined {\n if (!actions) {\n return undefined;\n }\n return actions.map((action) => ({\n ...action,\n id: generateId(action.id),\n action: ensurePlanDefinitionActionKeys(action.action),\n }));\n}\n","import { QuestionnaireItem } from '@medplum/fhirtypes';\n\nexport enum QuestionnaireItemType {\n group = 'group',\n display = 'display',\n question = 'question',\n boolean = 'boolean',\n decimal = 'decimal',\n integer = 'integer',\n date = 'date',\n dateTime = 'dateTime',\n time = 'time',\n string = 'string',\n text = 'text',\n url = 'url',\n choice = 'choice',\n openChoice = 'open-choice',\n attachment = 'attachment',\n reference = 'reference',\n quantity = 'quantity',\n}\n\nexport function isChoiceQuestion(item: QuestionnaireItem): boolean {\n return item.type === 'choice' || item.type === 'open-choice';\n}\n","import { Button, Checkbox, Group, NativeSelect, Radio, Stack, Textarea, TextInput, Title } from '@mantine/core';\nimport {\n capitalize,\n createReference,\n deepEquals,\n getQuestionnaireAnswers,\n getReferenceString,\n getTypedPropertyValue,\n globalSchema,\n IndexedStructureDefinition,\n ProfileResource,\n PropertyType,\n stringify,\n TypedValue,\n} from '@medplum/core';\nimport {\n Questionnaire,\n QuestionnaireItem,\n QuestionnaireItemAnswerOption,\n QuestionnaireItemInitial,\n QuestionnaireResponse,\n QuestionnaireResponseItem,\n QuestionnaireResponseItemAnswer,\n Reference,\n} from '@medplum/fhirtypes';\nimport React, { ChangeEvent, useEffect, useState } from 'react';\nimport { AttachmentInput } from '../AttachmentInput/AttachmentInput';\nimport { CheckboxFormSection } from '../CheckboxFormSection/CheckboxFormSection';\nimport { DateTimeInput } from '../DateTimeInput/DateTimeInput';\nimport { Form } from '../Form/Form';\nimport { FormSection } from '../FormSection/FormSection';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { QuantityInput } from '../QuantityInput/QuantityInput';\nimport { ReferenceInput } from '../ReferenceInput/ReferenceInput';\nimport { ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\nimport { useResource } from '../useResource/useResource';\nimport { QuestionnaireItemType } from '../utils/questionnaire';\n\nexport interface QuestionnaireFormProps {\n questionnaire: Questionnaire | Reference<Questionnaire>;\n subject?: Reference;\n submitButtonText?: string;\n onSubmit: (response: QuestionnaireResponse) => void;\n}\n\nexport function QuestionnaireForm(props: QuestionnaireFormProps): JSX.Element | null {\n const medplum = useMedplum();\n const source = medplum.getProfile();\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>();\n const questionnaire = useResource(props.questionnaire);\n const [response, setResponse] = useState<QuestionnaireResponse | undefined>();\n const [answers, setAnswers] = useState<Record<string, QuestionnaireResponseItemAnswer>>({});\n\n useEffect(() => {\n medplum\n .requestSchema('Questionnaire')\n .then(() => medplum.requestSchema('QuestionnaireResponse'))\n .then(setSchema)\n .catch(console.log);\n }, [medplum]);\n\n useEffect(() => {\n setResponse(questionnaire ? buildInitialResponse(questionnaire) : undefined);\n }, [questionnaire]);\n\n function setItems(newResponseItems: QuestionnaireResponseItem[]): void {\n const newResponse: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n item: newResponseItems,\n };\n setResponse(newResponse);\n setAnswers(getQuestionnaireAnswers(newResponse));\n }\n\n if (!schema || !questionnaire) {\n return null;\n }\n\n return (\n <Form\n testid=\"questionnaire-form\"\n onSubmit={() => {\n if (props.onSubmit && response) {\n props.onSubmit({\n ...response,\n questionnaire: getReferenceString(questionnaire),\n subject: props.subject,\n source: createReference(source as ProfileResource),\n authored: new Date().toISOString(),\n });\n }\n }}\n >\n {questionnaire.title && <Title>{questionnaire.title}</Title>}\n {questionnaire.item && (\n <QuestionnaireFormItemArray items={questionnaire.item} answers={answers} onChange={setItems} />\n )}\n <Group position=\"right\" mt=\"xl\">\n <Button type=\"submit\">{props.submitButtonText || 'OK'}</Button>\n </Group>\n </Form>\n );\n}\n\ninterface QuestionnaireFormItemArrayProps {\n items: QuestionnaireItem[];\n answers: Record<string, QuestionnaireResponseItemAnswer>;\n onChange: (newResponseItems: QuestionnaireResponseItem[]) => void;\n}\n\nfunction QuestionnaireFormItemArray(props: QuestionnaireFormItemArrayProps): JSX.Element {\n const [responseItems, setResponseItems] = useState<QuestionnaireResponseItem[]>(\n buildInitialResponseItems(props.items)\n );\n\n function setResponseItem(index: number, newResponseItem: QuestionnaireResponseItem): void {\n const newResponseItems = responseItems.slice();\n newResponseItems[index] = newResponseItem;\n setResponseItems(newResponseItems);\n props.onChange(newResponseItems);\n }\n\n return (\n <Stack>\n {props.items.map((item, index) => {\n if (!isQuestionEnabled(item, props.answers)) {\n return null;\n }\n if (item.type === QuestionnaireItemType.display) {\n return <p key={item.linkId}>{item.text}</p>;\n }\n if (item.type === QuestionnaireItemType.group) {\n return (\n <QuestionnaireFormItem\n key={item.linkId}\n item={item}\n answers={props.answers}\n onChange={(newResponseItem) => setResponseItem(index, newResponseItem)}\n />\n );\n }\n if (item.type === QuestionnaireItemType.boolean) {\n const initial = item.initial && item.initial.length > 0 ? item.initial[0] : undefined;\n return (\n <CheckboxFormSection key={item.linkId} title={item.text} htmlFor={item.linkId}>\n <Checkbox\n id={item.linkId}\n name={item.linkId}\n defaultChecked={initial?.valueBoolean}\n onChange={(e) =>\n setResponseItem(index, {\n linkId: item.linkId,\n text: item.text,\n answer: [{ valueBoolean: e.currentTarget.checked }],\n })\n }\n />\n </CheckboxFormSection>\n );\n }\n return (\n <FormSection key={item.linkId} htmlFor={item.linkId} title={item.text || ''}>\n <QuestionnaireFormItem\n item={item}\n answers={props.answers}\n onChange={(newResponseItem) => setResponseItem(index, newResponseItem)}\n />\n </FormSection>\n );\n })}\n </Stack>\n );\n}\n\nexport interface QuestionnaireFormItemProps {\n item: QuestionnaireItem;\n answers: Record<string, QuestionnaireResponseItemAnswer>;\n onChange: (newResponseItem: QuestionnaireResponseItem) => void;\n}\n\nexport function QuestionnaireFormItem(props: QuestionnaireFormItemProps): JSX.Element | null {\n const item = props.item;\n\n const type = item.type as QuestionnaireItemType;\n if (!type) {\n return null;\n }\n\n const name = item.linkId;\n if (!name) {\n return null;\n }\n\n const initial = item.initial && item.initial.length > 0 ? item.initial[0] : undefined;\n\n function onChangeItem(newResponseItems: QuestionnaireResponseItem[]): void {\n props.onChange({\n linkId: item.linkId,\n text: item.text,\n item: newResponseItems,\n });\n }\n\n function onChangeAnswer(newResponseAnswer: QuestionnaireResponseItemAnswer): void {\n props.onChange({\n linkId: item.linkId,\n text: item.text,\n answer: [newResponseAnswer],\n });\n }\n\n switch (type) {\n case QuestionnaireItemType.group:\n return (\n <div>\n <h3>{item.text}</h3>\n {item.item && (\n <QuestionnaireFormItemArray items={item.item} answers={props.answers} onChange={onChangeItem} />\n )}\n </div>\n );\n case QuestionnaireItemType.boolean:\n return (\n <Checkbox\n id={name}\n name={name}\n defaultChecked={initial?.valueBoolean}\n onChange={(e) => onChangeAnswer({ valueBoolean: e.currentTarget.checked })}\n />\n );\n case QuestionnaireItemType.decimal:\n return (\n <TextInput\n type=\"number\"\n step=\"any\"\n id={name}\n name={name}\n defaultValue={initial?.valueDecimal}\n onChange={(e) => onChangeAnswer({ valueDecimal: e.currentTarget.valueAsNumber })}\n />\n );\n case QuestionnaireItemType.integer:\n return (\n <TextInput\n type=\"number\"\n step={1}\n id={name}\n name={name}\n defaultValue={initial?.valueInteger}\n onChange={(e) => onChangeAnswer({ valueInteger: e.currentTarget.valueAsNumber })}\n />\n );\n case QuestionnaireItemType.date:\n return (\n <TextInput\n type=\"date\"\n id={name}\n name={name}\n defaultValue={initial?.valueDate}\n onChange={(e) => onChangeAnswer({ valueDate: e.currentTarget.value })}\n />\n );\n case QuestionnaireItemType.dateTime:\n return (\n <DateTimeInput\n name={name}\n defaultValue={initial?.valueDateTime}\n onChange={(newValue: string) => onChangeAnswer({ valueDateTime: newValue })}\n />\n );\n case QuestionnaireItemType.time:\n return (\n <TextInput\n type=\"time\"\n id={name}\n name={name}\n defaultValue={initial?.valueTime}\n onChange={(e) => onChangeAnswer({ valueTime: e.currentTarget.value })}\n />\n );\n case QuestionnaireItemType.string:\n case QuestionnaireItemType.url:\n return (\n <TextInput\n id={name}\n name={name}\n defaultValue={initial?.valueString}\n onChange={(e) => onChangeAnswer({ valueString: e.currentTarget.value })}\n />\n );\n case QuestionnaireItemType.text:\n return (\n <Textarea\n id={name}\n name={name}\n defaultValue={initial?.valueString}\n onChange={(e) => onChangeAnswer({ valueString: e.currentTarget.value })}\n />\n );\n case QuestionnaireItemType.attachment:\n return (\n <AttachmentInput\n name={name}\n defaultValue={initial?.valueAttachment}\n onChange={(newValue) => onChangeAnswer({ valueAttachment: newValue })}\n />\n );\n case QuestionnaireItemType.reference:\n return (\n <ReferenceInput\n name={name}\n defaultValue={initial?.valueReference}\n onChange={(newValue) => onChangeAnswer({ valueReference: newValue })}\n />\n );\n case QuestionnaireItemType.quantity:\n return (\n <QuantityInput\n name={name}\n defaultValue={initial?.valueQuantity}\n onChange={(newValue) => onChangeAnswer({ valueQuantity: newValue })}\n />\n );\n case QuestionnaireItemType.choice:\n case QuestionnaireItemType.openChoice:\n if (isDropDownChoice(item)) {\n return (\n <QuestionnaireChoiceDropDownInput name={name} item={item} initial={initial} onChangeAnswer={onChangeAnswer} />\n );\n } else {\n return (\n <QuestionnaireChoiceRadioInput name={name} item={item} initial={initial} onChangeAnswer={onChangeAnswer} />\n );\n }\n }\n\n return null;\n}\n\ninterface QuestionnaireChoiceInputProps {\n name: string;\n item: QuestionnaireItem;\n initial: QuestionnaireItemInitial | undefined;\n onChangeAnswer: (newResponseAnswer: QuestionnaireResponseItemAnswer) => void;\n}\n\nfunction QuestionnaireChoiceDropDownInput(props: QuestionnaireChoiceInputProps): JSX.Element {\n const { name, item, initial } = props;\n const initialValue = getTypedPropertyValue({ type: 'QuestionnaireItemInitial', value: initial }, 'value') as\n | TypedValue\n | undefined;\n\n const data = [''];\n if (item.answerOption) {\n for (const option of item.answerOption) {\n const optionValue = getTypedPropertyValue(\n { type: 'QuestionnaireItemAnswerOption', value: option },\n 'value'\n ) as TypedValue;\n data.push(typedValueToString(optionValue) as string);\n }\n }\n\n return (\n <NativeSelect\n id={name}\n name={name}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n const index = e.currentTarget.selectedIndex;\n if (index === 0) {\n props.onChangeAnswer({});\n return;\n }\n const option = (item.answerOption as QuestionnaireItemAnswerOption[])[index - 1];\n const optionValue = getTypedPropertyValue(\n { type: 'QuestionnaireItemAnswerOption', value: option },\n 'value'\n ) as TypedValue;\n const propertyName = 'value' + capitalize(optionValue.type);\n props.onChangeAnswer({ [propertyName]: optionValue.value });\n }}\n defaultValue={typedValueToString(initialValue)}\n data={data}\n />\n );\n}\n\nfunction typedValueToString(typedValue: TypedValue | undefined): string | undefined {\n if (!typedValue) {\n return undefined;\n }\n if (typedValue.type === 'CodeableConcept') {\n return typedValue.value.coding[0].display;\n }\n if (typedValue.type === 'Coding') {\n return typedValue.value.display;\n }\n return typedValue.value.toString();\n}\n\nfunction QuestionnaireChoiceRadioInput(props: QuestionnaireChoiceInputProps): JSX.Element {\n const { name, item, initial, onChangeAnswer } = props;\n const valueElementDefinition = globalSchema.types['QuestionnaireItemAnswerOption'].properties['value[x]'];\n const initialValue = getTypedPropertyValue({ type: 'QuestionnaireItemInitial', value: initial }, 'value') as\n | TypedValue\n | undefined;\n\n const options: [string, TypedValue][] = [];\n let defaultValue = undefined;\n if (item.answerOption) {\n for (let i = 0; i < item.answerOption.length; i++) {\n const option = item.answerOption[i];\n const optionName = `${name}-option-${i}`;\n const optionValue = getTypedPropertyValue(\n { type: 'QuestionnaireItemAnswerOption', value: option },\n 'value'\n ) as TypedValue;\n if (initialValue && stringify(optionValue) === stringify(initialValue)) {\n defaultValue = optionName;\n }\n options.push([optionName, optionValue]);\n }\n }\n\n return (\n <Radio.Group\n name={name}\n orientation=\"vertical\"\n defaultValue={defaultValue}\n onChange={(newValue) => {\n const option = options.find((option) => option[0] === newValue);\n if (option) {\n const optionValue = option[1];\n const propertyName = 'value' + capitalize(optionValue.type);\n onChangeAnswer({ [propertyName]: optionValue.value });\n }\n }}\n >\n {options.map(([optionName, optionValue]) => (\n <Radio\n key={optionName}\n id={optionName}\n value={optionName}\n label={\n <ResourcePropertyDisplay\n property={valueElementDefinition}\n propertyType={optionValue.type as PropertyType}\n value={optionValue.value}\n />\n }\n />\n ))}\n </Radio.Group>\n );\n}\n\nfunction buildInitialResponse(questionnaire: Questionnaire): QuestionnaireResponse {\n const response: QuestionnaireResponse = {\n resourceType: 'QuestionnaireResponse',\n questionnaire: getReferenceString(questionnaire),\n item: buildInitialResponseItems(questionnaire.item),\n };\n\n return response;\n}\n\nfunction buildInitialResponseItems(items: QuestionnaireItem[] | undefined): QuestionnaireResponseItem[] {\n return items?.map(buildInitialResponseItem) ?? [];\n}\n\nfunction buildInitialResponseItem(item: QuestionnaireItem): QuestionnaireResponseItem {\n return {\n linkId: item.linkId,\n text: item.text,\n item: buildInitialResponseItems(item.item),\n answer: item.initial?.map(buildInitialResponseAnswer) ?? [],\n };\n}\n\nfunction buildInitialResponseAnswer(answer: QuestionnaireItemInitial): QuestionnaireResponseItemAnswer {\n // This works because QuestionnaireItemInitial and QuestionnaireResponseItemAnswer\n // have the same properties.\n return { ...answer };\n}\n\nfunction isDropDownChoice(item: QuestionnaireItem): boolean {\n return !!item.extension?.some(\n (e) =>\n e.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl' &&\n e.valueCodeableConcept?.coding?.[0]?.code === 'drop-down'\n );\n}\n\nexport function isQuestionEnabled(\n item: QuestionnaireItem,\n answers: Record<string, QuestionnaireResponseItemAnswer>\n): boolean {\n if (!item.enableWhen) {\n return true;\n }\n const enableBehavior = item.enableBehavior || 'any';\n for (const enableWhen of item.enableWhen) {\n const expectedAnswer = getTypedPropertyValue(\n {\n type: 'QuestionnaireItemEnableWhen',\n value: enableWhen,\n },\n 'answer[x]'\n );\n const actualAnswer = getTypedPropertyValue(\n {\n type: 'QuestionnaireResponseItemAnswer',\n value: answers[enableWhen.question as string],\n },\n 'value[x]'\n );\n const match = deepEquals(expectedAnswer, actualAnswer);\n if (enableBehavior === 'any' && match) {\n return true;\n }\n if (enableBehavior === 'all' && !match) {\n return false;\n }\n }\n if (enableBehavior === 'any') {\n return false;\n } else {\n return true;\n }\n}\n","import { Anchor, Button, createStyles, NativeSelect, Textarea, TextInput, Title } from '@mantine/core';\nimport { globalSchema, IndexedStructureDefinition } from '@medplum/core';\nimport { Questionnaire, QuestionnaireItem, QuestionnaireItemAnswerOption, Reference } from '@medplum/fhirtypes';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Form } from '../Form/Form';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { QuestionnaireFormItem } from '../QuestionnaireForm/QuestionnaireForm';\nimport { getValueAndType } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\nimport { ResourcePropertyInput } from '../ResourcePropertyInput/ResourcePropertyInput';\nimport { useResource } from '../useResource/useResource';\nimport { killEvent } from '../utils/dom';\nimport { isChoiceQuestion, QuestionnaireItemType } from '../utils/questionnaire';\n\nconst useStyles = createStyles((theme) => ({\n section: {\n position: 'relative',\n margin: '4px 4px 8px 0',\n padding: '6px 12px 16px 6px',\n border: `1.5px solid ${theme.colors.gray[1]}`,\n borderRadius: theme.radius.sm,\n transition: 'all 0.1s',\n },\n\n hovering: {\n border: `1.5px solid ${theme.colors.blue[5]}`,\n },\n\n editing: {\n border: `1.5px solid ${theme.colors.gray[1]}`,\n borderLeft: `4px solid ${theme.colors.blue[5]}`,\n },\n\n questionBody: {\n maxWidth: 600,\n },\n\n topActions: {\n position: 'absolute',\n right: 4,\n top: 1,\n padding: 4,\n color: theme.colors.gray[5],\n fontSize: theme.fontSizes.xs,\n },\n\n bottomActions: {\n position: 'absolute',\n right: 4,\n bottom: 0,\n fontSize: theme.fontSizes.xs,\n\n '& a': {\n marginLeft: 8,\n },\n },\n\n linkIdInput: {\n width: 100,\n marginBottom: 4,\n },\n\n typeSelect: {\n width: 100,\n },\n}));\n\nexport interface QuestionnaireBuilderProps {\n questionnaire: Questionnaire | Reference<Questionnaire>;\n onSubmit: (result: Questionnaire) => void;\n}\n\nexport function QuestionnaireBuilder(props: QuestionnaireBuilderProps): JSX.Element | null {\n const medplum = useMedplum();\n const defaultValue = useResource(props.questionnaire);\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>();\n const [value, setValue] = useState<Questionnaire>();\n const [selectedKey, setSelectedKey] = useState<string>();\n const [hoverKey, setHoverKey] = useState<string>();\n\n function handleDocumentMouseOver(): void {\n setHoverKey(undefined);\n }\n\n function handleDocumentClick(): void {\n setSelectedKey(undefined);\n }\n\n useEffect(() => {\n medplum.requestSchema('Questionnaire').then(setSchema).catch(console.log);\n }, [medplum]);\n\n useEffect(() => {\n setValue(ensureQuestionnaireKeys(defaultValue ?? { resourceType: 'Questionnaire' }));\n document.addEventListener('mouseover', handleDocumentMouseOver);\n document.addEventListener('click', handleDocumentClick);\n return () => {\n document.removeEventListener('mouseover', handleDocumentMouseOver);\n document.removeEventListener('click', handleDocumentClick);\n };\n }, [defaultValue]);\n\n if (!schema || !value) {\n return null;\n }\n\n return (\n <div>\n <Form testid=\"questionnaire-form\" onSubmit={() => props.onSubmit(value)}>\n <ItemBuilder\n item={value}\n selectedKey={selectedKey}\n setSelectedKey={setSelectedKey}\n hoverKey={hoverKey}\n setHoverKey={setHoverKey}\n onChange={setValue}\n />\n <Button type=\"submit\">Save</Button>\n </Form>\n </div>\n );\n}\n\ninterface ItemBuilderProps<T extends Questionnaire | QuestionnaireItem> {\n item: T;\n selectedKey: string | undefined;\n setSelectedKey: (key: string | undefined) => void;\n hoverKey: string | undefined;\n setHoverKey: (key: string | undefined) => void;\n onChange: (item: T) => void;\n onRemove?: () => void;\n}\n\nfunction ItemBuilder<T extends Questionnaire | QuestionnaireItem>(props: ItemBuilderProps<T>): JSX.Element {\n const { classes, cx } = useStyles();\n const resource = props.item as Questionnaire;\n const item = props.item as QuestionnaireItem;\n const isResource = 'resourceType' in props.item;\n const isContainer = isResource || item.type === QuestionnaireItemType.group;\n const linkId = item.linkId ?? '[untitled]';\n const editing = props.selectedKey === props.item.id;\n const hovering = props.hoverKey === props.item.id;\n\n const itemRef = useRef<T>();\n itemRef.current = props.item;\n\n function onClick(e: React.SyntheticEvent): void {\n killEvent(e);\n props.setSelectedKey(props.item.id);\n }\n\n function onHover(e: React.SyntheticEvent): void {\n killEvent(e);\n props.setHoverKey(props.item.id);\n }\n\n function changeItem(changedItem: QuestionnaireItem): void {\n const curr = itemRef.current as T;\n props.onChange({\n ...curr,\n item: curr.item?.map((i) => (i.id === changedItem.id ? changedItem : i)),\n } as T);\n }\n\n function addItem(addedItem: QuestionnaireItem): void {\n props.onChange({\n ...props.item,\n item: [...(props.item?.item ?? []), addedItem],\n });\n }\n\n function removeItem(removedItem: QuestionnaireItem): void {\n props.onChange({\n ...props.item,\n item: props.item?.item?.filter((i) => i !== removedItem),\n });\n }\n\n function changeProperty(property: string, value: any): void {\n props.onChange({\n ...itemRef.current,\n [property]: value,\n } as T);\n }\n\n const className = cx(classes.section, {\n [classes.editing]: editing,\n [classes.hovering]: hovering && !editing,\n });\n\n return (\n <div data-testid={item.linkId} className={className} onClick={onClick} onMouseOver={onHover}>\n <div className={classes.questionBody}>\n {editing ? (\n <>\n {isResource && (\n <TextInput\n size=\"xl\"\n defaultValue={resource.title}\n onChange={(e) => changeProperty('title', e.currentTarget.value)}\n />\n )}\n {!isResource && (\n <Textarea\n autosize\n minRows={2}\n defaultValue={item.text}\n onChange={(e) => changeProperty('text', e.currentTarget.value)}\n />\n )}\n {isChoiceQuestion(item) && (\n <AnswerBuilder\n options={item.answerOption}\n onChange={(newOptions) => changeProperty('answerOption', newOptions)}\n />\n )}\n </>\n ) : (\n <>\n {resource.title && <Title>{resource.title}</Title>}\n {item.text && <div>{item.text}</div>}\n {!isContainer && <QuestionnaireFormItem item={item} answers={{}} onChange={() => undefined} />}\n </>\n )}\n </div>\n {item.item &&\n item.item.map((i) => (\n <div key={i.id}>\n <ItemBuilder\n item={i}\n selectedKey={props.selectedKey}\n setSelectedKey={props.setSelectedKey}\n hoverKey={props.hoverKey}\n setHoverKey={props.setHoverKey}\n onChange={changeItem}\n onRemove={() => removeItem(i)}\n />\n </div>\n ))}\n {!isContainer && (\n <div className={classes.topActions}>\n {editing ? (\n <>\n <TextInput\n size=\"xs\"\n className={classes.linkIdInput}\n defaultValue={item.linkId}\n onChange={(e) => changeProperty('linkId', e.currentTarget.value)}\n />\n {!isContainer && (\n <NativeSelect\n size=\"xs\"\n className={classes.typeSelect}\n defaultValue={item.type}\n onChange={(e) => changeProperty('type', e.currentTarget.value)}\n data={[\n { value: 'display', label: 'Display' },\n { value: 'boolean', label: 'Boolean' },\n { value: 'decimal', label: 'Decimal' },\n { value: 'integer', label: 'Integer' },\n { value: 'date', label: 'Date' },\n { value: 'dateTime', label: 'Date/Time' },\n { value: 'time', label: 'Time' },\n { value: 'string', label: 'String' },\n { value: 'text', label: 'Text' },\n { value: 'url', label: 'URL' },\n { value: 'choice', label: 'Choice' },\n { value: 'open-choice', label: 'Open Choice' },\n { value: 'attachment', label: 'Attachment' },\n { value: 'reference', label: 'Reference' },\n { value: 'quantity', label: 'Quantity' },\n ]}\n />\n )}\n </>\n ) : (\n <div>{linkId}</div>\n )}\n </div>\n )}\n <div className={classes.bottomActions}>\n {isContainer && (\n <>\n <Anchor\n href=\"#\"\n onClick={(e: React.MouseEvent) => {\n e.preventDefault();\n addItem({\n id: generateId(),\n linkId: generateLinkId('q'),\n type: 'string',\n text: 'Question',\n } as QuestionnaireItem);\n }}\n >\n Add item\n </Anchor>\n <Anchor\n href=\"#\"\n onClick={(e: React.MouseEvent) => {\n e.preventDefault();\n addItem({\n id: generateId(),\n linkId: generateLinkId('g'),\n type: 'group',\n text: 'Group',\n } as QuestionnaireItem);\n }}\n >\n Add group\n </Anchor>\n </>\n )}\n {editing && !isResource && (\n <Anchor\n href=\"#\"\n onClick={(e: React.MouseEvent) => {\n e.preventDefault();\n if (props.onRemove) {\n props.onRemove();\n }\n }}\n >\n Remove\n </Anchor>\n )}\n </div>\n </div>\n );\n}\n\ninterface AnswerBuilderProps {\n options?: QuestionnaireItemAnswerOption[];\n onChange: (newOptions: QuestionnaireItemAnswerOption[]) => void;\n}\n\nfunction AnswerBuilder(props: AnswerBuilderProps): JSX.Element {\n const property = globalSchema.types['QuestionnaireItemAnswerOption'].properties['value[x]'];\n const options = props.options ?? [];\n return (\n <div>\n {options.map((option: QuestionnaireItemAnswerOption) => {\n const [propertyValue, propertyType] = getValueAndType(\n { type: 'QuestionnaireItemAnswerOption', value: option },\n 'value'\n );\n return (\n <div\n key={option.id}\n style={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '80%',\n }}\n >\n <div>\n <ResourcePropertyInput\n key={option.id}\n name=\"value[x]\"\n property={property}\n defaultPropertyType={propertyType}\n defaultValue={propertyValue}\n onChange={(newValue: any, propName?: string) => {\n const newOptions = [...options];\n const index = newOptions.findIndex((o) => o.id === option.id);\n newOptions[index] = { id: option.id, [propName as string]: newValue };\n props.onChange(newOptions);\n }}\n />\n </div>\n <div>\n <Anchor\n href=\"#\"\n onClick={(e: React.SyntheticEvent) => {\n killEvent(e);\n props.onChange(options.filter((o) => o.id !== option.id));\n }}\n >\n Remove\n </Anchor>\n </div>\n </div>\n );\n })}\n <Anchor\n href=\"#\"\n onClick={(e: React.SyntheticEvent) => {\n killEvent(e);\n props.onChange([\n ...options,\n {\n id: generateId(),\n },\n ]);\n }}\n >\n Add choice\n </Anchor>\n </div>\n );\n}\n\nlet nextLinkId = 1;\nlet nextId = 1;\n\n/**\n * Generates a link ID for an item.\n * Link IDs are required properties on QuestionnaireItem objects.\n * @return A unique link ID.\n */\nfunction generateLinkId(prefix: string): string {\n return prefix + nextLinkId++;\n}\n\n/**\n * Generates a unique ID.\n * React needs unique IDs for components for rendering performance.\n * All of the important components in the questionnaire builder have id properties for this:\n * Questionnaire, QuestionnaireItem, and QuestionnaireItemAnswerOption.\n * @return A unique key.\n */\nfunction generateId(): string {\n return 'id-' + nextId++;\n}\n\nfunction ensureQuestionnaireKeys(questionnaire: Questionnaire): Questionnaire {\n return {\n ...questionnaire,\n id: questionnaire.id || generateId(),\n item: ensureQuestionnaireItemKeys(questionnaire.item),\n } as Questionnaire;\n}\n\nfunction ensureQuestionnaireItemKeys(items: QuestionnaireItem[] | undefined): QuestionnaireItem[] | undefined {\n if (!items) {\n return undefined;\n }\n items.forEach((item) => {\n if (item.id?.match(/^id-\\d+$/)) {\n nextId = Math.max(nextId, parseInt(item.id.substring(3)) + 1);\n }\n if (item.linkId?.match(/^q\\d+$/)) {\n nextLinkId = Math.max(nextLinkId, parseInt(item.linkId.substring(1)) + 1);\n }\n });\n return items.map((item) => ({\n ...item,\n id: item.id || generateId(),\n item: ensureQuestionnaireItemKeys(item.item),\n answerOption: ensureQuestionnaireOptionKeys(item.answerOption),\n }));\n}\n\nfunction ensureQuestionnaireOptionKeys(\n options: QuestionnaireItemAnswerOption[] | undefined\n): QuestionnaireItemAnswerOption[] | undefined {\n if (!options) {\n return undefined;\n }\n return options.map((option) => ({\n ...option,\n id: option.id || generateId(),\n }));\n}\n","import { ActionIcon, Button, createStyles, Divider, Group, NativeSelect, Stack, Text, TextInput } from '@mantine/core';\nimport { formatRange, getCodeBySystem } from '@medplum/core';\nimport { CodeableConcept, ObservationDefinition, ObservationDefinitionQualifiedInterval } from '@medplum/fhirtypes';\nimport { IconCircleMinus, IconCirclePlus } from '@tabler/icons';\nimport React, { useEffect, useState } from 'react';\nimport { Container } from '../Container/Container';\nimport { Form } from '../Form/Form';\nimport { RangeInput } from '../RangeInput/RangeInput';\nimport { killEvent } from '../utils/dom';\n\nconst useStyles = createStyles((theme) => ({\n section: {\n position: 'relative',\n margin: '4px 4px 8px 0',\n padding: '6px 12px 16px 6px',\n border: `1.5px solid ${theme.colors.gray[3]}`,\n borderRadius: theme.radius.sm,\n transition: 'all 0.1s',\n },\n}));\n\n// Properties of qualified intervals used for grouping\nconst intervalFilters = ['gender', 'age', 'gestationalAge', 'context', 'appliesTo'] as const;\nexport interface ReferenceRangeEditorProps {\n definition: ObservationDefinition;\n onSubmit: (result: ObservationDefinition) => void;\n}\n\n// Helper type that groups of qualified intervals by equal filter criteria\ntype IntervalGroup = {\n id: string;\n filters: Record<typeof intervalFilters[number], any>;\n intervals: ObservationDefinitionQualifiedInterval[];\n};\n\nconst defaultProps: ReferenceRangeEditorProps = {\n definition: { resourceType: 'ObservationDefinition' },\n onSubmit: () => {\n return;\n },\n};\n\nexport function ReferenceRangeEditor(props: ReferenceRangeEditorProps): JSX.Element {\n props = Object.assign(defaultProps, props);\n const defaultDefinition = props.definition;\n\n const [intervalGroups, setIntervalGroups] = useState<IntervalGroup[]>([]);\n const [groupId, setGroupId] = useState(1);\n const [intervalId, setIntervalId] = useState(1);\n\n useEffect(() => {\n const definition = ensureQualifiedIntervalKeys(defaultDefinition, setIntervalId);\n setIntervalGroups(groupQualifiedIntervals(definition.qualifiedInterval || [], setGroupId));\n }, [defaultDefinition]);\n\n return (\n <Form testid=\"reference-range-editor\" onSubmit={submitDefinition}>\n <Stack>\n {intervalGroups.map((intervalGroup) => (\n <ReferenceRangeGroupEditor\n unit={getUnitString(defaultDefinition.quantitativeDetails?.unit)}\n onChange={changeInterval}\n onAdd={addInterval}\n onRemove={removeInterval}\n onRemoveGroup={removeGroup}\n key={`group-${intervalGroup.id}`}\n intervalGroup={intervalGroup}\n />\n ))}\n </Stack>\n <ActionIcon\n title=\"Add Group\"\n size=\"sm\"\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n addGroup({ id: `group-id-${groupId}`, filters: {} as IntervalGroup['filters'], intervals: [] });\n setGroupId((id) => id + 1);\n }}\n >\n <IconCirclePlus />\n </ActionIcon>\n\n <Group position=\"right\">\n <Button type=\"submit\">Save</Button>\n </Group>\n </Form>\n );\n\n /**\n * Submit qualified intervals\n */\n\n function submitDefinition(): void {\n const qualifiedInterval = intervalGroups\n .flatMap((group) => group.intervals)\n .filter((interval) => !isEmptyInterval(interval));\n props.onSubmit({ ...defaultDefinition, qualifiedInterval });\n }\n\n /**\n * Add Remove Interval Groups\n */\n\n function addGroup(addedGroup: IntervalGroup): void {\n setIntervalGroups((currentGroups) => [...currentGroups, addedGroup]);\n }\n\n function removeGroup(removedGroup: IntervalGroup): void {\n setIntervalGroups((currentGroups) => currentGroups.filter((group) => group.id !== removedGroup.id));\n }\n\n /**\n * Add/Remove/Update specific Qualified Intervals\n */\n function changeInterval(groupId: string, changedInterval: ObservationDefinitionQualifiedInterval): void {\n setIntervalGroups((groups) => {\n groups = [...groups];\n const currentGroup = groups.find((g) => g.id === groupId);\n\n const index = currentGroup?.intervals?.findIndex((interval) => interval.id === changedInterval.id);\n if (index !== undefined && currentGroup?.intervals?.[index]) {\n currentGroup.intervals[index] = changedInterval;\n }\n return groups;\n });\n }\n\n function addInterval(groupId: string, addedInterval: ObservationDefinitionQualifiedInterval): void {\n if (addedInterval.id === undefined) {\n addedInterval.id = `id-${intervalId}`;\n setIntervalId((id) => id + 1);\n }\n setIntervalGroups((groups) => {\n groups = [...groups];\n const currentGroupIndex = groups.findIndex((g) => g.id === groupId);\n\n if (currentGroupIndex != -1) {\n const currentGroup = { ...groups[currentGroupIndex] };\n addedInterval = { ...addedInterval, ...currentGroup.filters };\n currentGroup.intervals = [...currentGroup.intervals, addedInterval];\n groups[currentGroupIndex] = currentGroup;\n }\n\n return groups;\n });\n }\n\n function removeInterval(groupId: string, removedInterval: ObservationDefinitionQualifiedInterval): void {\n setIntervalGroups((groups) => {\n groups = [...groups];\n const currentGroup = groups.find((g) => g.id === groupId);\n if (currentGroup) {\n currentGroup.intervals = currentGroup.intervals.filter((interval) => interval.id !== removedInterval.id);\n }\n return groups;\n });\n }\n}\n\n/**\n * Helper component that renders an \"interval group\", which is a set of ObservationDefinitionQualifiedIntervals\n * that have the same filter values\n */\nexport interface ReferenceRangeGroupEditorProps {\n intervalGroup: IntervalGroup;\n unit: string | undefined;\n onChange: (groupId: string, changed: ObservationDefinitionQualifiedInterval) => void;\n onAdd: (groupId: string, added: ObservationDefinitionQualifiedInterval) => void;\n onRemove: (groupId: string, removed: ObservationDefinitionQualifiedInterval) => void;\n onRemoveGroup: (removedGroup: IntervalGroup) => void;\n}\n\nexport function ReferenceRangeGroupEditor(props: ReferenceRangeGroupEditorProps): JSX.Element {\n const { intervalGroup, unit } = props;\n const { classes } = useStyles();\n return (\n <Container data-testid={intervalGroup.id} className={classes.section}>\n <Stack spacing={'lg'}>\n <Group position=\"right\">\n <ActionIcon\n title=\"Remove Group\"\n data-testid={`remove-group-button-${intervalGroup.id}`}\n key={`remove-group-button-${intervalGroup.id}`}\n size=\"sm\"\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n props.onRemoveGroup(intervalGroup);\n }}\n >\n <IconCircleMinus />\n </ActionIcon>\n </Group>\n <ReferenceRangeGroupFilters intervalGroup={intervalGroup} onChange={props.onChange} />\n <Divider />\n {intervalGroup.intervals.map((interval) => (\n <Stack key={`interval-${interval.id}`} spacing={'xs'}>\n <Group>\n <TextInput\n key={`condition-${interval.id}`}\n data-testid={`condition-${interval.id}`}\n defaultValue={interval.condition}\n label={'Condition: '}\n size={'sm'}\n onChange={(e) => {\n killEvent(e);\n props.onChange(intervalGroup.id, { ...interval, condition: e.currentTarget.value.trim() });\n }}\n />\n <ActionIcon\n title=\"Remove Interval\"\n size=\"sm\"\n key={`remove-interval-${interval.id}`}\n data-testid={`remove-interval-${interval.id}`}\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n props.onRemove(intervalGroup.id, interval);\n }}\n >\n <IconCircleMinus />\n </ActionIcon>\n </Group>\n\n <RangeInput\n onChange={(range) => {\n props.onChange(intervalGroup.id, { ...interval, range });\n }}\n key={`range-${interval.id}`}\n name={`range-${interval.id}`}\n defaultValue={interval.range}\n />\n </Stack>\n ))}\n <ActionIcon\n title=\"Add Interval\"\n size=\"sm\"\n onClick={(e: React.MouseEvent) => {\n killEvent(e);\n props.onAdd(intervalGroup.id, {\n range: {\n low: { unit },\n high: { unit },\n },\n });\n }}\n >\n <IconCirclePlus />\n </ActionIcon>\n </Stack>\n </Container>\n );\n}\n\ninterface ReferenceRangeGroupFiltersProps {\n intervalGroup: IntervalGroup;\n onChange: ReferenceRangeGroupEditorProps['onChange'];\n}\n\n/**\n * Render the \"filters\" section of the IntervalGroup. Also populates some initial\n */\nfunction ReferenceRangeGroupFilters(props: ReferenceRangeGroupFiltersProps): JSX.Element {\n const { intervalGroup, onChange } = props;\n\n // Pre-populate the units of the age filter\n if (!intervalGroup.filters.age) {\n intervalGroup.filters.age = {};\n }\n for (const key of ['low', 'high']) {\n if (!intervalGroup.filters.age[key]?.unit) {\n intervalGroup.filters.age[key] = {\n ...intervalGroup.filters.age[key],\n unit: 'years',\n system: 'http://unitsofmeasure.org',\n };\n }\n }\n\n return (\n <Stack style={{ maxWidth: '50%' }}>\n <Group>\n <NativeSelect\n data={['', 'male', 'female']}\n label=\"Gender:\"\n defaultValue={intervalGroup.filters.gender || ''}\n onChange={(e) => {\n for (const interval of intervalGroup.intervals) {\n let newGender: string | undefined = e.currentTarget?.value;\n if (newGender === '') {\n newGender = undefined;\n }\n onChange(intervalGroup.id, {\n ...interval,\n gender: newGender as ObservationDefinitionQualifiedInterval['gender'],\n });\n }\n }}\n />\n </Group>\n <Group spacing={'xs'}>\n <Text component=\"label\" htmlFor={`div-age-${intervalGroup.id}`}>\n Age:\n </Text>\n <div id={`div-age-${intervalGroup.id}`}>\n <RangeInput\n key={`age-${intervalGroup.id}`}\n name={`age-${intervalGroup.id}`}\n defaultValue={intervalGroup.filters['age']}\n onChange={(ageRange) => {\n for (const interval of intervalGroup.intervals) {\n onChange(intervalGroup.id, { ...interval, age: ageRange });\n }\n }}\n />\n </div>\n </Group>\n <NativeSelect\n data={['', 'pre-puberty', 'follicular', 'midcycle', 'luteal', 'postmenopausal']}\n label=\"Endocrine:\"\n defaultValue={intervalGroup.filters.context?.text || ''}\n onChange={(e) => {\n for (const interval of intervalGroup.intervals) {\n let newEndocrine: string | undefined = e.currentTarget?.value;\n if (newEndocrine === '') {\n newEndocrine = undefined;\n onChange(intervalGroup.id, { ...interval, context: undefined });\n } else {\n onChange(intervalGroup.id, {\n ...interval,\n context: {\n text: newEndocrine,\n coding: [\n { code: newEndocrine, system: 'http://terminology.hl7.org/CodeSystem/referencerange-meaning' },\n ],\n },\n });\n }\n }\n }}\n />\n </Stack>\n );\n}\n\n/**\n * Helper function that assigns ids to each qualifiedInterval of an ObservationDefinition\n * @param definition An ObservationDefinition\n * @param setIntervalId React setState function for the intervalId\n * @returns\n */\nfunction ensureQualifiedIntervalKeys(\n definition: ObservationDefinition,\n setIntervalId: (id: number) => void\n): ObservationDefinition {\n const intervals = definition.qualifiedInterval || [];\n // Set the nextId to the max of any existing numeric id\n let nextId =\n Math.max(\n ...intervals.map((interval) => {\n const existingNum = parseInt(interval.id?.substring(3) || '');\n return !isNaN(existingNum) ? existingNum : Number.NEGATIVE_INFINITY;\n })\n ) + 1;\n\n if (!Number.isFinite(nextId)) {\n nextId = 1;\n }\n\n // If an interval doesn't have an id, set it to the nextId\n definition = {\n ...definition,\n qualifiedInterval: intervals.map((interval) => ({\n ...interval,\n id: interval.id || `id-${nextId++}`,\n })),\n };\n setIntervalId(nextId);\n return definition;\n}\n\n/**\n * Group all ObservationDefinitionQualifiedIntervals based on the values of their \"filter\" properties,\n * so that similar ranges can be grouped together\n */\nfunction groupQualifiedIntervals(\n intervals: ObservationDefinitionQualifiedInterval[],\n setGroupId: (id: number) => void\n): IntervalGroup[] {\n let groupId = 1;\n const groups: Record<string, IntervalGroup> = {};\n for (const interval of intervals) {\n const groupKey = generateGroupKey(interval);\n if (!(groupKey in groups)) {\n groups[groupKey] = {\n id: `group-id-${groupId++}`,\n filters: Object.fromEntries(intervalFilters.map((f) => [f, interval[f]])) as Record<\n typeof intervalFilters[number],\n any\n >,\n intervals: [],\n };\n }\n groups[groupKey].intervals.push(interval);\n }\n setGroupId(groupId);\n return Object.values(groups);\n}\n\n/**\n * Generates a unique string for each set of filter values, so that similarly filtered intervals can be grouped together\n * @return A \"group key\" that corresponds to the value of the interval filter properties.\n */\n\nfunction generateGroupKey(interval: ObservationDefinitionQualifiedInterval): string {\n const results = [\n `gender=${interval.gender}`,\n `age=${formatRange(interval.age)}`,\n `gestationalAge=${formatRange(interval.gestationalAge)}`,\n `context=${interval.context?.text}`,\n `appliesTo=${interval.appliesTo?.map((c) => c.text).join('+')}`,\n ];\n\n return results.join(':');\n}\n\nfunction getUnitString(unit: CodeableConcept | undefined): string | undefined {\n return unit && (getCodeBySystem(unit, 'http://unitsofmeasure.org') || unit.text);\n}\n\nfunction isEmptyInterval(interval: ObservationDefinitionQualifiedInterval): boolean {\n return interval.range?.low?.value === undefined && interval.range?.high?.value === undefined;\n}\n","import { Badge, DefaultMantineColor } from '@mantine/core';\nimport React from 'react';\n\n/*\n * Request status: https://hl7.org/fhir/valueset-request-status.html\n * draft, active, on-hold, revoked, completed, entered-in-error, unknown\n *\n * Publication status: https://hl7.org/fhir/valueset-publication-status.html\n * draft, active, retired, unknown\n *\n * Observation status: https://www.hl7.org/fhir/valueset-observation-status.html\n * registered, preliminary, final, amended, cancelled, entered-in-error, unknown\n *\n * DiagnosticReport status: https://hl7.org/fhir/valueset-diagnostic-report-status.html\n * registered, preliminary, final, amended, corrected, appended, cancelled, entered-in-error, unknown\n *\n * Task status: https://hl7.org/fhir/valueset-task-status.html\n * draft, requested, received, accepted, rejected, ready, cancelled, in-progress, on-hold, failed, completed, entered-in-error\n *\n * Appointment status: https://www.hl7.org/fhir/valueset-appointmentstatus.html\n * proposed, pending, booked, arrived, fulfilled, cancelled, noshow, entered-in-error, chcked-in, waitlist\n */\n\nconst statusToColor: Record<string, DefaultMantineColor> = {\n draft: 'blue',\n active: 'blue',\n 'on-hold': 'yellow',\n revoked: 'red',\n completed: 'green',\n 'entered-in-error': 'red',\n unknown: 'gray',\n retired: 'gray',\n registered: 'blue',\n preliminary: 'blue',\n final: 'green',\n amended: 'yellow',\n cancelled: 'red',\n requested: 'blue',\n received: 'blue',\n accepted: 'blue',\n rejected: 'red',\n ready: 'blue',\n 'in-progress': 'blue',\n failed: 'red',\n proposed: 'blue',\n pending: 'blue',\n booked: 'blue',\n arrived: 'blue',\n fulfilled: 'green',\n noshow: 'red',\n 'checked-in': 'blue',\n waitlist: 'gray',\n routine: 'gray',\n urgent: 'red',\n asap: 'red',\n stat: 'red',\n};\n\nexport interface StatusBadgeProps {\n readonly status: string;\n}\n\nexport function StatusBadge(props: StatusBadgeProps): JSX.Element {\n return <Badge color={statusToColor[props.status]}>{props.status}</Badge>;\n}\n","import { Button, Grid, Text } from '@mantine/core';\nimport { formatDateTime, getReferenceString } from '@medplum/core';\nimport { Bundle, BundleEntry, Reference, RequestGroup, Resource, Task } from '@medplum/fhirtypes';\nimport { IconCheckbox, IconSquare } from '@tabler/icons';\nimport React, { useEffect, useState } from 'react';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { ResourceName } from '../ResourceName/ResourceName';\nimport { StatusBadge } from '../StatusBadge/StatusBadge';\nimport { useResource } from '../useResource/useResource';\n\nexport interface RequestGroupDisplayProps {\n value?: RequestGroup | Reference<RequestGroup>;\n onStart: (task: Task, input: Reference) => void;\n onEdit: (task: Task, input: Reference, output: Reference) => void;\n}\n\nexport function RequestGroupDisplay(props: RequestGroupDisplayProps): JSX.Element | null {\n const medplum = useMedplum();\n const requestGroup = useResource(props.value);\n const [startedLoading, setStartedLoading] = useState(false);\n const [responseBundle, setResponseBundle] = useState<Bundle>();\n\n useEffect(() => {\n if (requestGroup && !startedLoading) {\n medplum.executeBatch(buildBatchRequest(requestGroup)).then(setResponseBundle).catch(console.log);\n setStartedLoading(true);\n }\n }, [medplum, requestGroup, startedLoading]);\n\n if (!requestGroup || !responseBundle) {\n return null;\n }\n\n return (\n <Grid>\n {requestGroup.action?.map((action, index) => {\n const task = action.resource && findBundleEntry(action.resource as Reference<Task>);\n const taskInput = task?.input?.[0]?.valueReference;\n const taskOutput = task?.output?.[0]?.valueReference;\n return (\n <React.Fragment key={`action-${index}`}>\n <Grid.Col span={1} p=\"md\">\n {task?.status === 'completed' ? <IconCheckbox /> : <IconSquare color=\"gray\" />}\n </Grid.Col>\n <Grid.Col span={9} p=\"xs\">\n <Text weight={500}>{action.title}</Text>\n {action.description && <div>{action.description}</div>}\n <div>\n Last edited by&nbsp;\n <ResourceName value={task?.meta?.author as Reference} />\n &nbsp;on&nbsp;\n {formatDateTime(task?.meta?.lastUpdated)}\n </div>\n <div>\n Status: <StatusBadge status={task?.status || 'unknown'} />\n </div>\n </Grid.Col>\n <Grid.Col span={2} p=\"md\">\n {taskInput && !taskOutput && <Button onClick={() => props.onStart(task, taskInput)}>Start</Button>}\n {taskInput && taskOutput && (\n <Button onClick={() => props.onEdit(task, taskInput, taskOutput)}>Edit</Button>\n )}\n </Grid.Col>\n </React.Fragment>\n );\n })}\n </Grid>\n );\n\n function buildBatchRequest(request: RequestGroup): Bundle {\n const batchEntries = [] as BundleEntry[];\n if (request.action) {\n for (const action of request.action) {\n if (action.resource?.reference) {\n batchEntries.push({ request: { method: 'GET', url: action.resource.reference } });\n }\n }\n }\n\n return {\n resourceType: 'Bundle',\n type: 'batch',\n entry: batchEntries,\n };\n }\n\n function findBundleEntry<T extends Resource>(reference: Reference<T>): T | undefined {\n for (const entry of responseBundle?.entry as BundleEntry[]) {\n if (entry.resource && reference.reference === getReferenceString(entry.resource)) {\n return entry.resource as T;\n }\n }\n return undefined;\n }\n}\n","/*\n * Myers Diff algorithm\n * Based on: https://github.com/KengoTODA/java-diff-utils/blob/master/src/main/java/difflib/myers/MyersDiff.java\n * Apache Software License, Version 1.1\n */\n\nexport function diff(original: string[], revised: string[]): Delta[] {\n const path = buildPath(original, revised) as PathNode;\n return buildRevisions(path, original, revised);\n}\n\nexport interface PathNode {\n readonly i: number;\n readonly j: number;\n readonly prev: PathNode | undefined;\n readonly snake: boolean;\n}\n\nexport interface Delta {\n readonly original: Chunk;\n readonly revised: Chunk;\n readonly type: 'change' | 'delete' | 'insert';\n}\n\nexport interface Chunk {\n readonly position: number;\n readonly lines: string[];\n}\n\nfunction buildPath(orig: string[], rev: string[]): PathNode | undefined {\n const N = orig.length;\n const M = rev.length;\n const MAX = N + M + 1;\n const size = 1 + 2 * MAX;\n const middle = (size / 2) | 0;\n const diagonal: (PathNode | undefined)[] = new Array(size);\n\n diagonal[middle + 1] = {\n i: 0,\n j: -1,\n prev: undefined,\n snake: true,\n };\n\n for (let d = 0; d < MAX; d++) {\n for (let k = -d; k <= d; k += 2) {\n const kmiddle = middle + k;\n const kplus = kmiddle + 1;\n const kminus = kmiddle - 1;\n const kplusNode = diagonal[kplus] as PathNode;\n const kminusNode = diagonal[kminus] as PathNode;\n let prev: PathNode | undefined = undefined;\n let i = 0;\n\n if (k === -d || (k !== d && kminusNode.i < kplusNode.i)) {\n i = kplusNode.i;\n prev = kplusNode;\n } else {\n i = kminusNode.i + 1;\n prev = kminusNode;\n }\n\n diagonal[kminus] = undefined; // no longer used\n\n let j = i - k;\n let node = {\n i,\n j,\n prev: previousSnake(prev),\n snake: false,\n };\n\n // orig and rev are zero-based\n // but the algorithm is one-based\n // that's why there's no +1 when indexing the sequences\n while (i < N && j < M && orig[i] === rev[j]) {\n i++;\n j++;\n }\n\n if (i > node.i) {\n node = {\n i,\n j,\n prev: node,\n snake: true,\n };\n }\n\n diagonal[kmiddle] = node;\n\n if (i >= N && j >= M) {\n return diagonal[kmiddle] as PathNode;\n }\n }\n diagonal[middle + d - 1] = undefined;\n }\n\n // According to Myers, this cannot happen\n return undefined;\n}\n\nfunction buildRevisions(startNode: PathNode, orig: string[], rev: string[]): Delta[] {\n const deltas: Delta[] = [];\n let path: PathNode | undefined = startNode;\n\n if (path.snake) {\n path = path.prev;\n }\n\n while (path && path.prev && path.prev.j >= 0) {\n const i = path.i;\n const j = path.j;\n\n path = path.prev;\n const ianchor = path.i;\n const janchor = path.j;\n\n const original = {\n position: ianchor,\n lines: orig.slice(ianchor, i),\n };\n\n const revised = {\n position: janchor,\n lines: rev.slice(janchor, j),\n };\n\n let type: 'insert' | 'delete' | 'change';\n\n if (original.lines.length === 0 && revised.lines.length > 0) {\n type = 'insert';\n } else if (original.lines.length > 0 && revised.lines.length === 0) {\n type = 'delete';\n } else {\n type = 'change';\n }\n\n deltas.push({ original, revised, type });\n\n if (path.snake) {\n path = path.prev;\n }\n }\n\n return deltas;\n}\n\nfunction previousSnake(node: PathNode): PathNode {\n if (node && !node.snake && node.prev) {\n return node.prev;\n }\n return node;\n}\n","import { stringify } from '@medplum/core';\nimport { Bundle, BundleEntry, Meta } from '@medplum/fhirtypes';\nimport { diff } from './diff';\n\nexport interface BlameRow {\n id: string;\n meta: Meta;\n value: string;\n span: number;\n}\n\nexport function blame(history: Bundle): BlameRow[] {\n // Convert to array of array of lines\n const versions = (history.entry as BundleEntry[])\n .filter((entry) => !!entry.resource)\n .map((entry) => ({\n meta: entry.resource?.meta as Meta,\n lines: stringify(entry.resource, true).match(/[^\\r\\n]+/g) as string[],\n }))\n .sort((a, b) => (a.meta.lastUpdated as string).localeCompare(b.meta.lastUpdated as string));\n\n // Start with array of lines from the first version\n const table: BlameRow[] = versions[0].lines.map((line) => ({\n id: versions[0].meta.versionId as string,\n meta: versions[0].meta,\n value: line,\n span: 1,\n }));\n\n compareVersions(table, versions);\n combineSpans(table);\n return table;\n}\n\n/**\n * For each version, update the blame table with revisions.\n * @param table The output blame table.\n * @param versions The array of versions.\n */\nfunction compareVersions(table: BlameRow[], versions: { meta: Meta; lines: string[] }[]): void {\n for (let i = 1; i < versions.length; i++) {\n const revisions = diff(versions[i - 1].lines, versions[i].lines);\n\n for (const revision of revisions) {\n const position = revision.original.position;\n const oldLines = revision.original.lines;\n const newLines = revision.revised.lines;\n\n if (revision.type === 'delete' || revision.type === 'change') {\n // Remove the old rows\n table.splice(position, oldLines.length);\n }\n\n if (revision.type === 'insert' || revision.type === 'change') {\n // Add the new lines\n for (let k = 0; k < revision.revised.lines.length; k++) {\n table.splice(position + k, 0, {\n id: versions[i].meta.versionId as string,\n meta: versions[i].meta,\n value: newLines[k],\n span: 1,\n });\n }\n }\n }\n }\n}\n\n/**\n * Combine adjacent rows into spans.\n * @param table The output blame table.\n */\nfunction combineSpans(table: BlameRow[]): void {\n let start = 0;\n while (start < table.length) {\n let curr = start;\n while (curr < table.length && table[curr].id === table[start].id) {\n table[curr].span = -1;\n curr++;\n }\n table[start].span = curr - start;\n start = curr;\n }\n}\n","import { createStyles } from '@mantine/core';\nimport { Bundle, Resource, ResourceType } from '@medplum/fhirtypes';\nimport React, { useEffect, useState } from 'react';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { ResourceBadge } from '../ResourceBadge/ResourceBadge';\nimport { blame } from '../utils/blame';\n\nconst useStyles = createStyles((theme) => ({\n container: {\n overflowX: 'auto',\n },\n\n root: {\n border: `0.1px solid ${theme.colors.gray[3]}`,\n borderCollapse: 'collapse',\n borderRadius: theme.radius.sm,\n borderSpacing: 0,\n fontSize: theme.fontSizes.xs,\n width: '100%',\n\n '& td': {\n padding: '2px 4px 0 4px',\n verticalAlign: 'top',\n whiteSpace: 'nowrap',\n },\n },\n\n startRow: {\n borderTop: `0.1px solid ${theme.colors.gray[3]}`,\n },\n\n normalRow: {\n borderTop: 0,\n },\n\n author: {\n lineHeight: '10px',\n },\n\n dateTime: {\n borderRight: `0.1px solid ${theme.colors.gray[3]}`,\n lineHeight: '20px',\n },\n\n lineNumber: {\n backgroundColor: theme.colors.gray[1],\n border: 0,\n color: theme.colors.gray[5],\n fontFamily: theme.fontFamilyMonospace,\n padding: `${theme.spacing.xs}px ${theme.spacing.sm}px`,\n textAlign: 'right',\n },\n\n line: {\n fontFamily: theme.fontFamilyMonospace,\n fontSize: theme.fontSizes.sm,\n padding: `${theme.spacing.xs}px ${theme.spacing.sm}px`,\n },\n\n pre: {\n margin: 0,\n },\n}));\n\nexport interface ResourceBlameProps {\n history?: Bundle;\n resourceType?: ResourceType;\n id?: string;\n}\n\nexport function ResourceBlame(props: ResourceBlameProps): JSX.Element {\n const { classes } = useStyles();\n const medplum = useMedplum();\n const [value, setValue] = useState<Bundle | undefined>(props.history);\n\n useEffect(() => {\n if (!props.history && props.resourceType && props.id) {\n medplum.readHistory(props.resourceType, props.id).then(setValue).catch(console.log);\n }\n }, [medplum, props.history, props.resourceType, props.id]);\n\n if (!value) {\n return <div>Loading...</div>;\n }\n\n const resource = value.entry?.[0]?.resource as Resource;\n const table = blame(value);\n return (\n <div className={classes.container}>\n <table className={classes.root}>\n <tbody>\n {table.map((row, index) => (\n <tr key={'row-' + index} className={row.span > 0 ? classes.startRow : classes.normalRow}>\n {row.span > 0 && (\n <>\n <td className={classes.author} rowSpan={row.span}>\n <ResourceBadge value={row.meta.author} link={true} />\n </td>\n <td className={classes.dateTime} rowSpan={row.span}>\n <MedplumLink to={getVersionUrl(resource, row.meta.versionId as string)}>\n {getTimeString(row.meta.lastUpdated as string)}\n </MedplumLink>\n </td>\n </>\n )}\n <td className={classes.lineNumber}>{index + 1}</td>\n <td className={classes.line}>\n <pre className={classes.pre}>{row.value}</pre>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction getVersionUrl(resource: Resource, versionId: string): string {\n return `/${resource.resourceType}/${resource.id}/_history/${versionId}`;\n}\n\nexport function getTimeString(lastUpdated: string): string {\n const seconds = Math.floor((Date.now() - Date.parse(lastUpdated)) / 1000);\n\n const years = Math.floor(seconds / 31536000);\n if (years > 0) {\n return pluralizeTime(years, 'year');\n }\n\n const months = Math.floor(seconds / 2592000);\n if (months > 0) {\n return pluralizeTime(months, 'month');\n }\n\n const days = Math.floor(seconds / 86400);\n if (days > 0) {\n return pluralizeTime(days, 'day');\n }\n\n const hours = Math.floor(seconds / 3600);\n if (hours > 0) {\n return pluralizeTime(hours, 'hour');\n }\n\n const minutes = Math.floor(seconds / 60);\n if (minutes > 0) {\n return pluralizeTime(minutes, 'minute');\n }\n\n return pluralizeTime(seconds, 'second');\n}\n\nfunction pluralizeTime(count: number, noun: string): string {\n return `${count} ${count === 1 ? noun : noun + 's'} ago`;\n}\n","import { createStyles } from '@mantine/core';\nimport { stringify } from '@medplum/core';\nimport { Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { Delta, diff } from '../utils/diff';\n\nconst useStyles = createStyles((theme) => ({\n removed: {\n color: theme.colors.red[7],\n textDecoration: 'line-through',\n },\n\n added: {\n color: theme.colors.green[7],\n },\n}));\n\nexport interface ResourceDiffProps {\n original: Resource;\n revised: Resource;\n ignoreMeta?: boolean;\n}\n\nexport function ResourceDiff(props: ResourceDiffProps): JSX.Element {\n let originalResource = props.original;\n let revisedResource = props.revised;\n\n if (props.ignoreMeta) {\n originalResource = { ...originalResource, meta: undefined };\n revisedResource = { ...revisedResource, meta: undefined };\n }\n\n const original = stringify(originalResource, true).match(/[^\\r\\n]+/g) as string[];\n const revised = stringify(revisedResource, true).match(/[^\\r\\n]+/g) as string[];\n const deltas = diff(original, revised);\n return (\n <pre style={{ color: 'gray' }}>\n {deltas.map((delta, index) => (\n <ChangeDiff key={'delta' + index} delta={delta} />\n ))}\n </pre>\n );\n}\n\nfunction ChangeDiff(props: { delta: Delta }): JSX.Element {\n const { classes } = useStyles();\n return (\n <>\n ...\n <br />\n {props.delta.original.lines.length > 0 && (\n <div className={classes.removed}>{props.delta.original.lines.join('\\n')}</div>\n )}\n {props.delta.revised.lines.length > 0 && (\n <div className={classes.added}>{props.delta.revised.lines.join('\\n')}</div>\n )}\n ...\n <br />\n </>\n );\n}\n","import { Table } from '@mantine/core';\nimport { formatDateTime, normalizeErrorString } from '@medplum/core';\nimport { Bundle, BundleEntry, Resource, ResourceType } from '@medplum/fhirtypes';\nimport React, { useEffect, useState } from 'react';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { ResourceBadge } from '../ResourceBadge/ResourceBadge';\n\nexport interface ResourceHistoryTableProps {\n history?: Bundle;\n resourceType?: string;\n id?: string;\n}\n\nexport function ResourceHistoryTable(props: ResourceHistoryTableProps): JSX.Element {\n const medplum = useMedplum();\n const [value, setValue] = useState<Bundle | undefined>(props.history);\n\n useEffect(() => {\n if (!props.history && props.resourceType && props.id) {\n medplum\n .readHistory(props.resourceType as ResourceType, props.id)\n .then(setValue)\n .catch(console.log);\n }\n }, [medplum, props.history, props.resourceType, props.id]);\n\n if (!value) {\n return <div>Loading...</div>;\n }\n\n return (\n <Table withBorder withColumnBorders>\n <thead>\n <tr>\n <th>Author</th>\n <th>Date</th>\n <th>Version</th>\n </tr>\n </thead>\n <tbody>\n {value.entry?.map((entry, index) => (\n <HistoryRow key={'entry-' + index} entry={entry} />\n ))}\n </tbody>\n </Table>\n );\n}\n\ninterface HistoryRowProps {\n entry: BundleEntry;\n}\n\nfunction HistoryRow(props: HistoryRowProps): JSX.Element {\n const { response, resource } = props.entry;\n if (resource) {\n return (\n <tr>\n <td>\n <ResourceBadge value={resource.meta?.author} link={true} />\n </td>\n <td>{formatDateTime(resource.meta?.lastUpdated)}</td>\n <td>\n <MedplumLink to={getVersionUrl(resource)}>{resource.meta?.versionId}</MedplumLink>\n </td>\n </tr>\n );\n } else {\n return (\n <tr>\n <td colSpan={3}>{normalizeErrorString(response?.outcome)}</td>\n </tr>\n );\n }\n}\n\nfunction getVersionUrl(resource: Resource): string {\n return `/${resource.resourceType}/${resource.id}/_history/${resource.meta?.versionId}`;\n}\n","import { Button, createStyles, Stack, Text } from '@mantine/core';\nimport { getReferenceString } from '@medplum/core';\nimport { Questionnaire, QuestionnaireResponse, Reference, Schedule, Slot } from '@medplum/fhirtypes';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { CalendarInput, getStartMonth } from '../CalendarInput/CalendarInput';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { QuestionnaireForm } from '../QuestionnaireForm/QuestionnaireForm';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { ResourceName } from '../ResourceName/ResourceName';\nimport { useResource } from '../useResource/useResource';\n\nconst useStyles = createStyles((theme) => ({\n container: {\n display: 'flex',\n minHeight: 400,\n },\n\n info: {\n minWidth: 300,\n padding: 20,\n borderRight: `1px solid ${theme.colors.gray[3]}`,\n },\n\n selection: {\n minWidth: 300,\n padding: 20,\n },\n}));\n\nexport interface SchedulerProps {\n schedule: Schedule | Reference<Schedule>;\n questionnaire: Questionnaire | Reference<Questionnaire>;\n}\n\nexport function Scheduler(props: SchedulerProps): JSX.Element | null {\n const { classes } = useStyles();\n const medplum = useMedplum();\n const schedule = useResource(props.schedule);\n const questionnaire = useResource(props.questionnaire);\n\n const [slots, setSlots] = useState<Slot[]>();\n const slotsRef = useRef<Slot[]>();\n slotsRef.current = slots;\n\n const [month, setMonth] = useState<Date>(getStartMonth());\n const [date, setDate] = useState<Date>();\n const [slot, setSlot] = useState<Slot>();\n const [response, setResponse] = useState<QuestionnaireResponse>();\n\n useEffect(() => {\n if (schedule) {\n setSlots([]);\n medplum\n .searchResources(\n 'Slot',\n new URLSearchParams([\n ['_count', (30 * 24).toString()],\n ['schedule', getReferenceString(schedule)],\n ['start', 'gt' + getStart(month)],\n ['start', 'lt' + getEnd(month)],\n ])\n )\n .then(setSlots)\n .catch(console.log);\n } else {\n setSlots(undefined);\n }\n }, [medplum, schedule, month]);\n\n if (!schedule || !slots || !questionnaire) {\n return null;\n }\n\n const actor = schedule.actor?.[0];\n\n return (\n <div className={classes.container} data-testid=\"scheduler\">\n <div className={classes.info}>\n {actor && <ResourceAvatar value={actor} size=\"xl\" />}\n {actor && (\n <Text size=\"xl\" weight={500}>\n <ResourceName value={actor} />\n </Text>\n )}\n <p>1 hour</p>\n {date && <p>{date.toLocaleDateString()}</p>}\n {slot && <p>{formatTime(new Date(slot.start as string))}</p>}\n </div>\n <div className={classes.selection}>\n {!date && (\n <div>\n <h3>Select date</h3>\n <CalendarInput slots={slots} onChangeMonth={setMonth} onClick={setDate} />\n </div>\n )}\n {date && !slot && (\n <div>\n <h3>Select time</h3>\n <Stack>\n {slots.map((s) => {\n const slotStart = new Date(s.start as string);\n return (\n slotStart.getTime() > date.getTime() &&\n slotStart.getTime() < date.getTime() + 24 * 3600 * 1000 && (\n <div key={s.id}>\n <Button variant=\"outline\" style={{ width: 150 }} onClick={() => setSlot(s)}>\n {formatTime(slotStart)}\n </Button>\n </div>\n )\n );\n })}\n </Stack>\n </div>\n )}\n {date && slot && !response && (\n <QuestionnaireForm questionnaire={questionnaire} submitButtonText={'Next'} onSubmit={setResponse} />\n )}\n {date && slot && response && (\n <div>\n <h3>You're all set!</h3>\n <p>Check your email for a calendar invite.</p>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction getStart(month: Date): string {\n return formatSlotInstant(month.getTime());\n}\n\nfunction getEnd(month: Date): string {\n return formatSlotInstant(month.getTime() + 31 * 24 * 60 * 60 * 1000);\n}\n\nfunction formatSlotInstant(time: number): string {\n return new Date(Math.max(Date.now(), time)).toISOString();\n}\n\nfunction formatTime(date: Date): string {\n return date.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' });\n}\n","import { createReference, getReferenceString, ProfileResource } from '@medplum/core';\nimport { Attachment, Group, Patient, Reference, Resource, ServiceRequest } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface ServiceRequestTimelineProps {\n serviceRequest: ServiceRequest | Reference<ServiceRequest>;\n}\n\nexport function ServiceRequestTimeline(props: ServiceRequestTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.serviceRequest}\n buildSearchRequests={(resource: Resource) => ({\n resourceType: 'Bundle',\n type: 'batch',\n entry: [\n {\n request: {\n method: 'GET',\n url: `${getReferenceString(resource)}/_history`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `Communication?based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `Media?_count=100&based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `DiagnosticReport?based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,\n },\n },\n ],\n })}\n createCommunication={(resource: ServiceRequest, sender: ProfileResource, text: string) => ({\n resourceType: 'Communication',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject as Reference<Group | Patient>,\n sender: createReference(sender),\n sent: new Date().toISOString(),\n payload: [{ contentString: text }],\n })}\n createMedia={(resource: ServiceRequest, operator: ProfileResource, content: Attachment) => ({\n resourceType: 'Media',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject,\n operator: createReference(operator),\n issued: new Date().toISOString(),\n content,\n })}\n />\n );\n}\n"],"names":["formatAddress","useState","useRef","Group","NativeSelect","TextInput","createContext","useEffect","useContext","createReference","Anchor","ActionIcon","IconCircleMinus","IconCloudUpload","Button","useStyles","createStyles","MantineContainer","defaultProps","useComponentDefaultProps","Paper","Center","Title","Stack","Text","Alert","IconAlertCircle","Divider","PasswordInput","Checkbox","UnstyledButton","Avatar","formatCodeableConcept","formatCoding","formatHumanName","formatQuantity","formatRange","useNavigate","stringify","PropertyType","formatDateTime","formatPeriod","formatTiming","buildTypeName","getTypedPropertyValue","globalSchema","getPropertyDisplayName","Input","capitalize","useCallback","MultiSelect","isValidDate","JsonInput","getDisplayString","getImageSrc","Autocomplete","Loader","forwardRef","IconCirclePlus","Modal","Textarea","useMemo","formatObservationValue","toTypedValue","normalizeErrorString","Menu","getReferenceString","IconDots","updateNotification","IconCheck","IconFileAlert","showNotification","IconMessage","IconPin","IconPinnedOff","IconListDetails","IconEdit","IconTrash","ScrollArea","evalFhirPath","Operator","DEFAULT_SEARCH_COUNT","evalFhirPathTyped","getSearchParameterDetails","SearchParameterType","IconSortAscending","IconSortDescending","IconEqual","IconEqualNot","IconMathLower","IconMathGreater","IconBracketsContain","IconCalendar","IconSettings","IconBucket","IconBucketOff","IconBleach","IconBleachOff","IconX","formatSearchQuery","IconFilter","IconColumns","IconFilePlus","IconTableExport","IconBoxMultiple","getStart","getEnd","Table","IconAdjustmentsHorizontal","Pagination","generateId","nextId","QuestionnaireItemType","getQuestionnaireAnswers","Radio","deepEquals","getCodeBySystem","Badge","Grid","IconCheckbox","IconSquare","getVersionUrl"],"mappings":"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"}