@kenyaemr/esm-ward-app 8.5.1-pre.52 → 8.5.1-pre.61

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 (116) hide show
  1. package/.turbo/turbo-build.log +30 -20
  2. package/dist/1498.js +1 -1
  3. package/dist/1498.js.LICENSE.txt +65 -0
  4. package/dist/1498.js.map +1 -1
  5. package/dist/1899.js +1 -1
  6. package/dist/1899.js.map +1 -1
  7. package/dist/1917.js +1 -1
  8. package/dist/1917.js.map +1 -1
  9. package/dist/2557.js +1 -1
  10. package/dist/2557.js.map +1 -1
  11. package/dist/2932.js +1 -1
  12. package/dist/3103.js +1 -0
  13. package/dist/3103.js.map +1 -0
  14. package/dist/3104.js +1 -0
  15. package/dist/3365.js +1 -1
  16. package/dist/3737.js +1 -1
  17. package/dist/4224.js +1 -2
  18. package/dist/4224.js.map +1 -1
  19. package/dist/4300.js +1 -1
  20. package/dist/6009.js +1 -1
  21. package/dist/6009.js.map +1 -1
  22. package/dist/6871.js +1 -2
  23. package/dist/6871.js.map +1 -1
  24. package/dist/717.js +1 -0
  25. package/dist/717.js.map +1 -0
  26. package/dist/7179.js +1 -2
  27. package/dist/7179.js.map +1 -1
  28. package/dist/723.js +1 -1
  29. package/dist/723.js.map +1 -0
  30. package/dist/7449.js +1 -1
  31. package/dist/7449.js.map +1 -1
  32. package/dist/7495.js +2 -0
  33. package/dist/7495.js.map +1 -0
  34. package/dist/7524.js +1 -1
  35. package/dist/7524.js.map +1 -1
  36. package/dist/7661.js +1 -1
  37. package/dist/7661.js.map +1 -1
  38. package/dist/7893.js +1 -0
  39. package/dist/7893.js.map +1 -0
  40. package/dist/8130.js +1 -0
  41. package/dist/8130.js.map +1 -0
  42. package/dist/8205.js +1 -1
  43. package/dist/8308.js +1 -1
  44. package/dist/8308.js.map +1 -1
  45. package/dist/8411.js +1 -0
  46. package/dist/8411.js.map +1 -0
  47. package/dist/8501.js +1 -2
  48. package/dist/8501.js.map +1 -1
  49. package/dist/9045.js +1 -1
  50. package/dist/9045.js.map +1 -1
  51. package/dist/9830.js +1 -0
  52. package/dist/9830.js.map +1 -0
  53. package/dist/9876.js +1 -2
  54. package/dist/9876.js.map +1 -1
  55. package/dist/{1879.js → 9954.js} +1 -1
  56. package/dist/9954.js.map +1 -0
  57. package/dist/kenyaemr-esm-ward-app.js +1 -1
  58. package/dist/kenyaemr-esm-ward-app.js.buildmanifest.json +251 -326
  59. package/dist/kenyaemr-esm-ward-app.js.map +1 -1
  60. package/dist/main.js +2 -1
  61. package/dist/main.js.LICENSE.txt +114 -0
  62. package/dist/main.js.map +1 -1
  63. package/dist/routes.json +1 -1
  64. package/package.json +1 -1
  65. package/src/config-schema.ts +55 -0
  66. package/src/hooks/useSummaryMetrics.ts +1 -1
  67. package/src/in-patient/admission-request.component.tsx +114 -0
  68. package/src/in-patient/admission-request.test.tsx +472 -0
  69. package/src/in-patient/encounter-observations/encounter-observations.component.tsx +71 -0
  70. package/src/in-patient/encounter-observations/index.ts +3 -0
  71. package/src/in-patient/encounter-observations/styles.scss +22 -0
  72. package/src/in-patient/encounter-observations/visit.resource.tsx +161 -0
  73. package/src/in-patient/in-patient-table/in-patient-table.component.tsx +155 -0
  74. package/src/in-patient/in-patient-table/in-patient-table.scss +37 -0
  75. package/src/in-patient/in-patient.component.tsx +32 -0
  76. package/src/in-patient/in-patient.meta.tsx +10 -0
  77. package/src/in-patient/in-patient.resource.tsx +56 -0
  78. package/src/in-patient/inpatient-detail-view.component.tsx +129 -0
  79. package/src/in-patient/inpatient-forms.component.tsx +74 -0
  80. package/src/in-patient/inpatient.scss +23 -0
  81. package/src/index.ts +9 -0
  82. package/src/routes.json +20 -0
  83. package/src/ward-view/linelist-wards/LineListTable.tsx +2 -2
  84. package/src/ward-workspace/admit-patient-form-workspace/admit-patient-form.workspace.tsx +17 -8
  85. package/src/ward-workspace/admit-patient-form-workspace/patient-admission.resources.ts +2 -6
  86. package/src/ward.resource.ts +10 -2
  87. package/translations/en.json +25 -0
  88. package/dist/1879.js.map +0 -1
  89. package/dist/1919.js +0 -1
  90. package/dist/2123.js +0 -1
  91. package/dist/2123.js.map +0 -1
  92. package/dist/237.js +0 -2
  93. package/dist/237.js.LICENSE.txt +0 -54
  94. package/dist/237.js.map +0 -1
  95. package/dist/2898.js +0 -2
  96. package/dist/2898.js.map +0 -1
  97. package/dist/2953.js +0 -2
  98. package/dist/2953.js.LICENSE.txt +0 -9
  99. package/dist/2953.js.map +0 -1
  100. package/dist/4191.js +0 -2
  101. package/dist/4191.js.LICENSE.txt +0 -9
  102. package/dist/4191.js.map +0 -1
  103. package/dist/4224.js.LICENSE.txt +0 -9
  104. package/dist/4300.js.map +0 -1
  105. package/dist/465.js +0 -1
  106. package/dist/465.js.map +0 -1
  107. package/dist/681.js +0 -2
  108. package/dist/681.js.LICENSE.txt +0 -9
  109. package/dist/681.js.map +0 -1
  110. package/dist/6871.js.LICENSE.txt +0 -9
  111. package/dist/7179.js.LICENSE.txt +0 -9
  112. package/dist/8501.js.LICENSE.txt +0 -5
  113. package/dist/8622.js +0 -1
  114. package/dist/8622.js.map +0 -1
  115. package/dist/9876.js.LICENSE.txt +0 -9
  116. /package/dist/{2898.js.LICENSE.txt → 7495.js.LICENSE.txt} +0 -0
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":"^2.2.0","emrapi":"^2.0.0 || 2.0.0-SNAPSHOT"},"optionalBackendDependencies":{"bedmanagement":{"version":"^6.0.0 || 6.0.0-SNAPSHOT","feature":{"flagName":"bedmanagement-module","label":"Ward App Patient Service","description":"This module, if installed, provides services for managing patients admitted to the ward."}}},"extensions":[{"name":"ward-dashboard-link","component":"wardDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"ward","slot":"ward-dashboard-slot","title":"Wards"}},{"component":"root","name":"ward-dashboard","slot":"ward-dashboard-slot"},{"component":"wardView","name":"ward-view","slot":"ward-view-slot"},{"component":"wardPatientActionButtonExtension","name":"ward-patient-action-button","slot":"action-menu-ward-patient-items-slot"},{"component":"wardPatientNotesActionButtonExtension","name":"ward-inpatient-notes-form-action-button","slot":"action-menu-ward-patient-items-slot"},{"component":"coloredObsTagCardRowExtension","name":"colored-obs-tags-card-row","slot":"ward-patient-card-slot"},{"name":"transfer-swap-patient-siderail-button","slot":"action-menu-ward-patient-items-slot","component":"patientTransferAndSwapWorkspaceSiderailIcon"},{"name":"patient-discharge-siderail-button","slot":"action-menu-ward-patient-items-slot","component":"patientDischargeWorkspaceSideRailIcon"},{"name":"clinical-forms-workspace-siderail-button","component":"clinicalFormWorkspaceSideRailIcon","slot":"action-menu-ward-patient-items-slot"},{"name":"admission-requests-workspace-siderail-button","component":"admissionRequestsWorkspaceSideRailIcon","slot":"action-menu-ward-patient-admission-requests-items-slot"},{"name":"create-admission-request-workspace-siderail-button","component":"createAdmissionEncounterWorkspaceSideRailIcon","slot":"action-menu-ward-patient-admission-requests-items-slot"},{"component":"defaultWardView","name":"default-ward","slot":"default-ward"},{"component":"maternalWardView","name":"maternal-ward","slot":"maternal-ward"},{"component":"patientDischargeDocumentPreview","name":"patient-discharge-document-preview-modal"},{"component":"wardPatientWorkspaceBanner","name":"ward-patient-workspace-banner","slot":"ward-workspace-patient-banner-slot"}],"workspaces":[{"name":"admission-requests-workspace","component":"admissionRequestWorkspace","title":"admissionRequests","type":"pending-admission-requests","width":"wider"},{"name":"create-admission-encounter-workspace","component":"createAdmissionEncounterWorkspace","title":"admitPatient","type":"patient-search-workspace","width":"wider"},{"name":"ward-patient-notes-workspace","component":"wardPatientNotesWorkspace","type":"ward-patient-notes","title":"inpatientNotesWorkspaceTitle"},{"name":"admit-patient-form-workspace","component":"admitPatientFormWorkspace","title":"admissionRequests","type":"admission-requests"},{"name":"ward-patient-workspace","component":"wardPatientWorkspace","type":"ward","title":"Ward patient","width":"extra-wide"},{"name":"patient-transfer-swap-workspace","component":"patientTransferAndSwapWorkspace","title":"transfers","type":"transfer-swap-bed-form"},{"name":"patient-transfer-request-workspace","component":"patientTransferRequestWorkspace","title":"transferRequest","type":"transfer-request-form"},{"name":"patient-discharge-workspace","component":"patientDischargeWorkspace","title":"discharge","width":"extra-wide","canMaximize":true,"type":"ward-patient-discharge"},{"name":"ward-patient-clinical-forms-workspace","component":"patientClinicalFormsWorkspace","title":"clinicalForms","type":"ward-patient-clinical-forms","width":"wider"},{"name":"cancel-admission-request-workspace","component":"cancelAdmissionRequestWorkspace","title":"cancelAdmissionRequest","type":"cancel-admission-request"}],"workspaceGroups":[{"name":"ward-patient","members":["ward-patient-workspace","ward-patient-notes-workspace","patient-transfer-swap-workspace","patient-discharge-workspace","ward-patient-clinical-forms-workspace","add-drug-order","order-basket","add-lab-order"]},{"name":"ward-patient-admission-requests","members":["admission-requests-workspace","create-admission-encounter-workspace"]}],"version":"8.5.1-pre.52"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":"^2.2.0","emrapi":"^2.0.0 || 2.0.0-SNAPSHOT"},"optionalBackendDependencies":{"bedmanagement":{"version":"^6.0.0 || 6.0.0-SNAPSHOT","feature":{"flagName":"bedmanagement-module","label":"Ward App Patient Service","description":"This module, if installed, provides services for managing patients admitted to the ward."}}},"extensions":[{"name":"ward-dashboard-link","component":"wardDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"ward","slot":"ward-dashboard-slot","title":"Wards"}},{"component":"root","name":"ward-dashboard","slot":"ward-dashboard-slot"},{"component":"wardView","name":"ward-view","slot":"ward-view-slot"},{"component":"wardPatientActionButtonExtension","name":"ward-patient-action-button","slot":"action-menu-ward-patient-items-slot"},{"component":"wardPatientNotesActionButtonExtension","name":"ward-inpatient-notes-form-action-button","slot":"action-menu-ward-patient-items-slot"},{"component":"coloredObsTagCardRowExtension","name":"colored-obs-tags-card-row","slot":"ward-patient-card-slot"},{"name":"transfer-swap-patient-siderail-button","slot":"action-menu-ward-patient-items-slot","component":"patientTransferAndSwapWorkspaceSiderailIcon"},{"name":"patient-discharge-siderail-button","slot":"action-menu-ward-patient-items-slot","component":"patientDischargeWorkspaceSideRailIcon"},{"name":"clinical-forms-workspace-siderail-button","component":"clinicalFormWorkspaceSideRailIcon","slot":"action-menu-ward-patient-items-slot"},{"name":"admission-requests-workspace-siderail-button","component":"admissionRequestsWorkspaceSideRailIcon","slot":"action-menu-ward-patient-admission-requests-items-slot"},{"name":"create-admission-request-workspace-siderail-button","component":"createAdmissionEncounterWorkspaceSideRailIcon","slot":"action-menu-ward-patient-admission-requests-items-slot"},{"component":"defaultWardView","name":"default-ward","slot":"default-ward"},{"component":"maternalWardView","name":"maternal-ward","slot":"maternal-ward"},{"component":"patientDischargeDocumentPreview","name":"patient-discharge-document-preview-modal"},{"component":"wardPatientWorkspaceBanner","name":"ward-patient-workspace-banner","slot":"ward-workspace-patient-banner-slot"},{"name":"in-patient-dashboard-link","component":"inPatientChartLink","order":7,"meta":{"slot":"patient-chart-in-patient-dashboard-slot","path":"in-patient","layoutMode":"anchored","columns":1,"columnSpan":1}},{"name":"in-patient-dashboard","slot":"patient-chart-in-patient-dashboard-slot","component":"inPatientChartDashboard","meta":{"fullWidth":false}}],"workspaces":[{"name":"admission-requests-workspace","component":"admissionRequestWorkspace","title":"admissionRequests","type":"pending-admission-requests","width":"wider"},{"name":"create-admission-encounter-workspace","component":"createAdmissionEncounterWorkspace","title":"admitPatient","type":"patient-search-workspace","width":"wider"},{"name":"ward-patient-notes-workspace","component":"wardPatientNotesWorkspace","type":"ward-patient-notes","title":"inpatientNotesWorkspaceTitle"},{"name":"admit-patient-form-workspace","component":"admitPatientFormWorkspace","title":"admissionRequests","type":"admission-requests"},{"name":"ward-patient-workspace","component":"wardPatientWorkspace","type":"ward","title":"Ward patient","width":"extra-wide"},{"name":"patient-transfer-swap-workspace","component":"patientTransferAndSwapWorkspace","title":"transfers","type":"transfer-swap-bed-form"},{"name":"patient-transfer-request-workspace","component":"patientTransferRequestWorkspace","title":"transferRequest","type":"transfer-request-form"},{"name":"patient-discharge-workspace","component":"patientDischargeWorkspace","title":"discharge","width":"extra-wide","canMaximize":true,"type":"ward-patient-discharge"},{"name":"ward-patient-clinical-forms-workspace","component":"patientClinicalFormsWorkspace","title":"clinicalForms","type":"ward-patient-clinical-forms","width":"wider"},{"name":"cancel-admission-request-workspace","component":"cancelAdmissionRequestWorkspace","title":"cancelAdmissionRequest","type":"cancel-admission-request"}],"workspaceGroups":[{"name":"ward-patient","members":["ward-patient-workspace","ward-patient-notes-workspace","patient-transfer-swap-workspace","patient-discharge-workspace","ward-patient-clinical-forms-workspace","add-drug-order","order-basket","add-lab-order"]},{"name":"ward-patient-admission-requests","members":["admission-requests-workspace","create-admission-encounter-workspace"]}],"version":"8.5.1-pre.61"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenyaemr/esm-ward-app",
3
- "version": "8.5.1-pre.52",
3
+ "version": "8.5.1-pre.61",
4
4
  "description": "Ward and bed management module for O3",
