@kenyaemr/esm-care-panel-app 5.4.2-pre.2202 → 5.4.2-pre.2223

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 (103) hide show
  1. package/.turbo/turbo-build.log +30 -192
  2. package/dist/144.js +2 -0
  3. package/dist/144.js.map +1 -0
  4. package/dist/174.js +1 -0
  5. package/dist/174.js.map +1 -0
  6. package/dist/216.js +2 -0
  7. package/dist/216.js.map +1 -0
  8. package/dist/300.js +1 -0
  9. package/dist/41.js +2 -0
  10. package/dist/41.js.map +1 -0
  11. package/dist/470.js +1 -0
  12. package/dist/470.js.map +1 -0
  13. package/dist/474.js +2 -0
  14. package/dist/474.js.map +1 -0
  15. package/dist/495.js +1 -0
  16. package/dist/{372.js.map → 495.js.map} +1 -1
  17. package/dist/537.js +1 -0
  18. package/dist/537.js.map +1 -0
  19. package/dist/58.js +1 -0
  20. package/dist/58.js.map +1 -0
  21. package/dist/613.js +2 -0
  22. package/dist/613.js.map +1 -0
  23. package/dist/684.js +1 -0
  24. package/dist/684.js.map +1 -0
  25. package/dist/837.js +2 -0
  26. package/dist/837.js.LICENSE.txt +29 -0
  27. package/dist/837.js.map +1 -0
  28. package/dist/838.js +1 -0
  29. package/dist/838.js.map +1 -0
  30. package/dist/858.js +2 -0
  31. package/dist/858.js.map +1 -0
  32. package/dist/876.js +1 -0
  33. package/dist/876.js.map +1 -0
  34. package/dist/89.js +1 -0
  35. package/dist/89.js.map +1 -0
  36. package/dist/907.js +1 -0
  37. package/dist/907.js.map +1 -0
  38. package/dist/913.js +2 -0
  39. package/dist/{591.js.map → 913.js.map} +1 -1
  40. package/dist/kenyaemr-esm-care-panel-app.js +1 -1
  41. package/dist/kenyaemr-esm-care-panel-app.js.buildmanifest.json +289 -97
  42. package/dist/kenyaemr-esm-care-panel-app.js.map +1 -1
  43. package/dist/main.js +1 -1
  44. package/dist/main.js.map +1 -1
  45. package/dist/routes.json +1 -1
  46. package/package.json +4 -1
  47. package/src/care-panel/care-panel.component.test.tsx +3 -3
  48. package/src/care-panel/care-panel.component.tsx +24 -33
  49. package/src/care-panel/care-panel.scss +3 -2
  50. package/src/care-panel-dashboard/care-panel-dashboard.component.tsx +4 -11
  51. package/src/care-panel-dashboard/care-panel-dashboard.scss +1 -1
  52. package/src/care-programs/care-programs.component.tsx +3 -9
  53. package/src/care-programs/care-programs.test.tsx +5 -5
  54. package/src/declarations.d.ts +0 -13
  55. package/src/index.ts +9 -1
  56. package/src/patient-discharge/discharge-workspace-siderail.component.tsx +23 -0
  57. package/src/patient-discharge/patient-discharge.resource.tsx +123 -0
  58. package/src/patient-discharge/patient-discharge.workspace.test.tsx +160 -0
  59. package/src/patient-discharge/patient-discharge.workspace.tsx +93 -0
  60. package/src/patient-summary/patient-summary.component.tsx +1 -1
  61. package/src/patient-summary/patient-summary.scss +1 -1
  62. package/src/program-enrollment/program-enrollment.component.tsx +15 -14
  63. package/src/program-enrollment/program-enrollment.scss +3 -3
  64. package/src/program-summary/program-summary.component.tsx +1 -1
  65. package/src/program-summary/program-summary.scss +1 -1
  66. package/src/regimen/regimen-history.component.tsx +1 -1
  67. package/src/regimen/regimen-history.scss +4 -4
  68. package/src/regimen-editor/regimen-form.component.tsx +6 -6
  69. package/src/regimen-editor/standard-regimen.scss +2 -2
  70. package/src/routes.json +15 -0
  71. package/src/types/index.ts +32 -0
  72. package/translations/en.json +1 -0
  73. package/dist/130.js +0 -2
  74. package/dist/130.js.LICENSE.txt +0 -7
  75. package/dist/130.js.map +0 -1
  76. package/dist/2.js +0 -1
  77. package/dist/2.js.map +0 -1
  78. package/dist/292.js +0 -2
  79. package/dist/292.js.map +0 -1
  80. package/dist/316.js +0 -2
  81. package/dist/316.js.map +0 -1
  82. package/dist/346.js +0 -1
  83. package/dist/346.js.map +0 -1
  84. package/dist/372.js +0 -1
  85. package/dist/373.js +0 -2
  86. package/dist/373.js.map +0 -1
  87. package/dist/446.js +0 -2
  88. package/dist/446.js.map +0 -1
  89. package/dist/574.js +0 -1
  90. package/dist/589.js +0 -1
  91. package/dist/589.js.map +0 -1
  92. package/dist/591.js +0 -2
  93. package/dist/698.js +0 -2
  94. package/dist/698.js.map +0 -1
  95. package/dist/784.js +0 -2
  96. package/dist/784.js.map +0 -1
  97. /package/dist/{316.js.LICENSE.txt → 144.js.LICENSE.txt} +0 -0
  98. /package/dist/{446.js.LICENSE.txt → 216.js.LICENSE.txt} +0 -0
  99. /package/dist/{292.js.LICENSE.txt → 41.js.LICENSE.txt} +0 -0
  100. /package/dist/{784.js.LICENSE.txt → 474.js.LICENSE.txt} +0 -0
  101. /package/dist/{373.js.LICENSE.txt → 613.js.LICENSE.txt} +0 -0
  102. /package/dist/{698.js.LICENSE.txt → 858.js.LICENSE.txt} +0 -0
  103. /package/dist/{591.js.LICENSE.txt → 913.js.LICENSE.txt} +0 -0
