@bathiran212/esm-patient-notes-app 2.0.0

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 (216) hide show
  1. package/README.md +4 -0
  2. package/dist/1076.js +1 -0
  3. package/dist/1076.js.map +1 -0
  4. package/dist/1339.js +1 -0
  5. package/dist/1339.js.map +1 -0
  6. package/dist/1480.js +1 -0
  7. package/dist/1480.js.map +1 -0
  8. package/dist/1646.js +1 -0
  9. package/dist/1646.js.map +1 -0
  10. package/dist/1789.js +1 -0
  11. package/dist/1789.js.map +1 -0
  12. package/dist/1869.js +1 -0
  13. package/dist/1869.js.map +1 -0
  14. package/dist/1871.js +1 -0
  15. package/dist/1871.js.map +1 -0
  16. package/dist/1877.js +1 -0
  17. package/dist/1877.js.map +1 -0
  18. package/dist/2153.js +1 -0
  19. package/dist/2153.js.map +1 -0
  20. package/dist/2317.js +1 -0
  21. package/dist/2317.js.map +1 -0
  22. package/dist/2416.js +1 -0
  23. package/dist/2416.js.map +1 -0
  24. package/dist/2544.js +27 -0
  25. package/dist/2544.js.map +1 -0
  26. package/dist/282.js +1 -0
  27. package/dist/282.js.map +1 -0
  28. package/dist/2824.js +1 -0
  29. package/dist/2824.js.map +1 -0
  30. package/dist/2842.js +1 -0
  31. package/dist/2842.js.map +1 -0
  32. package/dist/2881.js +1 -0
  33. package/dist/2881.js.map +1 -0
  34. package/dist/3378.js +1 -0
  35. package/dist/3378.js.map +1 -0
  36. package/dist/3720.js +1 -0
  37. package/dist/3720.js.map +1 -0
  38. package/dist/3963.js +1 -0
  39. package/dist/3963.js.map +1 -0
  40. package/dist/3989.js +1 -0
  41. package/dist/3989.js.map +1 -0
  42. package/dist/4106.js +1 -0
  43. package/dist/4106.js.map +1 -0
  44. package/dist/4111.js +1 -0
  45. package/dist/4111.js.map +1 -0
  46. package/dist/434.js +1 -0
  47. package/dist/434.js.map +1 -0
  48. package/dist/4348.js +1 -0
  49. package/dist/4348.js.map +1 -0
  50. package/dist/4383.js +1 -0
  51. package/dist/4383.js.map +1 -0
  52. package/dist/4658.js +1 -0
  53. package/dist/4658.js.map +1 -0
  54. package/dist/466.js +1 -0
  55. package/dist/466.js.map +1 -0
  56. package/dist/4928.js +1 -0
  57. package/dist/4928.js.map +1 -0
  58. package/dist/5117.js +1 -0
  59. package/dist/5117.js.map +1 -0
  60. package/dist/5132.js +1 -0
  61. package/dist/5132.js.map +1 -0
  62. package/dist/5145.js +1 -0
  63. package/dist/5145.js.map +1 -0
  64. package/dist/5503.js +1 -0
  65. package/dist/5503.js.map +1 -0
  66. package/dist/556.js +1 -0
  67. package/dist/556.js.map +1 -0
  68. package/dist/5644.js +1 -0
  69. package/dist/5644.js.map +1 -0
  70. package/dist/5697.js +1 -0
  71. package/dist/5697.js.map +1 -0
  72. package/dist/5861.js +1 -0
  73. package/dist/5861.js.map +1 -0
  74. package/dist/5940.js +1 -0
  75. package/dist/5940.js.map +1 -0
  76. package/dist/6047.js +1 -0
  77. package/dist/6047.js.map +1 -0
  78. package/dist/6371.js +1 -0
  79. package/dist/6371.js.map +1 -0
  80. package/dist/6377.js +1 -0
  81. package/dist/6377.js.map +1 -0
  82. package/dist/6444.js +1 -0
  83. package/dist/6444.js.map +1 -0
  84. package/dist/6508.js +1 -0
  85. package/dist/6508.js.map +1 -0
  86. package/dist/6724.js +1 -0
  87. package/dist/6724.js.map +1 -0
  88. package/dist/6904.js +1 -0
  89. package/dist/6904.js.map +1 -0
  90. package/dist/7045.js +1 -0
  91. package/dist/7045.js.map +1 -0
  92. package/dist/7103.js +1 -0
  93. package/dist/7103.js.map +1 -0
  94. package/dist/7175.js +1 -0
  95. package/dist/7175.js.map +1 -0
  96. package/dist/7182.js +1 -0
  97. package/dist/7182.js.map +1 -0
  98. package/dist/7205.js +11 -0
  99. package/dist/7205.js.map +1 -0
  100. package/dist/7646.js +17 -0
  101. package/dist/7646.js.map +1 -0
  102. package/dist/7742.js +1 -0
  103. package/dist/7742.js.map +1 -0
  104. package/dist/7912.js +1 -0
  105. package/dist/7912.js.map +1 -0
  106. package/dist/8358.js +1 -0
  107. package/dist/8358.js.map +1 -0
  108. package/dist/8359.js +1 -0
  109. package/dist/8359.js.map +1 -0
  110. package/dist/8369.js +1 -0
  111. package/dist/8369.js.map +1 -0
  112. package/dist/8695.js +1 -0
  113. package/dist/8695.js.map +1 -0
  114. package/dist/8722.js +1 -0
  115. package/dist/8722.js.map +1 -0
  116. package/dist/903.js +1 -0
  117. package/dist/903.js.map +1 -0
  118. package/dist/9061.js +1 -0
  119. package/dist/9061.js.map +1 -0
  120. package/dist/9072.js +1 -0
  121. package/dist/9072.js.map +1 -0
  122. package/dist/9105.js +1 -0
  123. package/dist/9105.js.map +1 -0
  124. package/dist/9712.js +1 -0
  125. package/dist/9712.js.map +1 -0
  126. package/dist/9771.js +1 -0
  127. package/dist/9771.js.map +1 -0
  128. package/dist/9806.js +1 -0
  129. package/dist/9806.js.map +1 -0
  130. package/dist/main.js +16 -0
  131. package/dist/main.js.map +1 -0
  132. package/dist/openmrs-esm-patient-notes-app.js +6 -0
  133. package/dist/openmrs-esm-patient-notes-app.js.buildmanifest.json +1760 -0
  134. package/dist/openmrs-esm-patient-notes-app.js.map +1 -0
  135. package/dist/routes.json +1 -0
  136. package/package.json +58 -0
  137. package/rspack.config.js +1 -0
  138. package/src/config-schema.ts +28 -0
  139. package/src/dashboard.meta.ts +7 -0
  140. package/src/declarations.d.ts +4 -0
  141. package/src/index.ts +45 -0
  142. package/src/notes/notes-overview.extension.tsx +74 -0
  143. package/src/notes/notes-overview.scss +40 -0
  144. package/src/notes/notes-overview.test.tsx +101 -0
  145. package/src/notes/paginated-notes.component.tsx +182 -0
  146. package/src/notes/visit-note-config-schema.ts +38 -0
  147. package/src/notes/visit-notes-form.scss +219 -0
  148. package/src/notes/visit-notes-form.test.tsx +523 -0
  149. package/src/notes/visit-notes-form.workspace.tsx +853 -0
  150. package/src/notes/visit-notes.resource.ts +113 -0
  151. package/src/routes.json +48 -0
  152. package/src/sticky-notes/delete-sticky-note-button.component.tsx +39 -0
  153. package/src/sticky-notes/delete-sticky-note-button.scss +13 -0
  154. package/src/sticky-notes/delete-sticky-note.modal.test.tsx +72 -0
  155. package/src/sticky-notes/delete-sticky-note.modal.tsx +62 -0
  156. package/src/sticky-notes/edit-sticky-note-button.component.tsx +20 -0
  157. package/src/sticky-notes/sticky-note-header-button.component.tsx +100 -0
  158. package/src/sticky-notes/sticky-note-header-button.scss +38 -0
  159. package/src/sticky-notes/sticky-note-header-button.test.tsx +182 -0
  160. package/src/sticky-notes/sticky-note-panel.component.tsx +88 -0
  161. package/src/sticky-notes/sticky-note-panel.scss +54 -0
  162. package/src/sticky-notes/sticky-note-panel.test.tsx +66 -0
  163. package/src/sticky-notes/sticky-note.modal.scss +3 -0
  164. package/src/sticky-notes/sticky-note.modal.test.tsx +115 -0
  165. package/src/sticky-notes/sticky-note.modal.tsx +93 -0
  166. package/src/sticky-notes/sticky-note.resource.test.ts +24 -0
  167. package/src/sticky-notes/sticky-note.resource.ts +82 -0
  168. package/src/sticky-notes/utils.test.ts +36 -0
  169. package/src/sticky-notes/utils.ts +9 -0
  170. package/src/types/index.ts +203 -0
  171. package/src/visit-note-action-button.extension.tsx +28 -0
  172. package/src/visit-note-action-button.test.tsx +42 -0
  173. package/translations/am.json +55 -0
  174. package/translations/ar.json +55 -0
  175. package/translations/ar_SY.json +55 -0
  176. package/translations/bn.json +55 -0
  177. package/translations/cs.json +55 -0
  178. package/translations/de.json +55 -0
  179. package/translations/en.json +55 -0
  180. package/translations/en_US.json +55 -0
  181. package/translations/es.json +55 -0
  182. package/translations/es_MX.json +55 -0
  183. package/translations/fr.json +55 -0
  184. package/translations/he.json +55 -0
  185. package/translations/hi.json +55 -0
  186. package/translations/hi_IN.json +55 -0
  187. package/translations/id.json +55 -0
  188. package/translations/it.json +55 -0
  189. package/translations/ka.json +55 -0
  190. package/translations/km.json +55 -0
  191. package/translations/ku.json +55 -0
  192. package/translations/ky.json +55 -0
  193. package/translations/lg.json +55 -0
  194. package/translations/ne.json +55 -0
  195. package/translations/pl.json +55 -0
  196. package/translations/pt.json +55 -0
  197. package/translations/pt_BR.json +55 -0
  198. package/translations/qu.json +55 -0
  199. package/translations/ro_RO.json +55 -0
  200. package/translations/ru_RU.json +55 -0
  201. package/translations/si.json +55 -0
  202. package/translations/sq.json +55 -0
  203. package/translations/sw.json +55 -0
  204. package/translations/sw_KE.json +55 -0
  205. package/translations/tr.json +55 -0
  206. package/translations/tr_TR.json +55 -0
  207. package/translations/uk.json +55 -0
  208. package/translations/uz.json +55 -0
  209. package/translations/uz@Latn.json +55 -0
  210. package/translations/uz_UZ.json +55 -0
  211. package/translations/vi.json +55 -0
  212. package/translations/zh.json +55 -0
  213. package/translations/zh_CN.json +55 -0
  214. package/translations/zh_TW.json +55 -0
  215. package/tsconfig.json +4 -0
  216. package/vitest.config.ts +4 -0