5
5
  "browser": "dist/kenyaemr-esm-ward-app.js",
6
6
  "main": "src/index.ts",
@@ -284,6 +284,11 @@ export const configSchema: ConfigSchema = {
284
284
  _type: Type.String,
285
285
  _default: '98a781d2-b777-4756-b4c9-c9b0deb3483c',
286
286
  },
287
+ admissionRequestFormUuid: {
288
+ _description: 'Admission request form uuid',
289
+ _type: Type.String,
290
+ _default: 'c3496cb0-ab42-4d42-9ec7-d09b9f209c85',
291
+ },
287
292
  conceptUuidForWardAdmission: {
288
293
  _description: 'Concept UUID for ward admission',
289
294
  _type: Type.Object,
@@ -370,6 +375,54 @@ export const configSchema: ConfigSchema = {
370
375
  _type: Type.UUID,
371
376
  _default: '14b36860-5033-4765-b91b-ace856ab64c2',
372
377
  },
378
+ inPatientForms: {
379
+ _type: Type.Array,
380
+ _description: 'List of forms that can be filled out for in-patients',
381
+ _default: [
382
+ {
383
+ label: 'Cardex Nursing Plan',
384
+ uuid: '1f81d5e2-3569-40cf-bbb9-361a53ba409b',
385
+ },
386
+ {
387
+ label: 'IPD Procedure Form',
388
+ uuid: '2b9c2b94-0b03-416a-b312-eef49b42f72c',
389
+ },
390
+ {
391
+ label: 'Newborn Unit Admission ',
392
+ uuid: '5b0a08f5-87c1-40cc-8c09-09c33b44523d',
393
+ hideExpression: 'ageInDays < 28',
394
+ },
395
+ {
396
+ label: 'Partograph Form',
397
+ uuid: '3791e5b7-2cdc-44fc-982b-a81135367c96',
398
+ hideExpression: 'age >= 10 && gender === "female"',
399
+ },
400
+ {
401
+ uuid: '87379b0a-738b-4799-9736-cdac614cee2a',
402
+ label: 'Doctors Note',
403
+ },
404
+ {
405
+ uuid: '43dacebf-2412-44b6-b55a-63aff5b02fcd',
406
+ label: 'Post Delivery',
407
+ },
408
+ {
409
+ uuid: 'ac043326-c5f0-4d11-9e6f-f7266b3f3859',
410
+ label: 'Post Operation',
411
+ },
412
+ {
413
+ uuid: 'a14824ca-29af-4d37-b9da-6bdee39f8808',
414
+ label: 'Pre-Operation Checklist',
415
+ },
416
+ {
417
+ uuid: 'b4bfa7a3-f6ed-4339-a4ec-b076463c0696',
418
+ label: 'Fluid Intake',
419
+ },
420
+ {
421
+ uuid: 'cd65f1dd-0047-4449-9c38-0710a7214c52',
422
+ label: 'Initial Nursing Cardex',
423
+ },
424
+ ],
425
+ },
373
426
  };
