@openmrs/esm-user-onboarding-app 4.0.1-pre.97 → 4.0.1-pre.98

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 (156) hide show
  1. package/.tx/config +11 -0
  2. package/dist/1119.js +1 -0
  3. package/dist/1197.js +1 -0
  4. package/dist/2146.js +1 -0
  5. package/dist/2690.js +1 -0
  6. package/dist/282.js +2 -0
  7. package/dist/282.js.LICENSE.txt +32 -0
  8. package/dist/282.js.map +1 -0
  9. package/dist/3099.js +1 -0
  10. package/dist/3184.js +2 -0
  11. package/dist/3184.js.LICENSE.txt +14 -0
  12. package/dist/3184.js.map +1 -0
  13. package/dist/3584.js +1 -0
  14. package/dist/4055.js +1 -0
  15. package/dist/4132.js +1 -0
  16. package/dist/4300.js +1 -0
  17. package/dist/4335.js +1 -0
  18. package/dist/4353.js +1 -0
  19. package/dist/4353.js.map +1 -0
  20. package/dist/4618.js +1 -0
  21. package/dist/4652.js +1 -0
  22. package/dist/4944.js +1 -0
  23. package/dist/5059.js +1 -0
  24. package/dist/5059.js.map +1 -0
  25. package/dist/5173.js +1 -0
  26. package/dist/5241.js +1 -0
  27. package/dist/5442.js +1 -0
  28. package/dist/553.js +2 -0
  29. package/dist/{534.js.LICENSE.txt → 553.js.LICENSE.txt} +7 -13
  30. package/dist/553.js.map +1 -0
  31. package/dist/5661.js +1 -0
  32. package/dist/6022.js +1 -0
  33. package/dist/6399.js +1 -0
  34. package/dist/6399.js.map +1 -0
  35. package/dist/6468.js +1 -0
  36. package/dist/6540.js +2 -0
  37. package/dist/6540.js.map +1 -0
  38. package/dist/6679.js +1 -0
  39. package/dist/6840.js +1 -0
  40. package/dist/6859.js +1 -0
  41. package/dist/6920.js +1 -0
  42. package/dist/6920.js.map +1 -0
  43. package/dist/7097.js +1 -0
  44. package/dist/7159.js +1 -0
  45. package/dist/723.js +1 -0
  46. package/dist/7617.js +1 -0
  47. package/dist/795.js +1 -0
  48. package/dist/8163.js +1 -0
  49. package/dist/8349.js +1 -0
  50. package/dist/844.js +1 -0
  51. package/dist/844.js.map +1 -0
  52. package/dist/8618.js +1 -0
  53. package/dist/8690.js +1 -0
  54. package/dist/8690.js.map +1 -0
  55. package/dist/890.js +1 -0
  56. package/dist/9214.js +1 -0
  57. package/dist/9442.js +2 -0
  58. package/dist/9442.js.LICENSE.txt +24 -0
  59. package/dist/9442.js.map +1 -0
  60. package/dist/9538.js +1 -0
  61. package/dist/9569.js +1 -0
  62. package/dist/961.js +2 -0
  63. package/dist/961.js.LICENSE.txt +19 -0
  64. package/dist/961.js.map +1 -0
  65. package/dist/986.js +1 -0
  66. package/dist/9879.js +1 -0
  67. package/dist/9895.js +1 -0
  68. package/dist/9900.js +1 -0
  69. package/dist/9913.js +1 -0
  70. package/dist/main.js +1 -1
  71. package/dist/main.js.map +1 -1
  72. package/dist/openmrs-esm-user-onboarding-app.js +1 -1
  73. package/dist/openmrs-esm-user-onboarding-app.js.buildmanifest.json +981 -109
  74. package/dist/openmrs-esm-user-onboarding-app.js.map +1 -1
  75. package/dist/routes.json +1 -1
  76. package/e2e/README.md +9 -7
  77. package/e2e/core/test.ts +1 -1
  78. package/e2e/fixtures/api.ts +1 -1
  79. package/e2e/pages/home-page.ts +2 -2
  80. package/e2e/specs/onboarding-test.spec.ts +9 -28
  81. package/jest.config.js +2 -2
  82. package/package.json +8 -7
  83. package/src/config-schema.ts +165 -155
  84. package/src/declarations.d.ts +2 -0
  85. package/src/root.component.tsx +26 -17
  86. package/src/tooltip/tooltip.component.tsx +35 -30
  87. package/src/tooltip/tooltip.scss +52 -23
  88. package/src/tutorial/modal.component.tsx +11 -6
  89. package/src/tutorial/{modal.component.test.tsx → modal.test.tsx} +10 -8
  90. package/src/tutorial/styles.scss +35 -1
  91. package/src/tutorial/tutorial.tsx +1 -0
  92. package/src/types.ts +2 -2
  93. package/tools/update-openmrs-deps.mjs +43 -0
  94. package/translations/am.json +9 -1
  95. package/translations/ar.json +9 -0
  96. package/translations/ar_SY.json +9 -0
  97. package/translations/bn.json +9 -0
  98. package/translations/de.json +9 -0
  99. package/translations/en_US.json +9 -0
  100. package/translations/es.json +9 -1
  101. package/translations/es_MX.json +9 -0
  102. package/translations/fr.json +9 -1
  103. package/translations/he.json +9 -1
  104. package/translations/hi.json +9 -0
  105. package/translations/hi_IN.json +9 -0
  106. package/translations/id.json +9 -0
  107. package/translations/it.json +9 -0
  108. package/translations/ka.json +9 -0
  109. package/translations/km.json +9 -1
  110. package/translations/ku.json +9 -0
  111. package/translations/ky.json +9 -0
  112. package/translations/lg.json +9 -0
  113. package/translations/ne.json +9 -0
  114. package/translations/pl.json +9 -0
  115. package/translations/pt.json +9 -0
  116. package/translations/pt_BR.json +9 -0
  117. package/translations/qu.json +9 -0
  118. package/translations/ro_RO.json +9 -0
  119. package/translations/ru_RU.json +9 -0
  120. package/translations/si.json +9 -0
  121. package/translations/sw.json +9 -0
  122. package/translations/sw_KE.json +9 -0
  123. package/translations/tr.json +9 -0
  124. package/translations/tr_TR.json +9 -0
  125. package/translations/uk.json +9 -0
  126. package/translations/uz.json +9 -0
  127. package/translations/uz@Latn.json +9 -0
  128. package/translations/uz_UZ.json +9 -0
  129. package/translations/vi.json +9 -0
  130. package/translations/zh.json +9 -0
  131. package/translations/zh_CN.json +9 -0
  132. package/tsconfig.json +2 -1
  133. package/dist/151.js +0 -2
  134. package/dist/151.js.LICENSE.txt +0 -3
  135. package/dist/151.js.map +0 -1
  136. package/dist/197.js +0 -1
  137. package/dist/300.js +0 -1
  138. package/dist/335.js +0 -1
  139. package/dist/422.js +0 -1
  140. package/dist/422.js.map +0 -1
  141. package/dist/438.js +0 -1
  142. package/dist/438.js.map +0 -1
  143. package/dist/534.js +0 -2
  144. package/dist/534.js.map +0 -1
  145. package/dist/540.js +0 -2
  146. package/dist/540.js.map +0 -1
  147. package/dist/55.js +0 -1
  148. package/dist/570.js +0 -1
  149. package/dist/570.js.map +0 -1
  150. package/dist/652.js +0 -1
  151. package/dist/743.js +0 -1
  152. package/dist/743.js.map +0 -1
  153. package/dist/917.js +0 -1
  154. package/dist/917.js.map +0 -1
  155. package/dist/99.js +0 -1
  156. /package/dist/{540.js.LICENSE.txt → 6540.js.LICENSE.txt} +0 -0