@@ -0,0 +1,93 @@
1
+ import React, { useMemo } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { InlineLoading, InlineNotification } from '@carbon/react';
4
+ import {
5
+ DefaultWorkspaceProps,
6
+ Encounter,
7
+ ExtensionSlot,
8
+ useEmrConfiguration,
9
+ usePatient,
10
+ } from '@openmrs/esm-framework';
11
+ import { useVisitOrOfflineVisit } from '@openmrs/esm-patient-common-lib';
12
+ import { usePatientDischarge } from './patient-discharge.resource';
13
+ import { WardPatient } from '../types';
14
+
15
+ const IN_PATIENT_DISCHARGE_FORM_UUID = '98a781d2-b777-4756-b4c9-c9b0deb3483c';
16
+
17
+ type PatientDischargeWorkspaceProps = DefaultWorkspaceProps & {
18
+ readonly patientUuid: string;
19
+ readonly wardPatient: WardPatient;
20
+ };
21
+
22
+ export function PatientDischargeWorkspace(props: PatientDischargeWorkspaceProps) {
23
+ const { t } = useTranslation();
24
+ const { patientUuid, closeWorkspace, closeWorkspaceWithSavedChanges, wardPatient, promptBeforeClosing } = props;
25
+
26
+ const { isLoading: isLoadingVisit, currentVisit, error: visitError } = useVisitOrOfflineVisit(patientUuid);
27
+ const { patient, isLoading: isLoadingPatient, error: patientError } = usePatient(patientUuid);
28
+ const { emrConfiguration, isLoadingEmrConfiguration, errorFetchingEmrConfiguration } = useEmrConfiguration();
29
+
30
+ const { handleDischarge } = usePatientDischarge();
31
+
32
+ const encounterUuid = useMemo(() => currentVisit?.encounters?.[0]?.uuid ?? null, [currentVisit?.encounters]);
33
+
34
+ const state = useMemo<Record<string, unknown>>(
35
+ () => ({
36
+ view: 'form',
37
+ formUuid: IN_PATIENT_DISCHARGE_FORM_UUID,
38
+ visitUuid: currentVisit?.uuid ?? null,
39
+ visitTypeUuid: currentVisit?.visitType?.uuid ?? null,
40
+ patientUuid: patientUuid ?? null,
41
+ patient,
42
+ encounterUuid,
43
+ closeWorkspaceWithSavedChanges,
44
+ closeWorkspace,
45
+ promptBeforeClosing,
46
+ handlePostResponse: (encounter: Encounter) =>
47
+ handleDischarge(encounter, wardPatient, emrConfiguration as Record<string, unknown>, currentVisit),
48
+ }),
49
+ [
50
+ patientUuid,
51
+ currentVisit,
52
+ encounterUuid,
53
+ patient,
54
+ closeWorkspace,
55
+ promptBeforeClosing,
56
+ emrConfiguration,
57
+ closeWorkspaceWithSavedChanges,
58
+ handleDischarge,
59
+ ],
60
+ );
61
+
62
+ const isLoading = isLoadingVisit || isLoadingPatient || isLoadingEmrConfiguration;
63
+ const error = visitError || patientError || errorFetchingEmrConfiguration;
64
+
65
+ if (isLoading) {
66
+ return <InlineLoading description={t('loading', 'Loading')} iconDescription={t('loading', 'Loading data...')} />;
67
+ }
68
+
69
+ if (error) {
70
+ return (
71
+ <InlineNotification
72
+ aria-label={t('error', 'Error')}
73
+ kind="error"
74
+ onClose={() => {}}
75
+ onCloseButtonClick={() => {}}
76
+ statusIconDescription="notification"
77
+ subtitle={t('errorLoadingPatientWorkspace', 'Error loading patient workspace {{errorMessage}}', {
78
+ errorMessage: error?.message,
79
+ })}
80
+ title={t('error', 'Error')}
81
+ />
82
+ );
83
+ }
84
+
85
+ return (
86
+ <div>
87
+ <ExtensionSlot name="visit-context-header-slot" state={{ patientUuid }} />
88
+ {patient && <ExtensionSlot name="form-widget-slot" state={state} />}
89
+ </div>
90
+ );
91
+ }
92
+
93
+ export default PatientDischargeWorkspace;
@@ -38,7 +38,7 @@ const PatientSummary: React.FC<PatientSummaryProps> = ({ patientUuid }) => {
38
38
  }, [showPrintComponent, handlePrint]);