374
427
 
375
428
  export interface WardConfigObject {
@@ -415,6 +468,8 @@ export interface WardConfigObject {
415
468
  drugOrderEncounterType: string;
416
469
  clinicalConsultationEncounterType: string;
417
470
  doctorsNoteEncounterType: string;
471
+ admissionRequestFormUuid: string;
472
+ inPatientForms: Array<{ label: string; uuid: string; hideExpression: string }>;
418
473
  }
419
474
 
420
475
  export interface PendingItemsElementConfig {
@@ -34,7 +34,7 @@ export const useWardsSummaryMetrics = () => {
34
34
  }, [filteredData]);
35
35
 
36
36
  const bedOccupancy = useMemo(() => {
37
- if (!totalBeds || !occupiedBeds) return `0%`;
37
+ if (!totalBeds) return `0%`;
38
38
  return `${((occupiedBeds / totalBeds) * 100).toFixed(2)}%`;
39
39
  }, [totalBeds, occupiedBeds]);
40
40
 
@@ -0,0 +1,114 @@
1
+ import {
2
+ Button,
3
+ DataTable,
4
+ DataTableSkeleton,
5
+ Table,
6
+ TableBody,
7
+ TableCell,
8
+ TableHead,
9
+ TableHeader,
10
+ TableRow,
11
+ } from '@carbon/react';
12
+ import { formatDatetime, isDesktop, launchWorkspace, useConfig, useLayoutType } from '@openmrs/esm-framework';
13
+ import { CardHeader, EmptyState, ErrorState } from '@openmrs/esm-patient-common-lib';
14
+ import React, { useMemo } from 'react';
15
+ import { useTranslation } from 'react-i18next';
16
+
17
+ import { Add } from '@carbon/react/icons';
18
+ import type { WardConfigObject } from '../config-schema';
19
+ import { useAdmissionRequest } from './in-patient.resource';
20
+
21
+ type AdmissionRequestProps = {
22
+ patientUuid: string;
23
+ };
24
+
25
+ const AdmissionRequest: React.FC<AdmissionRequestProps> = ({ patientUuid }) => {
26
+ const { t } = useTranslation();
27
+ const layout = useLayoutType();
28
+ const controlSize = isDesktop(layout) ? 'sm' : 'md';
29
+ const { admissionRequestFormUuid } = useConfig<WardConfigObject>();
30
+ const { admissionRequest, isLoading, error, mutate } = useAdmissionRequest(patientUuid);
31
+ const rows = useMemo(() => {
32
+ return admissionRequest.map((admissionRequest) => ({
33
+ id: admissionRequest.patient.uuid,
34
+ admissionLocation: admissionRequest.dispositionLocation?.display,
35
+ admissionType: admissionRequest.dispositionType,
36
+ disposition: admissionRequest.disposition.display,
37
+ requestDatetime: formatDatetime(new Date(admissionRequest.dispositionEncounter.encounterDatetime), {
38
+ mode: 'standard',
39
+ }),
40
+ }));
41
+ }, [admissionRequest]);
42
+
43
+ const headers = useMemo(() => {
44
+ return [
45
+ { key: 'requestDatetime', header: t('requestDatetime', 'Request Datetime') },
46
+ { key: 'admissionLocation', header: t('admissionLocation', 'Admission Location') },
47
+ { key: 'admissionType', header: t('admissionType', 'Admission Type') },
48
+ { key: 'disposition', header: t('disposition', 'Disposition') },
49
+ ];
50
+ }, [t]);
51
+
52
+ const handleLaunchAdmissionRequestForm = () => {
53
+ launchWorkspace('patient-form-entry-workspace', {
54
+ workspaceTitle: 'Admission Request',
55
+ mutateForm: mutate,
56
+ formInfo: {
57
+ formUuid: admissionRequestFormUuid,
58
+ encounterUuid: '',
59
+ },
60
+ });
61
+ };
62
+
63
+ if (isLoading) {
64
+ return <DataTableSkeleton />;
65
+ }
66
+
67
+ if (error) {
68
+ return <ErrorState error={error} headerTitle={t('admissionRequest', 'Admission Request')} />;
69
+ }
70
+
71
+ if (admissionRequest.length === 0) {
72
+ return (
73
+ <EmptyState
74
+ displayText={t('admissionRequests', 'admission requests')}
75
+ headerTitle={t('admissionRequest', 'Admission Request')}
76
+ launchForm={handleLaunchAdmissionRequestForm}
77
+ />
78
+ );
79
+ }
80
+
81
+ return (
82
+ <div>
83
+ <CardHeader title={t('admissionRequest', 'Admission Request')}>
84
+ <Button renderIcon={Add} onClick={handleLaunchAdmissionRequestForm} kind="ghost">
85
+ {t('add', 'Add')}
86
+ </Button>
87
+ </CardHeader>
88
+ <DataTable size={controlSize} rows={rows} headers={headers}>
89
+ {({ rows, headers, getTableProps, getHeaderProps, getRowProps, getCellProps }) => (
90
+ <Table {...getTableProps()}>
91
+ <TableHead>
92
+ <TableRow>
93
+ {headers.map((header) => (
94
+ <TableHeader {...getHeaderProps({ header })}>{header.header}</TableHeader>
95
+ ))}
96
+ </TableRow>
97
+ </TableHead>
98
+ <TableBody>
99
+ {rows.map((row) => (
100
+ <TableRow {...getRowProps({ row })}>
101
+ {row.cells.map((cell) => (
102
+ <TableCell {...getCellProps({ cell })}>{cell.value}</TableCell>
103
+ ))}
104
+ </TableRow>
105
+ ))}
106
+ </TableBody>
107
+ </Table>
108
+ )}
109
+ </DataTable>
110
+ </div>
111
+ );
112
+ };
113
+
114
+ export default AdmissionRequest;