@@ -11,13 +11,15 @@ export const configSchema = {
11
11
  _description: 'List of tutorials to be displayed in the modal',
12
12
  _default: [
13
13
  {
14
- title: 'Basic Tutorial',
15
- description: 'Learn how to efficiently search for patients, register new patients, access user settings, and view ongoing visits and appointments.',
16
- steps: [{
17
- target: '[aria-label="OpenMRS"]',
18
- content: 'Welcome to OpenMRS! This is the main dashboard where you can navigate to various features of the system.',
19
- disableBeacon: true
20
- },
14
+ title: 'Basic Overview',
15
+ description:
16
+ 'This guide provides a quick look at the essential components that shape the layout and user experience of our homepage.',
17
+ steps: [
18
+ {
19
+ target: '[aria-label="OpenMRS"]',
20
+ content:
21
+ 'Welcome to OpenMRS! This is the main dashboard where you can navigate to various features of the system.',
22
+ },
21
23
  {
22
24
  target: '[name="SearchPatientIcon"]',
23
25
  content: 'This is the search icon. Use it to find patients in the system quickly.',
@@ -30,90 +32,15 @@ export const configSchema = {
30
32
  target: '[name="User"]',
31
33
  content: 'The user icon. Click here to change your user preferences and settings.',
32
34
  },
33
- {
34
- target: '[data-extension-id="active-visits-widget"]',
35
- content: 'This table displays active visits. Here you can see all the ongoing patient visits.',
36
- },
37
- {
38
- target: '[data-extension-id="home-appointments"]',
39
- content: 'This table shows appointments. View and manage patient appointments from this section.',
40
- },
41
- ],
42
- },
43
- {
44
- title: 'Tutorial for demo purposes',
45
- description: 'This tutorial is for demo / debugging purposes only',
46
- steps: [
47
- {
48
- target: '[aria-label="OpenMRS"]',
49
- title: 'Let us walk through the tutorial features together.',
50
- disableBeacon: true,
51
- },
52
- {
53
- target: '[data-extension-id="clinical-appointments-dashboard-link"]',
54
- title:
55
- 'Click on this link. This step is configured to be automatic and will take you to the next step. Once the given query selector resolves an element on the page, it will proceed automatically.',
56
- hideCloseButton: true,
57
- hideNextButton: true,
58
- disableOverlayClose: true,
59
- spotlightClicks: true,
60
- data: {
61
- autoNextOn: '[data-extension-id="clinical-appointments-dashboard"]',
62
- },
63
- },
64
- {
65
- target: '[data-extension-id="clinical-appointments-dashboard"]',
66
- title: 'Congrats! You have reached the clinical appointments dashboard.',
67
- disableOverlayClose: true,
68
- },
69
- {
70
- target: '[aria-label="OpenMRS"]',
71
- title:
72
- 'Now, let’s see how this behaves when elements take a bit longer to load. Set your network throttling to "Slow 3G" and hit "Next".',
73
- disableOverlayClose: true,
74
- hideBackButton: true,
75
- },
76
- {
77
- target: '[data-extension-id="laboratory-dashboard-link"]',
78
- title:
79
- 'Let\'s navigate to the laboratory page. Our next target is the "Tests Ordered" table. I’ll disappear once you reach the laboratory page and reappear when the table is loaded. See you there!',
80
- hideCloseButton: true,
81
- hideNextButton: true,
82
- disableOverlayClose: true,
83
- spotlightClicks: true,
84
- data: {
85
- autoNextOn: '[data-extension-id="laboratory-dashboard"]',
86
- },
87
- },
88
- {
89
- target: '[data-extension-id="all-lab-requests-table"] table',
90
- title:
91
- "It's me again. By default, I'll wait for the element to appear, so you don't have to worry about slow components when writing a new tutorial.",
92
- disableOverlayClose: true,
93
- hideBackButton: true,
94
- },
95
- {
96
- target: '[aria-label="OpenMRS"]',
97
- title:
98
- "Now let's do a fun exercise. Can you find out how to view a patient's allergies on your own? Feel free to turn off network throttling. ;) ",
99
- },
100
- {
101
- target: '[data-extension-slot-name="patient-chart-allergies-dashboard-slot"]',
102
- title:
103
- 'Great job! You found the allergies section! This is the end of the tutorial. Feel free to explore the system on your own or check out the other tutorials.',
104
- },
105
35
  ],
106
36
  },
107
37
  {
108
- title: 'Patient Registration Tutorial',
38
+ title: 'Registering a Patient',
109
39
  description: 'Learn how to register a new patient into the system.',
110
40
  steps: [
111
41
  {
112
42
  target: '[name="AddPatientIcon"]',
113
- title: 'Add Patient',
114
43
  content: 'Click here to add a patient to the system.',
115
- disableBeacon: true,
116
- disableOverlayClose: true,
117
44
  spotlightClicks: true,
118
45
  hideCloseButton: true,
119
46
  hideNextButton: true,
@@ -127,41 +54,33 @@ export const configSchema = {
127
54
  title: 'Demographics',
128
55
  content:
129
56
  'This is the Demographics section. Here you can find various fields and information related to the patient.',
130
- disableBeacon: true,
131
57
  hideBackButton: true,
132
58
  },
133
59
  {
134
60
  target: '#contact',
135
61
  title: 'Contact Details',
136
62
  content: "Here you can update the patient's contact information.",
137
- disableBeacon: true,
138
63
  },
139
64
  {
140
65
  target: '#relationships',
141
66
  title: 'Relationships',
142
67
  content: "In this section, you can manage the patient's relationships.",
143
- disableBeacon: true,
144
68
  },
145
69
  {
146
70
  target: 'button[type="submit"]',
147
- title: 'Register Patient',
148
71
  content: "Click this button to register the patient's information into the system.",
149
- disableBeacon: true,
150
72
  },
151
73
  ],
152
74
  },
153
75
  {
154
- title: 'Patient Chart Tutorial',
76
+ title: 'Patient Chart',
155
77
  description:
156
78
  'Patient chart is the main point of interaction between healthcare professionals and patient data, where you can manage everything related to a single patient.',
157
79
  steps: [
158
80
  {
159
81
  target: '[data-testid="searchPatientIcon"]',
160
- title: 'Search icon',
161
82
  content:
162
83
  'To access the patient chart, first, you need to select a patient. To start, click here to open the search box so that we can search for a patient.',
163
- disableBeacon: true,
164
- disableOverlayClose: true,
165
84
  spotlightClicks: true,
166
85
  hideNextButton: true,
167
86
  data: {
@@ -170,12 +89,10 @@ export const configSchema = {
170
89
  },
171
90
  {
172
91
  target: '[data-testid="patientSearchBar"]',
173
- title: 'Search box',
174
92
  content:
175
93
  'Now, enter the name or the ID of the patient here. Some example patient names that you can search for are: John, Smith, Mary.',
176
94
  hideNextButton: true,
177
95
  hideBackButton: true,
178
- disableOverlayClose: true,
179
96
  spotlightClicks: true,
180
97
  data: {
181
98
  autoNextOn: '[data-testid="floatingSearchResultsContainer"]',
@@ -183,11 +100,9 @@ export const configSchema = {
183
100
  },
184
101
  {
185
102
  target: '[data-testid="floatingSearchResultsContainer"]',
186
- title: 'Search results',
187
103
  content: 'Click on the patient you want to go to their patient chart.',
188
104
  spotlightClicks: true,
189
- disableOverlayClose: true,
190
- disableOverlay : true,
105
+ disableOverlay: true,
191
106
  placement: 'left',
192
107
  hideNextButton: true,
193
108
  hideBackButton: true,
@@ -198,9 +113,9 @@ export const configSchema = {
198
113
  {
199
114
  target: 'body',
200
115
  title: 'Patient Chart',
201
- content: "Welcome to the Patient Chart View! Here, you can quickly see everything about your patient's health history, visits, medications, allergies, and test results—all in one place. It's designed to help you provide the best care efficiently.",
116
+ content:
117
+ "Welcome to the Patient Chart View! Here, you can quickly see everything about your patient's health history, visits, medications, allergies, and test results—all in one place. It's designed to help you provide the best care efficiently.",
202
118
  spotlightClicks: true,
203
- disableOverlayClose: true,
204
119
  hideBackButton: true,
205
120
  placement: 'center',
206
121
  },
@@ -209,7 +124,6 @@ export const configSchema = {
209
124
  title: 'Patient header',
210
125
  content:
211
126
  'The patient header contains all the key information you need to identify the patient you are currently viewing. You can click on the "Show Details" button to see additional patient information.',
212
- disableOverlayClose: true,
213
127
  spotlightClicks: true,
214
128
  hideBackButton: true,
215
129
  },
@@ -218,7 +132,6 @@ export const configSchema = {
218
132
  title: 'Left panel',
219
133
  content:
220
134
  'The left panel shows the sections of the patient chart. Currently, we are on the patient summary page.',
221
- disableOverlayClose: true,
222
135
  spotlightClicks: true,
223
136
  placement: 'right',
224
137
  },
@@ -227,7 +140,6 @@ export const configSchema = {
227
140
  title: 'Patient summary widgets',
228
141
  content:
229
142
  'Patient Summary is a personalized view made up of widgets that show essential features and information for quick access.',
230
- disableOverlayClose: true,
231
143
  },
232
144
  {
233
145
  target: '[data-extension-slot-name="action-menu-patient-chart-items-slot"]',
@@ -237,23 +149,20 @@ export const configSchema = {
237
149
  },
238
150
  {
239
151
  target: 'body',
240
- title:
152
+ content:
241
153
  "Great job! You've completed the tutorial. Now, take a moment to explore the Patient Chart View and discover all its features. Feel free to navigate around and get comfortable with the layout. If you need to return to the home page, just click the close button in the top right corner. Happy exploring!",
242
- disableOverlayClose: true,
243
154
  placement: 'center',
244
155
  },
245
156
  ],
246
157
  },
247
158
  {
248
- title: 'Patient Search',
249
- description: 'Learn how to find a patient in the system using basic and advanced search features, including the use of filters to refine results.',
159
+ title: 'Finding a Patient',
160
+ description:
161
+ 'Learn how to find a patient in the system using basic and advanced search features, including the use of filters to refine results.',
250
162
  steps: [
251
163
  {
252
164
  target: '[data-testid="searchPatientIcon"]',
253
- title: 'Search icon',
254
165
  content: 'Click on the search icon to open the search box so that we can search for a patient.',
255
- disableBeacon: true,
256
- disableOverlayClose: true,
257
166
  spotlightClicks: true,
258
167
  hideNextButton: true,
259
168
  data: {
@@ -262,12 +171,10 @@ export const configSchema = {
262
171
  },
263
172
  {
264
173
  target: '[data-testid="patientSearchBar"]',
265
- title: 'Search box',
266
174
  content:
267
175
  'Now, enter the name of the patient here. If you know the patient ID, you can use that as well. You will see the results if the patient you entered exists in the system. Some example patient names that you can search for are: John, Smith, Mary.',
268
176
  hideNextButton: true,
269
177
  hideBackButton: true,
270
- disableOverlayClose: true,
271
178
  spotlightClicks: true,
272
179
  data: {
273
180
  autoNextOn: '[data-testid="floatingSearchResultsContainer"]',
@@ -275,11 +182,9 @@ export const configSchema = {
275
182
  },
276
183
  {
277
184
  target: 'button[type="submit"]',
278
- title: 'Search button',
279
185
  content:
280
186
  'If there are a lot of patients in the system, you may need additional fields to search other than the name. Also, the patient you are looking for may not be displayed in the top results if there are multiple patients with the same name. In these scenarios, you can click here to open the advanced search.',
281
187
  spotlightClicks: true,
282
- disableOverlayClose: true,
283
188
  placement: 'bottom',
284
189
  hideNextButton: true,
285
190
  hideBackButton: true,
@@ -293,22 +198,18 @@ export const configSchema = {
293
198
  content:
294
199
  'You can refine your search by applying filters such as date of birth, age, sex, and phone number here.',
295
200
  spotlightClicks: true,
296
- disableOverlayClose: true,
297
201
  hideBackButton: true,
298
202
  },
299
203
  {
300
204
  target: '[data-openmrs-role="Search Results"]',
301
- title: 'Search results',
302
205
  content:
303
206
  'Here you can see all the patients who match the search criteria. Clicking on a patient will open the patient’s patient chart.',
304
- disableOverlayClose: true,
305
207
  placement: 'right',
306
208
  },
307
209
  {
308
210
  target: '[data-testid="closeSearchIcon"]',
309
211
  content: 'That’s the end of the tutorial. Click on the close button to go back to the home page.',
310
212
  spotlightClicks: true,
311
- disableOverlayClose: true,
312
213
  placement: 'bottom',
313
214
  hideNextButton: true,
314
215
  hideBackButton: true,
@@ -327,7 +228,6 @@ export const configSchema = {
327
228
  target: '[data-extension-id="patient-lists-dashboard-link"]',
328
229
  content:
329
230
  'Creating a patient list is a great way to keep a group of patients organized for easier management. Click here to go to the patient lists view',
330
- disableBeacon: true,
331
231
  spotlightClicks: true,
332
232
  hideNextButton: true,
333
233
  data: {
@@ -347,7 +247,6 @@ export const configSchema = {
347
247
  },
348
248
  {
349
249
  target: '[data-openmrs-role="New List"]',
350
- title: 'New List',
351
250
  content: "Now, let's try creating a new list. Click here to open the new patient list form.",
352
251
  spotlightClicks: true,
353
252
  placement: 'left',
@@ -359,10 +258,8 @@ export const configSchema = {
359
258
  },
360
259
  {
361
260
  target: '[data-openmrs-role="Patient List Form"]',
362
- title: 'Patient List Form',
363
261
  content: 'Enter the necessary details and click on "Create List" to create the list.',
364
262
  spotlightClicks: true,
365
-
366
263
  hideBackButton: true,
367
264
  hideNextButton: true,
368
265
  placement: 'left',
@@ -372,7 +269,6 @@ export const configSchema = {
372
269
  },
373
270
  {
374
271
  target: '[data-testid="patientListsTable"]',
375
- title: 'Patient Lists table',
376
272
  content:
377
273
  'Great! We have successfully created a new patient list. Find and click on the patient list you created to proceed. You can use the search option at the top right if needed.',
378
274
  disableOverlay: true,
@@ -394,7 +290,6 @@ export const configSchema = {
394
290
  target: '[data-testid="searchPatientIcon"]',
395
291
  content:
396
292
  'To add a patient to the list, we have to go to the respective patient’s chart view. Click here to open the search box so that we can search for a patient.',
397
- disableBeacon: true,
398
293
  spotlightClicks: true,
399
294
  hideNextButton: true,
400
295
  hideBackButton: true,
@@ -455,7 +350,6 @@ export const configSchema = {
455
350
  target: '[aria-label="Close"]',
456
351
  content:
457
352
  "We have successfully added a patient to the patient list. Let's go back to the patient lists by closing the patient chart by clicking here.",
458
-
459
353
  spotlightClicks: true,
460
354
  hideBackButton: true,
461
355
  hideNextButton: true,
@@ -467,13 +361,12 @@ export const configSchema = {
467
361
  target: '[data-testid="patientsTable"]',
468
362
  title: 'Patients List',
469
363
  content: 'You can see the added patient on the list of patients.',
470
-
471
364
  spotlightClicks: true,
472
365
  hideBackButton: true,
473
366
  },
474
367
  {
475
368
  target: 'body',
476
- title:
369
+ content:
477
370
  'Congrats! You have now completed the tutorial on creating patient lists and adding patients to the lists.',
478
371
  placement: 'center',
479
372
  hideBackButton: true,
@@ -481,21 +374,19 @@ export const configSchema = {
481
374
  ],
482
375
  },
483
376
  {
484
- title: 'Capture Vitals',
377
+ title: 'Recording Vitals',
485
378
  description:
486
- 'Learn how to record a patient\'s vitals and biometric data, and review the records through the patient chart.',
379
+ "Learn how to record a patient's vitals and biometric data, and review the records through the patient chart.",
487
380
  steps: [
488
381
  {
489
382
  target: '[data-testid="searchPatientIcon"]',
490
383
  content:
491
384
  'To capture the vitals of a patient, you need to start by going to the patient chart view of the respective patient. Click on the search icon to open the search box so that you can search for the patient.',
492
- disableBeacon: true,
493
- disableOverlayClose: true,
494
385
  spotlightClicks: true,
495
386
  hideNextButton: true,
496
387
  data: {
497
- autoNextOn: '[data-testid="patientSearchBar"]'
498
- },
388
+ autoNextOn: '[data-testid="patientSearchBar"]',
389
+ },
499
390
  },
500
391
  {
501
392
  target: '[data-testid="patientSearchBar"]',
@@ -503,16 +394,14 @@ export const configSchema = {
503
394
  'Now, enter the name or the ID of the patient here. Some example patient names you can search for are: John, Smith, Mary.',
504
395
  hideNextButton: true,
505
396
  hideBackButton: true,
506
- disableOverlayClose: true,
507
397
  spotlightClicks: true,
508
- data: {
509
- autoNextOn: '[data-testid="floatingSearchResultsContainer"]'
398
+ data: {
399
+ autoNextOn: '[data-testid="floatingSearchResultsContainer"]',
510
400
  },
511
401
  },
512
402
  {
513
403
  target: '[data-testid="floatingSearchResultsContainer"]',
514
404
  content: 'Click on the patient to go to their patient chart.',
515
- disableOverlayClose: true,
516
405
  placement: 'left',
517
406
  spotlightClicks: true,
518
407
  hideBackButton: true,
@@ -523,10 +412,8 @@ export const configSchema = {
523
412
  },
524
413
  {
525
414
  target: '[data-extension-id="patient-vitals-info"] button',
526
- title: 'Record Vitals',
527
415
  content:
528
- 'Welcome to the patient chart view! Click on the "Record Vitals" button to open the vitals form. If the selected patient doesn\'t have an active visit, you will be prompted to start one. In that case, submit the start visit form in order to the next step.',
529
- disableOverlayClose: true,
416
+ 'Click on the "Record Vitals" button to open the vitals form. If the selected patient doesn\'t have an active visit, you will be prompted to start one. In that case, submit the start visit form in order to the next step.',
530
417
  disableOverlay: true,
531
418
  spotlightClicks: true,
532
419
  hideBackButton: true,
@@ -540,60 +427,184 @@ export const configSchema = {
540
427
  title: 'Vitals form',
541
428
  content:
542
429
  'In this form, you can enter the vitals and biometrics you have captured. If any value entered is out of the normal range, you will see ↑ (High), ↓ (Low), ↑↑ (Very High) or ↓↓ (Very Low) indicators next to the respective field. After entering all necessary details, click on the "Save and Close" button to submit the data.',
543
- disableOverlayClose: true,
544
430
  disableOverlay: true,
545
431
  spotlightClicks: true,
546
432
  placement: 'left',
547
433
  hideBackButton: true,
548
434
  hideNextButton: true,
549
- data: {
550
- autoNextOn: '.omrs-snackbars-container div'
435
+ data: {
436
+ autoNextOn: '.omrs-snackbars-container div',
551
437
  },
552
438
  },
553
439
  {
554
440
  target: '[data-extension-id="patient-vitals-info"]',
555
- title: 'Vitals Header',
556
441
  content: 'The latest vitals and biometrics data of the patient can be viewed in this section.',
557
- disableOverlayClose: true,
558
442
  hideBackButton: true,
559
443
  },
560
444
  {
561
445
  target: '[data-extension-id="results-summary-dashboard"]',
562
- title: 'Vitals and Biometrics Menu',
563
446
  content:
564
447
  'Click here to go to the Vitals and Biometrics page, where you can view the past records of vitals and biometrics.',
565
- disableOverlayClose: true,
566
448
  hideBackButton: true,
567
449
  hideNextButton: true,
568
450
  spotlightClicks: true,
569
- data: {
570
- autoNextOn: '[data-extension-slot-name="patient-chart-vitals-biometrics-dashboard-slot"]'
451
+ data: {
452
+ autoNextOn: '[data-extension-slot-name="patient-chart-vitals-biometrics-dashboard-slot"]',
571
453
  },
572
454
  },
573
455
  {
574
456
  target: '[data-extension-slot-name="patient-chart-vitals-biometrics-dashboard-slot"]',
575
- title: 'Vitals/Biometrics Tables',
576
457
  content:
577
458
  'These tables display the history of vitals and biometrics. Indicators may be present here to show measurements that are higher or lower than the typical range.',
578
- disableOverlayClose: true,
579
459
  hideBackButton: true,
580
460
  },
581
461
  {
582
462
  target: '[aria-label="Chart view"]',
583
- title: 'Charts',
584
463
  content: 'You can click on the "Chart" button for a graphical representation of the vitals history.',
585
- disableOverlayClose: true,
586
464
  },
587
465
  {
588
466
  target: 'body',
589
- title:
467
+ content:
590
468
  'You have now successfully completed the tutorial. You can continue with the rest of the patient visit by recording additional information or performing other necessary actions within the patient chart view, or you can return to the homepage.',
591
- disableOverlayClose: true,
592
469
  placement: 'center',
593
470
  hideBackButton: true,
594
471
  },
595
472
  ],
596
473
  },
474
+ {
475
+ title: 'Starting a Patient Visit',
476
+ description: 'Learn how to start a visit for a patient.',
477
+ steps: [
478
+ {
479
+ target: '[data-testid="searchPatientIcon"]',
480
+ content:
481
+ 'To fill out any forms or encounters of a patient, you have to start a visit. To start a patient visit, first you need to go to the patient chart view of the respective patient. Click on the search icon to open the search box so that we can search for the patient. ',
482
+ disableBeacon: true,
483
+ spotlightClicks: true,
484
+ hideNextButton: true,
485
+ data: {
486
+ autoNextOn: '[data-testid="patientSearchBar"]',
487
+ },
488
+ },
489
+ {
490
+ target: '[data-testid="patientSearchBar"]',
491
+ content:
492
+ 'Now, enter the name or the ID of the patient here. Some example patient names that you can search for are: John, Smith, Mary.',
493
+ hideNextButton: true,
494
+ hideBackButton: true,
495
+ spotlightClicks: true,
496
+ data: {
497
+ autoNextOn: '[data-testid="floatingSearchResultsContainer"]',
498
+ },
499
+ },
500
+ {
501
+ target: '[data-testid="floatingSearchResultsContainer"]',
502
+ content:
503
+ 'Click on the patient whose chart you want to access. Make sure to select a patient without the "Active visit" label, as we will start a visit in the next steps of the tutorial.',
504
+ spotlightClicks: true,
505
+ disableOverlay: true,
506
+ placement: 'left',
507
+ hideNextButton: true,
508
+ hideBackButton: true,
509
+ data: {
510
+ autoNextOn: '[data-extension-slot-name="action-menu-patient-chart-items-slot"]',
511
+ },
512
+ },
513
+ {
514
+ target: '[aria-label="Start a visit"]',
515
+ content:
516
+ 'Welcome to the patient chart view! Here, you can find detailed patient information, records of clinical visits, demographic information, graphs, and medical forms. Click on the "Start Visit" button to open the Start Visit form.',
517
+ spotlightClicks: true,
518
+ hideNextButton: true,
519
+ hideBackButton: true,
520
+ data: {
521
+ autoNextOn: '[data-openmrs-role="Start Visit Form"]',
522
+ },
523
+ },
524
+ {
525
+ target: '[data-openmrs-role="Start Visit Form"]',
526
+ title: 'Start Visit Form',
527
+ content:
528
+ 'Fill out the necessary information here and click on the "Start Visit" button at the bottom of this form to start the visit. You can click on "Discard" if you don\'t want to start a visit at the moment.',
529
+ disableOverlay: true,
530
+ spotlightClicks: true,
531
+ hideNextButton: true,
532
+ hideBackButton: true,
533
+ placement: 'left',
534
+ data: {
535
+ autoNextOn: '.omrs-snackbars-container div',
536
+ },
537
+ },
538
+ {
539
+ target: 'body',
540
+ content:
541
+ 'That\'s the end of this tutorial! If you have already started a visit, you will see an "Active Visit" tag near the patient\'s name. After the visit is started, you can do things like capturing vitals, biometrics, and more through this patient chart view.',
542
+ hideBackButton: true,
543
+ placement: 'center',
544
+ },
545
+ ],
546
+ },
547
+ {
548
+ title: 'Tutorial for demo purposes',
549
+ description: 'This tutorial is for demo / debugging purposes only',
550
+ steps: [
551
+ {
552
+ target: '[aria-label="OpenMRS"]',
553
+ content: 'Let us walk through the tutorial features together.',
554
+ },
555
+ {
556
+ target: '[data-extension-id="clinical-appointments-dashboard-link"]',
557
+ content:
558
+ 'Click on this link. This step is configured to be automatic and will take you to the next step. Once the given query selector resolves an element on the page, it will proceed automatically.',
559
+ hideCloseButton: true,
560
+ hideNextButton: true,
561
+ spotlightClicks: true,
562
+ data: {
563
+ autoNextOn: '[data-extension-id="clinical-appointments-dashboard"]',
564
+ },
565
+ },
566
+ {
567
+ target: '[data-extension-id="clinical-appointments-dashboard"]',
568
+ content: 'Congrats! You have reached the clinical appointments dashboard.',
569
+ },
570
+ {
571
+ target: '[aria-label="OpenMRS"]',
572
+ content:
573
+ 'Now, let’s see how this behaves when elements take a bit longer to load. Set your network throttling to "Slow 3G" and hit "Next".',
574
+
575
+ hideBackButton: true,
576
+ },
577
+ {
578
+ target: '[data-extension-id="laboratory-dashboard-link"]',
579
+ content:
580
+ 'Let\'s navigate to the laboratory page. Our next target is the "Tests Ordered" table. I’ll disappear once you reach the laboratory page and reappear when the table is loaded. See you there!',
581
+ hideCloseButton: true,
582
+ hideNextButton: true,
583
+
584
+ spotlightClicks: true,
585
+ data: {
586
+ autoNextOn: '[data-extension-id="laboratory-dashboard"]',
587
+ },
588
+ },
589
+ {
590
+ target: '[data-extension-id="all-lab-requests-table"] table',
591
+ content:
592
+ "It's me again. By default, I'll wait for the element to appear, so you don't have to worry about slow components when writing a new tutorial.",
593
+
594
+ hideBackButton: true,
595
+ },
596
+ {
597
+ target: '[aria-label="OpenMRS"]',
598
+ content:
599
+ "Now let's do a fun exercise. Can you find out how to view a patient's allergies on your own? Feel free to turn off network throttling. ;) ",
600
+ },
601
+ {
602
+ target: '[data-extension-slot-name="patient-chart-allergies-dashboard-slot"]',
603
+ content:
604
+ 'Great job! You found the allergies section! This is the end of the tutorial. Feel free to explore the system on your own or check out the other tutorials.',
605
+ },
606
+ ],
607
+ },
597
608
  ],
598
609
  },
599
610
  };
@@ -607,7 +618,6 @@ export type Config = {
607
618
  target: string;
608
619
  title: string;
609
620
  content: string;
610
- disableBeacon: boolean;
611
621
  data?: {
612
622
  autoNextOn?: boolean;
613
623
  };
@@ -2,3 +2,5 @@ declare module '@carbon/react';
2
2
  declare module '*.css';
3
3
  declare module '*.scss';
4
4
  declare module '*.png';
5
+
6
+ declare type SideNavProps = object;