39
39
 
40
40
  if (isLoading) {
41
- return <StructuredListSkeleton role="progressbar" />;
41
+ return <StructuredListSkeleton />;
42
42
  }
43
43
  if (error) {
44
44
  return <span>{t('errorPatientSummary', 'Error loading patient summary')}</span>;
@@ -2,7 +2,7 @@
2
2
  @use '@carbon/styles/scss/spacing';
3
3
  @use '@carbon/colors';
4
4
  @use '@carbon/layout';
5
- @import '~@openmrs/esm-styleguide/src/vars';
5
+ @use '~@openmrs/esm-styleguide/src/vars' as *;
6
6
 
7
7
  .bodyContainer {
8
8
  margin: spacing.$spacing-03;
@@ -1,4 +1,4 @@
1
- import React, { useMemo } from 'react';
1
+ import React, { ReactNode, useMemo } from 'react';
2
2
  import { useTranslation } from 'react-i18next';
3
3
  import {
4
4
  Tile,
@@ -12,14 +12,15 @@ import {
12
12
  OverflowMenu,
13
13
  OverflowMenuItem,
14
14
  TableContainer,
15
+ DataTableHeader,
15
16
  } from '@carbon/react';
16
17
  import styles from './program-enrollment.scss';
17
18
  import isEmpty from 'lodash/isEmpty';
18
19
  import dayjs from 'dayjs';
19
- import { formatDate, restBaseUrl, useVisit } from '@openmrs/esm-framework';
20
+ import { formatDate, launchWorkspace, restBaseUrl, useVisit } from '@openmrs/esm-framework';
20
21
  import orderBy from 'lodash/orderBy';
21
22
  import { mutate } from 'swr';
22
- import { getPatientUuidFromStore, launchPatientWorkspace } from '@openmrs/esm-patient-common-lib';
23
+ import { getPatientUuidFromStore } from '@openmrs/esm-patient-common-lib';
23
24
  import { useHeiOutcome } from '../hooks/useHeiOutcome';
24
25
 
25
26
  export interface ProgramEnrollmentProps {
@@ -68,11 +69,11 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
68
69
  const { currentVisit } = useVisit(getPatientUuidFromStore());
69
70
  const { heiOutcome } = useHeiOutcome(currentVisit?.patient?.uuid);
70
71
  const orderedEnrollments = orderBy(enrollments, 'dateEnrolled', 'desc');
71
- const headers = useMemo(
72
+ const headers: Array<DataTableHeader> = useMemo(
72
73
  () =>
73
74
  Object.entries(programDetailsMap[programName] ?? { ...shareObjProperty }).map(([key, value]) => ({
74
75
  key,
75
- header: value,
76
+ header: value as ReactNode,
76
77
  })),
77
78
  [programName],
78
79
  );
@@ -104,7 +105,7 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
104
105
  };
105
106
 
106
107
  const handleDiscontinue = (enrollment) => {
107
- launchPatientWorkspace('patient-form-entry-workspace', {
108
+ launchWorkspace('patient-form-entry-workspace', {
108
109
  workspaceTitle: enrollment?.discontinuationFormName,
109
110
  mutateForm: handleMutation,
110
111
  formInfo: {
@@ -112,15 +113,15 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
112
113
  visitTypeUuid: currentVisit?.visitType?.uuid ?? '',
113
114
  visitUuid: currentVisit?.uuid ?? '',
114
115
  formUuid: enrollment?.discontinuationFormUuid,
115
- additionalProps:
116
- { enrollmentDetails: { dateEnrolled: new Date(enrollment.dateEnrolled), uuid: enrollment.enrollmentUuid } } ??
117
- {},
116
+ additionalProps: {
117
+ enrollmentDetails: { dateEnrolled: new Date(enrollment.dateEnrolled), uuid: enrollment.enrollmentUuid },
118
+ },
118
119
  },
119
120
  });
120
121
  };
121
122
 
122
123
  const handleHeiOutcome = () => {
123
- launchPatientWorkspace('patient-form-entry-workspace', {
124
+ launchWorkspace('patient-form-entry-workspace', {
124
125
  workspaceTitle: 'HEI Outcome',
125
126
  mutateForm: () => {
126
127
  mutate((key) => true, undefined, {
@@ -138,7 +139,7 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
138
139
  };
139
140
 
140
141
  const handleEditEnrollment = (enrollment) => {
141
- launchPatientWorkspace('patient-form-entry-workspace', {
142
+ launchWorkspace('patient-form-entry-workspace', {
142
143
  workspaceTitle: enrollment?.enrollmentFormName,
143
144
  mutateForm: () => {
144
145
  mutate(
@@ -153,9 +154,9 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
153
154
  formUuid: enrollment?.enrollmentFormUuid,
154
155
  visitTypeUuid: currentVisit?.visitType?.uuid ?? '',
155
156
  visitUuid: currentVisit?.uuid ?? '',
156
- additionalProps:
157
- { enrollmentDetails: { dateEnrolled: new Date(enrollment.dateEnrolled), uuid: enrollment.enrollmentUuid } } ??
158
- {},
157
+ additionalProps: {
158
+ enrollmentDetails: { dateEnrolled: new Date(enrollment.dateEnrolled), uuid: enrollment.enrollmentUuid },
159
+ },
159
160
  },
160
161
  });
161
162
  };
@@ -1,13 +1,13 @@
1
1
  @use '@carbon/styles/scss/type';
2
2
  @use '@carbon/styles/scss/spacing';
3
3
  @use '@carbon/colors';
4
- @import '~@openmrs/esm-styleguide/src/vars';
4
+ @use '~@openmrs/esm-styleguide/src/vars' as *;
5
5
 
6
6
  .desktopHeading {
7
7
  h4 {
8
8
  @include type.type-style('heading-compact-02');
9
9
  color: $text-02;
10
- background-color: $ui-background;
10
+ background-color: colors.$white;
11
11
  padding-top: spacing.$spacing-02;
12
12
  }
13
13
  }
@@ -25,7 +25,7 @@
25
25
  justify-content: space-between;
26
26
  text-align: left;
27
27
  text-transform: capitalize;
28
- background-color: $ui-background;
28
+ background-color: colors.$white;
29
29
  padding-top: spacing.$spacing-02;
30
30
  padding-bottom: spacing.$spacing-03;
31
31
  }
@@ -18,7 +18,7 @@ const ProgramSummary: React.FC<ProgramSummaryProps> = ({ patientUuid, programNam
18
18
 
19
19
  const isTablet = useLayoutType() == 'tablet';
20
20
  if (isLoading) {
21
- return <StructuredListSkeleton role="progressbar" />;
21
+ return <StructuredListSkeleton />;
22
22
  }
23
23
  if (isError) {
24
24
  return <span>{t('errorProgramSummary', 'Error loading HIV summary')}</span>;
@@ -1,7 +1,7 @@
1
1
  @use '@carbon/styles/scss/type';
2
2
  @use '@carbon/styles/scss/spacing';
3
3
  @use '@carbon/colors';
4
- @import '~@openmrs/esm-styleguide/src/vars';
4
+ @use '~@openmrs/esm-styleguide/src/vars' as *;
5
5
 
6
6
  .desktopHeading {
7
7
  h4 {
@@ -25,7 +25,7 @@ const RegimenHistory: React.FC<RegimenHistoryProps> = ({ patientUuid, category }
25
25
  const { regimen, isLoading, error } = useRegimenHistory(patientUuid, RegimenType[category]);
26
26
 
27
27
  if (isLoading) {
28
- return <StructuredListSkeleton role="progressbar" />;
28
+ return <StructuredListSkeleton />;
29
29
  }
30
30
 
31
31
  if (error) {
@@ -1,7 +1,7 @@
1
1
  @use '@carbon/styles/scss/type';
2
2
  @use '@carbon/styles/scss/spacing';
3
3
  @use '@carbon/colors';
4
- @import '~@openmrs/esm-styleguide/src/vars';
4
+ @use '~@openmrs/esm-styleguide/src/vars' as *;
5
5
 
6
6
  .bodyShort01 {
7
7
  @include type.type-style('body-compact-01');
@@ -11,7 +11,7 @@
11
11
  h4 {
12
12
  @include type.type-style('heading-compact-02');
13
13
  color: $text-02;
14
- background-color: $ui-background;
14
+ background-color: colors.$white;
15
15
  padding-top: spacing.$spacing-02;
16
16
  }
17
17
  }
@@ -19,7 +19,7 @@
19
19
  .tabletHeading {
20
20
  text-align: left;
21
21
  text-transform: capitalize;
22
- background-color: $ui-background;
22
+ background-color: colors.$white;
23
23
  padding-top: spacing.$spacing-02;
24
24
  }
25
25
  .structuredList {
@@ -36,5 +36,5 @@
36
36
  :global(.cds--structured-list-td) {
37
37
  padding: 0.2rem 0.2rem 0.5rem;
38
38
  }
39
- background-color: $ui-background;
39
+ background-color: colors.$white;
40
40
  }
@@ -336,8 +336,6 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
336
336
  <DatePicker
337
337
  dateFormat="d/m/Y"
338
338
  datePickerType="single"
339
- id="regimenDate"
340
- style={{ paddingBottom: '1rem' }}
341
339
  maxDate={new Date().toISOString()}
342
340
  onChange={([date]) => setVisitDate(date)}
343
341
  value={visitDate}>
@@ -364,12 +362,12 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
364
362
  <RadioButtonGroup
365
363
  className={styles.radioButtonWrapper}
366
364
  name="regimenEvent"
367
- onChange={(uuid) => setRegimenEvent(uuid)}>
365
+ onChange={(uuid) => setRegimenEvent(uuid as string)}>
368
366
  <RadioButton
369
367
  key={'start-regimen'}
370
368
  labelText={t('startRegimen', 'Start')}
371
369
  value={Regimen.startOrRestartConcept}
372
- disabled={lastRegimenEncounter.uuid}
370
+ disabled={!!lastRegimenEncounter.uuid}
373
371
  />
374
372
  <RadioButton
375
373
  key={'restart-regimen'}
@@ -387,7 +385,9 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
387
385
  key={'stop-regimen'}
388
386
  labelText={t('stopRegimen', 'Stop')}
389
387
  value={Regimen.stopRegimenConcept}
390
- disabled={lastRegimenEncounter.endDate || (!lastRegimenEncounter.uuid && !lastRegimenEncounter.endDate)}
388
+ disabled={
389
+ !!lastRegimenEncounter.endDate || (!lastRegimenEncounter.uuid && !lastRegimenEncounter.endDate)
390
+ }
391
391
  />
392
392
  <RadioButton
393
393
  key={'undo-regimen'}
@@ -406,7 +406,7 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
406
406
  <RadioButtonGroup
407
407
  className={styles.radioButtonWrapper}
408
408
  name="regimenType"
409
- onChange={(uuid) => setSelectedRegimenType(uuid)}>
409
+ onChange={(uuid) => setSelectedRegimenType(uuid as string)}>
410
410
  <RadioButton key={'standardUuid'} labelText={'Use standard regimen'} value={'standardUuid'} />
411
411
  <RadioButton
412
412
  key={'nonStandardUuid'}
@@ -1,14 +1,14 @@
1
1
  @use '@carbon/styles/scss/type';
2
2
  @use '@carbon/styles/scss/spacing';
3
3
  @use '@carbon/colors';
4
- @import '~@openmrs/esm-styleguide/src/vars';
4
+ @use '~@openmrs/esm-styleguide/src/vars' as *;
5
5
 
6
6
  .inputContainer {
7
7
  margin: spacing.$spacing-05 0;
8
8
  }
9
9
  .container {
10
10
  margin: spacing.$spacing-05;
11
- background-color: $ui-background;
11
+ background-color: colors.$white;
12
12
 
13
13
  & section {
14
14
  margin: spacing.$spacing-02 spacing.$spacing-05 0;
package/src/routes.json CHANGED
@@ -58,6 +58,11 @@
58
58
  "order": 1,
59
59
  "online": true,
60
60
  "offline": true
61
+ },
62
+ {
63
+ "name": "patient-discharge-side-rail-icon",
64
+ "component": "patientDischargeSideRailIcon",
65
+ "slot": "action-menu-ward-patient-items-slot"
61
66
  }
62
67
  ],
63
68
  "workspaces": [
@@ -69,6 +74,16 @@
69
74
  "canMaximize": true,
70
75
  "canHide": true,
71
76
  "width": "wider"
77
+ },
78
+ {
79
+ "name": "patient-care-discharge-workspace",
80
+ "title": "Patient Discharge",
81
+ "component": "patientDischargeWorkspace",
82
+ "type": "workspace",
83
+ "canMaximize": true,
84
+ "canHide": true,
85
+ "width": "extra-wide",
86
+ "groups": ["ward-patient"]
72
87
  }
73
88
  ]
74
89
  }
@@ -1,3 +1,5 @@
1
+ import { OpenmrsResource, Patient, Visit } from '@openmrs/esm-framework';
2
+
1
3
  type HIVData = {
2
4
  whoStage: number;
3
5
  whoStageDate: string;
@@ -245,3 +247,33 @@ export interface Enrollment {
245
247
  uuid: string;
246
248
  };
247
249
  }
250
+
251
+ export type WardPatient = {
252
+ /**
253
+ * Taken either from the inpatientAdmission object, the inpatientRequest object
254
+ * or the admissionLocation object (which contains the bed)
255
+ */
256
+ patient: Patient;
257
+
258
+ /**
259
+ * Taken either from the inpatientAdmission object, the inpatientRequest object
260
+ * or the admissionLocation object (which contains the bed)
261
+ */
262
+ visit: Visit;
263
+
264
+ /**
265
+ * the bed assigned to the patient. This object is only set if the patient
266
+ * has a bed assigned
267
+ */
268
+ bed: Bed;
269
+ };
270
+
271
+ interface Bed {
272
+ id: number;
273
+ uuid: string;
274
+ bedNumber: string;
275
+ bedType: OpenmrsResource;
276
+ row: number;
277
+ column: number;
278
+ status: OpenmrsResource;
279
+ }
@@ -39,6 +39,7 @@
39
39
  "deleteRegimenModalConfirmationText": "Are you sure you want to delete regimen?",
40
40
  "description": "Description",
41
41
  "discard": "Discard",
42
+ "discharge": "Discharge",
42
43
  "discontinue": "Discontinue",
43
44
  "diseaseClassification": "Disease classification",
44
45
  "drugAllergies": "Drug Allergies",