@@ -0,0 +1,182 @@
1
+ import React, { useState } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import classNames from 'classnames';
4
+ import {
5
+ DataTable,
6
+ type DataTableCell,
7
+ type DataTableSortState,
8
+ Table,
9
+ TableCell,
10
+ TableContainer,
11
+ TableBody,
12
+ TableHead,
13
+ TableHeader,
14
+ TableRow,
15
+ TableExpandHeader,
16
+ TableExpandRow,
17
+ TableExpandedRow,
18
+ } from '@carbon/react';
19
+ import { orderBy } from 'lodash-es';
20
+ import { formatDate, formatTime, parseDate, useLayoutType, usePagination } from '@openmrs/esm-framework';
21
+ import { PatientChartPagination } from '@openmrs/esm-patient-common-lib';
22
+ import type { PatientNote } from '../types';
23
+ import styles from './notes-overview.scss';
24
+
25
+ interface PaginatedNotes {
26
+ notes: Array<PatientNote>;
27
+ pageSize: number;
28
+ pageUrl?: string;
29
+ urlLabel?: string;
30
+ }
31
+
32
+ const PaginatedNotes: React.FC<PaginatedNotes> = ({ notes, pageSize, pageUrl, urlLabel }) => {
33
+ const { t } = useTranslation();
34
+ const layout = useLayoutType();
35
+ const isTablet = layout === 'tablet';
36
+
37
+ const [sortParams, setSortParams] = useState({ key: '', order: 'none' });
38
+
39
+ const tableHeaders = [
40
+ {
41
+ key: 'encounterDate',
42
+ header: t('date', 'Date'),
43
+ },
44
+ {
45
+ key: 'diagnoses',
46
+ header: t('diagnoses', 'Diagnoses'),
47
+ },
48
+ ];
49
+
50
+ const sortDate = (myArray, order) =>
51
+ order === 'ASC'
52
+ ? orderBy(myArray, [(obj) => new Date(obj.encounterDate).getTime()], ['desc'])
53
+ : orderBy(myArray, [(obj) => new Date(obj.encounterDate).getTime()], ['asc']);
54
+
55
+ const { key, order } = sortParams;
56
+
57
+ const sortedData =
58
+ key === 'encounterDate'
59
+ ? sortDate(notes, order)
60
+ : order === 'DESC'
61
+ ? orderBy(notes, [key], ['desc'])
62
+ : orderBy(notes, [key], ['asc']);
63
+
64
+ function customSortRow(
65
+ cellA,
66
+ cellB,
67
+ {
68
+ sortDirection,
69
+ sortStates,
70
+ }: {
71
+ sortDirection: string;
72
+ sortStates: any;
73
+ locale: string;
74
+ },
75
+ ) {
76
+ const key = Object.keys(sortStates).find((k) => sortStates[k] === sortDirection);
77
+ setSortParams({ key: key ?? '', order: sortDirection });
78
+ return 0;
79
+ }
80
+
81
+ const { results: paginatedNotes, goTo, currentPage } = usePagination(sortedData, pageSize);
82
+ const tableRows = React.useMemo(
83
+ () =>
84
+ paginatedNotes?.map((note) => ({
85
+ ...note,
86
+ id: `${note.id}`,
87
+ encounterDate: formatDate(parseDate(note.encounterDate), { mode: 'wide' }),
88
+ diagnoses: note.diagnoses ? note.diagnoses : '--',
89
+ })),
90
+ [paginatedNotes],
91
+ );
92
+
93
+ return (
94
+ <>
95
+ <DataTable
96
+ rows={tableRows}
97
+ sortRow={customSortRow}
98
+ headers={tableHeaders}
99
+ isSortable
100
+ size={isTablet ? 'lg' : 'sm'}
101
+ useZebraStyles
102
+ >
103
+ {({
104
+ getExpandedRowProps,
105
+ getExpandHeaderProps,
106
+ getHeaderProps,
107
+ getRowProps,
108
+ getTableContainerProps,
109
+ getTableProps,
110
+ headers,
111
+ rows,
112
+ }) => (
113
+ <TableContainer {...getTableContainerProps()}>
114
+ <Table {...getTableProps()}>
115
+ <TableHead>
116
+ <TableRow>
117
+ <TableExpandHeader enableToggle {...getExpandHeaderProps()} />
118
+ {headers.map((header, i) => (
119
+ <TableHeader
120
+ key={i}
121
+ className={classNames(styles.productiveHeading01, styles.text02)}
122
+ {...getHeaderProps({
123
+ header,
124
+ })}
125
+ >
126
+ {header.header}
127
+ </TableHeader>
128
+ ))}
129
+ </TableRow>
130
+ </TableHead>
131
+ <TableBody>
132
+ {rows.map((row, i) => (
133
+ <React.Fragment key={row.id}>
134
+ <TableExpandRow {...getRowProps({ row })}>
135
+ {row.cells.map((cell) => (
136
+ <TableCell key={cell.id}>{cell.value}</TableCell>
137
+ ))}
138
+ </TableExpandRow>
139
+ {row.isExpanded ? (
140
+ <TableExpandedRow
141
+ className={styles.expandedRow}
142
+ colSpan={headers.length + 1}
143
+ {...getExpandedRowProps({ row })}
144
+ >
145
+ <div className={styles.container} key={i}>
146
+ {tableRows?.[i]?.encounterNote ? (
147
+ <div className={styles.copy}>
148
+ <span className={styles.content}>{tableRows?.[i]?.encounterNote}</span>
149
+ <span className={styles.metadata}>
150
+ {formatTime(new Date(tableRows?.[i]?.encounterNoteRecordedAt))} &middot;{' '}
151
+ {tableRows?.[i]?.encounterProvider}, {tableRows?.[i]?.encounterProviderRole}
152
+ </span>
153
+ </div>
154
+ ) : (
155
+ <span className={styles.copy}>{t('noVisitNoteToDisplay', 'No visit note to display')}</span>
156
+ )}
157
+ </div>
158
+ </TableExpandedRow>
159
+ ) : (
160
+ <TableExpandedRow className={styles.hiddenRow} colSpan={headers.length + 2} />
161
+ )}
162
+ </React.Fragment>
163
+ ))}
164
+ </TableBody>
165
+ </Table>
166
+ </TableContainer>
167
+ )}
168
+ </DataTable>
169
+ <PatientChartPagination
170
+ pageNumber={currentPage}
171
+ totalItems={notes.length}
172
+ currentItems={paginatedNotes.length}
173
+ pageSize={pageSize}
174
+ onPageNumberChange={({ page }) => goTo(page)}
175
+ dashboardLinkUrl={pageUrl}
176
+ dashboardLinkLabel={urlLabel}
177
+ />
178
+ </>
179
+ );
180
+ };
181
+
182
+ export default PaginatedNotes;
@@ -0,0 +1,38 @@
1
+ import { Type } from '@openmrs/esm-framework';
2
+
3
+ export default {
4
+ clinicianEncounterRole: {
5
+ _type: Type.UUID,
6
+ _default: '240b26f9-dd88-4172-823d-4a8bfeb7841f',
7
+ _description: 'Doctor or Nurse who is the primary provider for an encounter, and will sign the note',
8
+ },
9
+ visitDiagnosesConceptUuid: {
10
+ _type: Type.ConceptUuid,
11
+ _default: '159947AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
12
+ _description: 'The set of diagnoses that were either addressed or diagnosed during the current visit',
13
+ },
14
+ encounterNoteTextConceptUuid: {
15
+ _type: Type.ConceptUuid,
16
+ _default: '162169AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
17
+ _description: 'Free text note field intended to capture unstructured description of the patient encounter',
18
+ },
19
+ encounterTypeUuid: {
20
+ _type: Type.UUID,
21
+ _default: 'd7151f82-c1f3-4152-a605-2f9ea7414a79',
22
+ _description:
23
+ 'Encounter where a full or abbreviated examination is done, usually leading to a presumptive or confirmed diagnosis, recorded by the examining clinician.',
24
+ },
25
+ formConceptUuid: {
26
+ _type: Type.UUID,
27
+ _default: 'c75f120a-04ec-11e3-8780-2b40bef9a44b',
28
+ _description: 'The UUID of the Visit Note form to be associated with visit note encounters',
29
+ },
30
+ };
31
+
32
+ export interface VisitNoteConfigObject {
33
+ clinicianEncounterRole: string;
34
+ encounterNoteTextConceptUuid: string;
35
+ encounterTypeUuid: string;
36
+ formConceptUuid: string;
37
+ visitDiagnosesConceptUuid: string;
38
+ }
@@ -0,0 +1,219 @@
1
+ @use '@carbon/colors';
2
+ @use '@carbon/layout';
3
+ @use '@carbon/type';
4
+
5
+ .heading {
6
+ @include type.type-style('heading-03');
7
+ margin-bottom: layout.$spacing-03;
8
+ }
9
+
10
+ .columnLabel {
11
+ @include type.type-style('heading-compact-02');
12
+ color: colors.$gray-70;
13
+ }
14
+
15
+ .diagnosis {
16
+ padding: layout.$spacing-04;
17
+ border-top: 0.0625rem solid colors.$gray-20;
18
+ }
19
+
20
+ .diagnosis:first-of-type {
21
+ border-top: none;
22
+ }
23
+
24
+ .diagnosis:last-of-type {
25
+ border-bottom: none;
26
+ }
27
+
28
+ .diagnosisList {
29
+ background-color: white;
30
+ max-height: 13.5rem;
31
+ overflow-y: auto;
32
+ border: 1px solid colors.$gray-20;
33
+ }
34
+
35
+ .diagnosisList li:hover {
36
+ background-color: colors.$gray-20;
37
+ }
38
+
39
+ .diagnosesText {
40
+ @include type.type-style('body-compact-01');
41
+ color: colors.$gray-70;
42
+ margin-bottom: layout.$spacing-05;
43
+ }
44
+
45
+ .emptyResults {
46
+ @include type.type-style('body-compact-01');
47
+ color: colors.$gray-70;
48
+ min-height: layout.$spacing-05;
49
+ }
50
+
51
+ .imgUploadHelperText {
52
+ @include type.type-style('body-compact-01');
53
+ color: colors.$gray-70;
54
+ }
55
+
56
+ .imgThumbnailContainer {
57
+ height: 7rem;
58
+ width: 7rem;
59
+ }
60
+
61
+ .imgThumbnail {
62
+ width: 100%;
63
+ height: 100%;
64
+ object-fit: cover;
65
+ }
66
+
67
+ .imgThumbnailGrid {
68
+ display: grid;
69
+ grid-template-columns: repeat(auto-fill, 7rem);
70
+ gap: layout.$spacing-05;
71
+ margin-top: layout.$spacing-05;
72
+ }
73
+
74
+ .imgThumbnailItem {
75
+ display: flex;
76
+ flex-direction: column;
77
+ align-items: center;
78
+ position: relative;
79
+ }
80
+
81
+ .removeButton {
82
+ position: absolute;
83
+ top: layout.$spacing-02;
84
+ right: layout.$spacing-02;
85
+ background-color: transparent;
86
+ border: none;
87
+ padding: 0;
88
+ cursor: pointer;
89
+ padding-block-start: 0;
90
+ --cds-layout-size-height-local: 0;
91
+ }
92
+
93
+ .closeIcon {
94
+ fill: white !important;
95
+ }
96
+
97
+ .button {
98
+ height: layout.$spacing-10;
99
+ display: flex;
100
+ align-content: flex-start;
101
+ align-items: baseline;
102
+ min-width: 50%;
103
+ }
104
+
105
+ .spinner {
106
+ &:global(.cds--inline-loading) {
107
+ min-height: layout.$spacing-05;
108
+ }
109
+ }
110
+
111
+ .tablet {
112
+ padding: layout.$spacing-06 layout.$spacing-05;
113
+ background-color: white;
114
+ }
115
+
116
+ .desktop {
117
+ padding: 0;
118
+ }
119
+
120
+ .headerGridRow {
121
+ border-bottom: 0.0625rem solid colors.$gray-20;
122
+ margin: 0;
123
+ }
124
+
125
+ .dataGridRow {
126
+ display: grid;
127
+ grid-template-columns: 50% 10% 1fr;
128
+ margin: layout.$spacing-03 layout.$spacing-05;
129
+ }
130
+
131
+ .formContainer {
132
+ margin: layout.$spacing-05;
133
+ flex: 1;
134
+ }
135
+
136
+ .form {
137
+ display: flex;
138
+ flex-direction: column;
139
+ justify-content: space-between;
140
+ height: 100%;
141
+ }
142
+
143
+ .grid {
144
+ margin: 0;
145
+ padding: 0;
146
+ }
147
+
148
+ .row {
149
+ margin: layout.$spacing-03 0 layout.$spacing-08;
150
+ }
151
+
152
+ .skeleton {
153
+ margin-top: layout.$spacing-02;
154
+ height: layout.$spacing-07;
155
+ }
156
+
157
+ .errorMessage {
158
+ color: colors.$red-60;
159
+ margin-top: layout.$spacing-03;
160
+ }
161
+
162
+ .diagnoserrorOutline {
163
+ :global(.cds--search-input):focus {
164
+ outline: 2.5px solid colors.$red-60;
165
+ }
166
+
167
+ :global(.cds--search-magnifier) {
168
+ svg {
169
+ fill: colors.$red-60;
170
+ }
171
+ }
172
+ }
173
+
174
+ .errorMessage {
175
+ @include type.type-style('label-02');
176
+ color: colors.$red-60;
177
+ }
178
+
179
+ :global(.omrs-breakpoint-lt-desktop) {
180
+ .form {
181
+ height: 100%;
182
+ }
183
+
184
+ .row {
185
+ display: flex;
186
+ gap: layout.$spacing-10;
187
+
188
+ :global(.cds--col-sm-1) {
189
+ flex-basis: 30%;
190
+ min-width: 8rem;
191
+ text-align: left;
192
+ }
193
+
194
+ :global(.cds--col-sm-3) {
195
+ flex-basis: 70%;
196
+ }
197
+ }
198
+
199
+ .diagnosis {
200
+ padding: layout.$spacing-05 layout.$spacing-04;
201
+ }
202
+
203
+ .skeleton {
204
+ height: layout.$spacing-08;
205
+ }
206
+ }
207
+
208
+ .errorNotification {
209
+ margin-top: layout.$spacing-02;
210
+ }
211
+
212
+ .tag {
213
+ margin-right: layout.$spacing-03;
214
+ margin-left: 0;
215
+ }
216
+
217
+ .uploadButton {
218
+ margin-top: layout.$spacing-05;
219
+ }