@pih/esm-referrals-queue-app 2.0.0-pre.10 → 2.0.0-pre.12
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.
- package/.husky/{pre-commit → pre-push} +0 -0
- package/dist/022d7839fbf0b01f1279.woff2 +0 -0
- package/dist/02e1d2dbd3774a8f5658.woff2 +0 -0
- package/dist/066f70960ee0bd4c07f5.woff +0 -0
- package/dist/0755d9c25fe86099a1fb.woff2 +0 -0
- package/dist/091d3a63042974d54d8a.woff +0 -0
- package/dist/0befeb0f9f061f052717.woff +0 -0
- package/dist/0c7e37865f4bb741d719.woff2 +0 -0
- package/dist/0e49dbb9071356a97aa7.woff +0 -0
- package/dist/0e5132569fd3eaea21cc.woff +0 -0
- package/dist/0eb6e423b08540bb2757.woff2 +0 -0
- package/dist/1223fdf597c1c7a57096.woff +0 -0
- package/dist/132.js +1 -1
- package/dist/13aa346ec359eaa168e2.woff +0 -0
- package/dist/144035d867f964f2c13d.woff2 +0 -0
- package/dist/152.js +2 -0
- package/dist/152.js.LICENSE.txt +47 -0
- package/dist/160c450b41a6dfc1bebe.woff2 +0 -0
- package/dist/164bc7c64a15028f6b19.woff +0 -0
- package/dist/178f507500fb1dabcf4e.woff +0 -0
- package/dist/189265eddd933218a2c4.woff2 +0 -0
- package/dist/19239848cb5cdf02953e.woff2 +0 -0
- package/dist/1ac9d0b721a47c618f27.woff2 +0 -0
- package/dist/1b3c2f1d45dbb745b4cf.woff +0 -0
- package/dist/2034d12242df27d980b8.woff +0 -0
- package/dist/22f2f7f20d522f25d8ec.woff2 +0 -0
- package/dist/247.js +1 -0
- package/dist/257967d345c4d73a616e.woff +0 -0
- package/dist/27626c129fe4aa22e2e6.woff2 +0 -0
- package/dist/2861a6629748147a32ea.woff2 +0 -0
- package/dist/2b531494817a7008521c.woff +0 -0
- package/dist/2d855afa565d0006f5fa.woff2 +0 -0
- package/dist/2e0b1ce3e5a1765917d0.woff2 +0 -0
- package/dist/3028d912b8189a439418.woff2 +0 -0
- package/dist/319.js +1 -0
- package/dist/32a6fcddf51918f011f5.woff2 +0 -0
- package/dist/332d509af7965c98d5af.woff +0 -0
- package/dist/347e5ea493b441f06459.woff2 +0 -0
- package/dist/34ca7aaefd825bca9d62.woff +0 -0
- package/dist/362a779400aac0be5a12.woff2 +0 -0
- package/dist/3647330588ae297a0bd4.woff +0 -0
- package/dist/390315031483cbc78b20.woff +0 -0
- package/dist/3afa7954e621de8a516a.woff +0 -0
- package/dist/3f0da7edcbb8d01dcb97.woff +0 -0
- package/dist/3f4766bc8c4721b8d7a6.woff +0 -0
- package/dist/3fb99cf388da08c31bd7.woff2 +0 -0
- package/dist/404c0909c893f95ee0dc.woff2 +0 -0
- package/dist/40e1012bdd73a02c83f8.woff +0 -0
- package/dist/422493740da495c4413f.woff2 +0 -0
- package/dist/42423f4a1cfd745854a5.woff +0 -0
- package/dist/42c5469340604f5e79d5.woff2 +0 -0
- package/dist/42df6ba8755c7591afbe.woff2 +0 -0
- package/dist/44c432e4a678791737ca.woff2 +0 -0
- package/dist/452cc78a1baf50168631.woff +0 -0
- package/dist/4882dd164789ce7f44fe.woff2 +0 -0
- package/dist/49290aeb66b58f856f84.woff +0 -0
- package/dist/49b97d3a9224cb6bd5ac.woff +0 -0
- package/dist/4c3ed2a3f44451a96594.woff2 +0 -0
- package/dist/4f0c4a9ba045ef843752.woff +0 -0
- package/dist/4f746f1bbc05d6e9497f.woff2 +0 -0
- package/dist/5192df154d7f8cb9b76c.woff +0 -0
- package/dist/54028f60020ee6ac16c1.woff +0 -0
- package/dist/5687219882cd972495e6.woff +0 -0
- package/dist/56c52b5b71ff7d0decad.woff +0 -0
- package/dist/574.js +1 -1
- package/dist/578aae4082fb12898fe3.woff2 +0 -0
- package/dist/595.js +1 -1
- package/dist/5a07c14cd7519e0fa02d.woff +0 -0
- package/dist/5d3700da8be3c5172b76.woff2 +0 -0
- package/dist/5e1440da12d78046c31a.woff2 +0 -0
- package/dist/608bff2bb28ccfd74ca0.woff +0 -0
- package/dist/62f5f45b32f0702031ad.woff2 +0 -0
- package/dist/62fd670eebf4976bb6df.woff2 +0 -0
- package/dist/6305238484fd3cc045b0.woff2 +0 -0
- package/dist/64e1054a50262b9083ab.woff2 +0 -0
- package/dist/6557a3c33c4218db6066.woff2 +0 -0
- package/dist/66e70aaa5d9c7be2b7d9.woff +0 -0
- package/dist/68.js +2 -0
- package/dist/{879.js.LICENSE.txt → 68.js.LICENSE.txt} +0 -0
- package/dist/68c556c669c532459374.woff2 +0 -0
- package/dist/6956fe0f5e625049f7e2.woff2 +0 -0
- package/dist/6bdf3ec568a6634a4aea.woff2 +0 -0
- package/dist/6d9b6411704ee0e26f31.woff2 +0 -0
- package/dist/6dc1395379557355e28d.woff2 +0 -0
- package/dist/6fcf28e2972af1d72ef8.woff +0 -0
- package/dist/712.js +2 -0
- package/dist/{147.js.LICENSE.txt → 712.js.LICENSE.txt} +0 -29
- package/dist/723a4b364f38da1e93e0.woff2 +0 -0
- package/dist/729e5174c878b0a30035.woff2 +0 -0
- package/dist/74025371289e2bab9590.woff2 +0 -0
- package/dist/757.js +1 -0
- package/dist/762888d30d179075ea6c.woff +0 -0
- package/dist/784d3444a92b4f1b77bc.woff +0 -0
- package/dist/794699869c58056513c7.woff +0 -0
- package/dist/79752c5c990ac51471f4.woff2 +0 -0
- package/dist/7984062acac19d00de83.woff2 +0 -0
- package/dist/79bc83792898f002dfc0.woff +0 -0
- package/dist/7d46ea83f372f13d40a0.woff +0 -0
- package/dist/7f15c4783287134ac710.woff +0 -0
- package/dist/8000079133e696898c7e.woff2 +0 -0
- package/dist/806a7a7745e7bd864174.woff +0 -0
- package/dist/8212ca4bb829a5d9f858.woff2 +0 -0
- package/dist/830.js +1 -0
- package/dist/86c57595c1697937314b.woff +0 -0
- package/dist/88cb07ee53507d19f992.woff2 +0 -0
- package/dist/8a014da16bb5df1e9830.woff2 +0 -0
- package/dist/8af6b3d1e1a4ac4fdd49.woff2 +0 -0
- package/dist/8bbf2e3b118b1732ea16.woff2 +0 -0
- package/dist/8cd3fae70878b55de45b.woff +0 -0
- package/dist/8e05df04c42299bc9c31.woff +0 -0
- package/dist/9022078be982e16dc192.woff2 +0 -0
- package/dist/907c442ef0bf7886cbbc.woff2 +0 -0
- package/dist/90822629c9f43acb1cf8.woff2 +0 -0
- package/dist/92086fc1b9953ba20acd.woff +0 -0
- package/dist/92f1cafa16c646cffd37.woff2 +0 -0
- package/dist/9326d3d6ca3411249fd4.woff2 +0 -0
- package/dist/9340a047e2c400a8eff4.woff +0 -0
- package/dist/951b1b92a4b8315c27a1.woff +0 -0
- package/dist/957995d81ad3284f963f.woff2 +0 -0
- package/dist/95b38dc2556a6c46dc6c.woff2 +0 -0
- package/dist/95db32b85d6efe3f0c92.woff2 +0 -0
- package/dist/962cfb135eb81a80c239.woff +0 -0
- package/dist/96a9036ba12617504616.woff +0 -0
- package/dist/983c50a737da66c0bd02.woff2 +0 -0
- package/dist/987d18f198bd7d9fa265.woff2 +0 -0
- package/dist/9924e57202230ba397b0.woff2 +0 -0
- package/dist/9b6742916c10378bb045.woff +0 -0
- package/dist/9df11ababf0dd515e6a3.woff +0 -0
- package/dist/9e3f7d82b48ac62c7cb5.woff2 +0 -0
- package/dist/a07b795a96fa2b6691d1.woff +0 -0
- package/dist/a1c1f2f0c32534ae4785.woff2 +0 -0
- package/dist/a1f7181f7c86baf1c351.woff2 +0 -0
- package/dist/a32f901b42b9ddcc6e85.woff +0 -0
- package/dist/a34802c95c44f5903e18.woff2 +0 -0
- package/dist/a7c1ee99b038bc0777e0.woff +0 -0
- package/dist/a81d5c10cd640839a4b8.woff2 +0 -0
- package/dist/aa343b4fcab1658acc56.woff2 +0 -0
- package/dist/ab33fa58a6e7146d03f0.woff +0 -0
- package/dist/abeb6d68a7f128eaa1cd.woff +0 -0
- package/dist/aec9738277936824e421.woff +0 -0
- package/dist/b02a06390388409ab8cd.woff +0 -0
- package/dist/b0afed71b45a7f38e794.woff +0 -0
- package/dist/b0ec1af29941e0f52305.woff2 +0 -0
- package/dist/b3bbe4705c54760ade6b.woff +0 -0
- package/dist/b55f8f00b5929160ed27.woff +0 -0
- package/dist/b649469b999b248dbb70.woff +0 -0
- package/dist/b691d8c0c5110ea3659e.woff +0 -0
- package/dist/b729b57f022eb1d859fc.woff +0 -0
- package/dist/b8020bf5b1afb9556569.woff +0 -0
- package/dist/bb730844c9185c864437.woff2 +0 -0
- package/dist/bbae2f8ceda944a1ecd5.woff +0 -0
- package/dist/bfefc1c5dd4c689b4f0f.woff2 +0 -0
- package/dist/c204ba906a18b66bed05.woff +0 -0
- package/dist/c25bc2c3e5c0f0b089a2.woff +0 -0
- package/dist/c26797e2920f701bf68f.woff2 +0 -0
- package/dist/c32b0c98c77e458414dc.woff +0 -0
- package/dist/c3a84513ace37e633e6c.woff +0 -0
- package/dist/c6dd22ce106021638df7.woff2 +0 -0
- package/dist/c781dd3e68cf4db696e2.woff2 +0 -0
- package/dist/c81d3db94f7270abbebf.woff +0 -0
- package/dist/c8298f275f960d821949.woff +0 -0
- package/dist/c89e876b0e1fd2a0c661.woff2 +0 -0
- package/dist/c8cf918de7d9deffd15c.woff2 +0 -0
- package/dist/cacfd1d7dbd14067b970.woff2 +0 -0
- package/dist/cc33f663568d938071a0.woff +0 -0
- package/dist/cc628a3da5e5810acebe.woff +0 -0
- package/dist/cd9a0204454ff0e22880.woff2 +0 -0
- package/dist/cdb54c58914c803c9ed6.woff +0 -0
- package/dist/cf8cdfc9a1ead9d332f5.woff2 +0 -0
- package/dist/d55e14dce62503dcad5f.woff +0 -0
- package/dist/d69d5111a1f16e74d2fb.woff2 +0 -0
- package/dist/d6f3290223965413af92.woff +0 -0
- package/dist/d96e5a614e96c351c453.woff +0 -0
- package/dist/dacaf9bef27fac67fb17.woff2 +0 -0
- package/dist/dd406a41dc851acc7615.woff +0 -0
- package/dist/e0d279d30dd9df7831ce.woff2 +0 -0
- package/dist/e26dfdb6948e56dcf16c.woff +0 -0
- package/dist/e5317022888823405337.woff2 +0 -0
- package/dist/e589f9b7ff20e7e011ee.woff2 +0 -0
- package/dist/e5b7f5835bf8b91304bf.woff +0 -0
- package/dist/e655f59b8f3ed3b7c9fe.woff2 +0 -0
- package/dist/e7c487ed0bd3af889f66.woff2 +0 -0
- package/dist/eb36767a3caa8dfc71e8.woff2 +0 -0
- package/dist/efbc47072be0090327f8.woff +0 -0
- package/dist/f064c7d4889d1db43518.woff +0 -0
- package/dist/f31b6425f37c2b71c3fc.woff2 +0 -0
- package/dist/f3938458fa6048e8a833.woff +0 -0
- package/dist/f4031df8380579c41ed7.woff +0 -0
- package/dist/f432bafd941d9016122c.woff +0 -0
- package/dist/f4367aaef942e4cbea24.woff +0 -0
- package/dist/f5b2fe58c9057281ea3f.woff +0 -0
- package/dist/f5be008474d38b4cf15a.woff +0 -0
- package/dist/f968050d6a8297e66619.woff2 +0 -0
- package/dist/fdef8ecc502e23149bcc.woff +0 -0
- package/dist/main.js +1 -1
- package/dist/pih-esm-referrals-queue-app.js +1 -1
- package/dist/pih-esm-referrals-queue-app.js.buildmanifest.json +285 -34
- package/dist/pih-esm-referrals-queue-app.old +1 -1
- package/package.json +2 -2
- package/src/referrals-queue/referrals-queue.component.tsx +73 -88
- package/src/referrals-queue/referrals-queue.scss +27 -0
- package/src/referrals-queue/referrals-queue.test.tsx +23 -13
- package/src/root.component.tsx +1 -1
- package/src/table/{table.component.tsx → referrals-table.component.tsx} +41 -34
- package/translations/en.json +13 -2
- package/translations/es.json +15 -0
- package/translations/fr.json +15 -0
- package/dist/147.js +0 -2
- package/dist/281.js +0 -1
- package/dist/879.js +0 -2
- package/dist/90.js +0 -1
- package/src/referrals-queue/react-dates-overrides.css +0 -39
- package/src/referrals-queue/referrals-queue.css +0 -63
- package/src/table/table.css +0 -16
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Trans, useTranslation } from "react-i18next";
|
|
3
3
|
import "react-dates/initialize";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import moment from "moment";
|
|
5
|
+
import {
|
|
6
|
+
Content,
|
|
7
|
+
Tile,
|
|
8
|
+
Heading,
|
|
9
|
+
Search,
|
|
10
|
+
Dropdown,
|
|
11
|
+
DatePicker,
|
|
12
|
+
DatePickerInput,
|
|
13
|
+
} from "@carbon/react";
|
|
6
14
|
import "moment/locale/fr";
|
|
7
15
|
import { createErrorHandler } from "@openmrs/esm-framework";
|
|
8
|
-
import Table from "../table/table.component";
|
|
9
|
-
import styles from "./referrals-queue.
|
|
16
|
+
import Table from "../table/referrals-table.component";
|
|
17
|
+
import styles from "./referrals-queue.scss";
|
|
10
18
|
import { getReferrals } from "./referrals-queue.resource";
|
|
11
19
|
|
|
12
|
-
// Override the webpack CSS loader config in order to load react-dates styles.
|
|
13
|
-
// See thread: https://github.com/webpack-contrib/css-loader/issues/295
|
|
14
|
-
import "!style-loader!css-loader!react-dates/lib/css/_datepicker.css";
|
|
15
|
-
import "!style-loader!css-loader!./react-dates-overrides.css";
|
|
16
|
-
|
|
17
20
|
export default function ReferralsQueue(props: ReferralsQueueProps) {
|
|
18
21
|
const [referrals, setReferrals]: [Referral[], Function] = React.useState([]);
|
|
19
22
|
const [referralTypeFilter, setReferralTypeFilter] = React.useState("");
|
|
@@ -22,8 +25,6 @@ export default function ReferralsQueue(props: ReferralsQueueProps) {
|
|
|
22
25
|
const [fromDate, setFromDate] = React.useState(moment().subtract(1, "month"));
|
|
23
26
|
const [toDate, setToDate] = React.useState(today);
|
|
24
27
|
const [ptQuery, setPtQuery] = React.useState("");
|
|
25
|
-
const [fromDateFocused, setFromDateFocused] = React.useState(false);
|
|
26
|
-
const [toDateFocused, setToDateFocused] = React.useState(false);
|
|
27
28
|
const { t, i18n } = useTranslation();
|
|
28
29
|
|
|
29
30
|
const languageMatches = i18n.language?.match(/^(en|fr|ht).*/);
|
|
@@ -47,116 +48,100 @@ export default function ReferralsQueue(props: ReferralsQueueProps) {
|
|
|
47
48
|
}
|
|
48
49
|
}, [fromDate, toDate, language]);
|
|
49
50
|
|
|
50
|
-
// console.log(referrals);
|
|
51
51
|
const filteredReferrals = referrals
|
|
52
|
-
.filter(
|
|
53
|
-
|
|
52
|
+
.filter(
|
|
53
|
+
(r) =>
|
|
54
|
+
!referralTypeFilter ||
|
|
55
|
+
referralTypeFilter == t("any", "Any") ||
|
|
56
|
+
r.referral_type == referralTypeFilter
|
|
57
|
+
)
|
|
58
|
+
.filter(
|
|
59
|
+
(r) =>
|
|
60
|
+
!statusFilter ||
|
|
61
|
+
statusFilter == t("any", "Any") ||
|
|
62
|
+
r.fulfillment_status == statusFilter
|
|
63
|
+
)
|
|
54
64
|
.filter((r) => matchQuery(r, ptQuery));
|
|
55
|
-
|
|
65
|
+
|
|
66
|
+
const referralTypes = [
|
|
67
|
+
t("any", "Any"),
|
|
68
|
+
...new Set(referrals.map((r) => r.referral_type).filter((r) => r != null)),
|
|
69
|
+
];
|
|
70
|
+
|
|
56
71
|
const statuses = [
|
|
72
|
+
t("any", "Any"),
|
|
57
73
|
...new Set(
|
|
58
74
|
referrals.map((r) => r.fulfillment_status).filter((r) => r != null)
|
|
59
75
|
),
|
|
60
76
|
];
|
|
77
|
+
|
|
61
78
|
return (
|
|
62
|
-
<
|
|
63
|
-
<
|
|
64
|
-
<
|
|
79
|
+
<Content className={styles.container}>
|
|
80
|
+
<Tile>
|
|
81
|
+
<Heading>
|
|
65
82
|
<Trans i18nKey="referrals-queue">Referrals Queue</Trans>
|
|
66
|
-
</
|
|
83
|
+
</Heading>
|
|
67
84
|
<div className={styles.controlsContainer}>
|
|
68
85
|
<div className={styles.inputContainer}>
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
date
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
</label>
|
|
88
|
-
<SingleDatePicker
|
|
89
|
-
id="to-date"
|
|
90
|
-
date={toDate}
|
|
91
|
-
onDateChange={(date) => setToDate(date)}
|
|
92
|
-
focused={toDateFocused}
|
|
93
|
-
onFocusChange={({ focused }) => setToDateFocused(focused)}
|
|
94
|
-
isOutsideRange={(date: Moment) => date.isAfter(today)}
|
|
95
|
-
displayFormat="DD MMM YYYY"
|
|
96
|
-
numberOfMonths={1}
|
|
97
|
-
/>
|
|
98
|
-
</div>
|
|
86
|
+
<DatePicker
|
|
87
|
+
dateFormat="d/M/Y"
|
|
88
|
+
datePickerType="range"
|
|
89
|
+
locale={language === "ht" ? "fr" : language}
|
|
90
|
+
maxDate={new Date().toISOString()}
|
|
91
|
+
onChange={(date) => {
|
|
92
|
+
if (date && date.length > 0) {
|
|
93
|
+
setFromDate(date ? moment(date[0]) : null);
|
|
94
|
+
if (date.length > 1) {
|
|
95
|
+
setToDate(date ? moment(date[1]) : null);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}}
|
|
99
|
+
value={[fromDate.toISOString(), toDate.toISOString()]}
|
|
100
|
+
>
|
|
101
|
+
<DatePickerInput id="from-date" labelText={t("from", "From")} />
|
|
102
|
+
<DatePickerInput id="to-date" labelText={t("to", "To")} />
|
|
103
|
+
</DatePicker>
|
|
99
104
|
</div>
|
|
100
105
|
<div className={styles.inputContainer}>
|
|
101
|
-
<div
|
|
102
|
-
<
|
|
103
|
-
<Trans i18nKey="referral-type">Referral Type</Trans>
|
|
104
|
-
</label>
|
|
105
|
-
<select
|
|
106
|
+
<div style={{ width: 400 }}>
|
|
107
|
+
<Dropdown
|
|
106
108
|
id="referral-type"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
{referralTypes.map((t) => (
|
|
113
|
-
<option key={t} value={t}>
|
|
114
|
-
{t}
|
|
115
|
-
</option>
|
|
116
|
-
))}
|
|
117
|
-
</select>
|
|
109
|
+
label={t("select-referral-type", "Select Referral Type")}
|
|
110
|
+
titleText={t("referral-type", "Referral Type")}
|
|
111
|
+
items={referralTypes}
|
|
112
|
+
onChange={(e) => setReferralTypeFilter(e.selectedItem)}
|
|
113
|
+
/>
|
|
118
114
|
</div>
|
|
119
115
|
</div>
|
|
120
116
|
<div className={styles.inputContainer}>
|
|
121
|
-
<div
|
|
117
|
+
<div style={{ width: 400 }}>
|
|
122
118
|
<label htmlFor="query-input">
|
|
123
119
|
<Trans i18nKey="filter-by-patient">Filter by patient</Trans>
|
|
124
120
|
</label>
|
|
125
|
-
<
|
|
121
|
+
<Search
|
|
126
122
|
id="query-input"
|
|
127
|
-
|
|
128
|
-
value={ptQuery}
|
|
123
|
+
labelText=""
|
|
129
124
|
onChange={(e) => setPtQuery(e.target.value)}
|
|
130
|
-
className="omrs-input-outlined"
|
|
131
125
|
/>
|
|
132
126
|
</div>
|
|
133
127
|
</div>
|
|
134
128
|
<div className={styles.inputContainer}>
|
|
135
|
-
<div
|
|
136
|
-
<
|
|
137
|
-
<Trans i18nKey="status">Status</Trans>
|
|
138
|
-
</label>
|
|
139
|
-
<select
|
|
129
|
+
<div style={{ width: 400 }}>
|
|
130
|
+
<Dropdown
|
|
140
131
|
id="status"
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
{statuses.map((t) => (
|
|
147
|
-
<option key={t} value={t}>
|
|
148
|
-
{t}
|
|
149
|
-
</option>
|
|
150
|
-
))}
|
|
151
|
-
</select>
|
|
132
|
+
label={t("select-status", "Select Status")}
|
|
133
|
+
titleText={t("status", "Status")}
|
|
134
|
+
items={statuses}
|
|
135
|
+
onChange={(e) => setStatusFilter(e.selectedItem)}
|
|
136
|
+
/>
|
|
152
137
|
</div>
|
|
153
138
|
</div>
|
|
154
139
|
</div>
|
|
155
140
|
<div className={styles.tableContainer}>
|
|
156
141
|
<Table referrals={filteredReferrals} />
|
|
157
142
|
</div>
|
|
158
|
-
</
|
|
159
|
-
</
|
|
143
|
+
</Tile>
|
|
144
|
+
</Content>
|
|
160
145
|
);
|
|
161
146
|
}
|
|
162
147
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
@use '@carbon/react';
|
|
2
|
+
|
|
3
|
+
.container {
|
|
4
|
+
margin-right: auto;
|
|
5
|
+
margin-left: auto;
|
|
6
|
+
max-width: 1500px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.tableContainer {
|
|
10
|
+
height: 500px;
|
|
11
|
+
overflow-x: auto;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.controlsContainer {
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-wrap: wrap;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.inputContainer {
|
|
20
|
+
display: flex;
|
|
21
|
+
width: 50%;
|
|
22
|
+
min-width: 300px;
|
|
23
|
+
text-align: left;
|
|
24
|
+
padding: 0.5rem;
|
|
25
|
+
align-items: flex-end;
|
|
26
|
+
}
|
|
27
|
+
|
|
@@ -93,7 +93,7 @@ describe("referrals queue", () => {
|
|
|
93
93
|
screen.getByText("28 Mar");
|
|
94
94
|
});
|
|
95
95
|
|
|
96
|
-
// TODO
|
|
96
|
+
// TODO figure out how to test links
|
|
97
97
|
it.skip("navigates to the links", async () => {
|
|
98
98
|
const table = screen.getByRole("table");
|
|
99
99
|
const pt0DashLink = within(table).getByText(referrals[0].zl_emr_id);
|
|
@@ -126,32 +126,42 @@ describe("referrals queue", () => {
|
|
|
126
126
|
});
|
|
127
127
|
|
|
128
128
|
it("filters by referral type", () => {
|
|
129
|
-
|
|
130
|
-
selector: "
|
|
131
|
-
});
|
|
132
|
-
fireEvent.
|
|
129
|
+
fireEvent.click(screen.getByLabelText("Referral Type", {
|
|
130
|
+
selector: "button",
|
|
131
|
+
}));
|
|
132
|
+
fireEvent.click(screen.getByText("Mental Health", {
|
|
133
|
+
selector: "div"
|
|
134
|
+
}));
|
|
133
135
|
expect(screen.queryByText("PTID1")).toBeNull();
|
|
134
136
|
expect(screen.queryByText("PTID2")).not.toBeNull();
|
|
135
137
|
expect(screen.queryByText("PTID3")).toBeNull();
|
|
136
138
|
});
|
|
137
139
|
|
|
138
140
|
it("infers list of referral types from data", () => {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
expect(screen.queryByText("Test Referral Type", { selector: "span" })).toBeNull(); // sanity check
|
|
142
|
+
fireEvent.click(screen.getByLabelText("Referral Type", {
|
|
143
|
+
selector: "button",
|
|
144
|
+
}));
|
|
145
|
+
fireEvent.click(screen.getByText("Test Referral Type", {
|
|
146
|
+
selector: "div"
|
|
147
|
+
}));
|
|
148
|
+
expect(screen.queryByText("Test Referral Type", { selector: "span" })).not.toBeNull();
|
|
144
149
|
});
|
|
145
150
|
|
|
146
151
|
it("filters by statuses, with dropdown inferred from data", () => {
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
fireEvent.click(screen.getByLabelText("Status", {
|
|
153
|
+
selector: "button",
|
|
154
|
+
}));
|
|
155
|
+
fireEvent.click(screen.getByText("Test Complete", {
|
|
156
|
+
selector: "div"
|
|
157
|
+
}));
|
|
149
158
|
expect(screen.queryByText("PTID1")).toBeNull();
|
|
150
159
|
expect(screen.queryByText("PTID2")).toBeNull();
|
|
151
160
|
expect(screen.queryByText("PTID3")).not.toBeNull();
|
|
152
161
|
});
|
|
153
162
|
|
|
154
|
-
|
|
163
|
+
// TODO figure out how to interact with Carbon datepicker
|
|
164
|
+
it.skip("calls getReferrals with the correct date arguments", () => {
|
|
155
165
|
const monthAgoString = "2020-09-30";
|
|
156
166
|
expect(mockedGetReferrals).lastCalledWith({
|
|
157
167
|
fromDate: monthAgoString,
|
package/src/root.component.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import { appPath } from "./constants";
|
|
|
6
6
|
|
|
7
7
|
export default function Root() {
|
|
8
8
|
return (
|
|
9
|
-
<div className={
|
|
9
|
+
<div className={`${styles.ovconstantserflowAuto}`}>
|
|
10
10
|
<BrowserRouter basename={appPath}>
|
|
11
11
|
<Routes>
|
|
12
12
|
<Route path="/" element={<ReferralsQueue />} />
|
|
@@ -1,50 +1,57 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import {
|
|
3
|
+
Table,
|
|
4
|
+
TableHead,
|
|
5
|
+
TableHeader,
|
|
6
|
+
TableRow,
|
|
7
|
+
TableBody,
|
|
8
|
+
TableCell,
|
|
9
|
+
} from "@carbon/react";
|
|
2
10
|
import {
|
|
3
11
|
ConfigurableLink,
|
|
4
12
|
interpolateString,
|
|
5
13
|
useConfig,
|
|
6
14
|
} from "@openmrs/esm-framework";
|
|
7
15
|
import { Trans } from "react-i18next";
|
|
8
|
-
import styles from "./table.css";
|
|
9
16
|
import { formatDate } from "../util";
|
|
10
17
|
|
|
11
|
-
export interface
|
|
18
|
+
export interface ReferralsTableProps {
|
|
12
19
|
referrals: Referral[];
|
|
13
20
|
}
|
|
14
21
|
|
|
15
|
-
export default function
|
|
22
|
+
export default function ReferrablesTable(props: ReferralsTableProps) {
|
|
16
23
|
const config = useConfig();
|
|
17
24
|
|
|
18
25
|
return (
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<
|
|
22
|
-
<
|
|
26
|
+
<Table>
|
|
27
|
+
<TableHead>
|
|
28
|
+
<TableRow>
|
|
29
|
+
<TableHeader>
|
|
23
30
|
<Trans i18nKey="emr-id">EMR ID</Trans>
|
|
24
|
-
</
|
|
25
|
-
<
|
|
31
|
+
</TableHeader>
|
|
32
|
+
<TableHeader>
|
|
26
33
|
<Trans i18nKey="name">Name</Trans>
|
|
27
|
-
</
|
|
28
|
-
<
|
|
34
|
+
</TableHeader>
|
|
35
|
+
<TableHeader>
|
|
29
36
|
<Trans i18nKey="referral-date">Referral Date</Trans>
|
|
30
|
-
</
|
|
31
|
-
<
|
|
37
|
+
</TableHeader>
|
|
38
|
+
<TableHeader>
|
|
32
39
|
<Trans i18nKey="referral-type">Referral Type</Trans>
|
|
33
|
-
</
|
|
34
|
-
<
|
|
40
|
+
</TableHeader>
|
|
41
|
+
<TableHeader>
|
|
35
42
|
<Trans i18nKey="details">Details</Trans>
|
|
36
|
-
</
|
|
37
|
-
<
|
|
43
|
+
</TableHeader>
|
|
44
|
+
<TableHeader>
|
|
38
45
|
<Trans i18nKey="status">Status</Trans>
|
|
39
|
-
</
|
|
40
|
-
</
|
|
41
|
-
</
|
|
42
|
-
<
|
|
46
|
+
</TableHeader>
|
|
47
|
+
</TableRow>
|
|
48
|
+
</TableHead>
|
|
49
|
+
<TableBody>
|
|
43
50
|
{props.referrals &&
|
|
44
51
|
props.referrals.map((referral, index) => (
|
|
45
52
|
<React.Fragment key={index}>
|
|
46
|
-
<
|
|
47
|
-
<
|
|
53
|
+
<TableRow>
|
|
54
|
+
<TableCell>
|
|
48
55
|
<ConfigurableLink
|
|
49
56
|
to={interpolateString(config.links.patientDash, {
|
|
50
57
|
patientUuid:
|
|
@@ -53,9 +60,9 @@ export default function Table(props: TableProps) {
|
|
|
53
60
|
>
|
|
54
61
|
{referral.zl_emr_id}
|
|
55
62
|
</ConfigurableLink>
|
|
56
|
-
</
|
|
57
|
-
<
|
|
58
|
-
<
|
|
63
|
+
</TableCell>
|
|
64
|
+
<TableCell>{referral.patient_name}</TableCell>
|
|
65
|
+
<TableCell>
|
|
59
66
|
<ConfigurableLink
|
|
60
67
|
to={interpolateString(config.links.visitPage, {
|
|
61
68
|
patientUuid:
|
|
@@ -65,10 +72,10 @@ export default function Table(props: TableProps) {
|
|
|
65
72
|
>
|
|
66
73
|
{formatDate(referral.referral_date)}
|
|
67
74
|
</ConfigurableLink>
|
|
68
|
-
</
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
<
|
|
75
|
+
</TableCell>
|
|
76
|
+
<TableCell>{referral.referral_type}</TableCell>
|
|
77
|
+
<TableCell>{referral.details}</TableCell>
|
|
78
|
+
<TableCell>
|
|
72
79
|
{config.pendingStatuses.includes(
|
|
73
80
|
referral.fulfillment_status
|
|
74
81
|
) ? (
|
|
@@ -85,11 +92,11 @@ export default function Table(props: TableProps) {
|
|
|
85
92
|
) : (
|
|
86
93
|
referral.fulfillment_status
|
|
87
94
|
)}
|
|
88
|
-
</
|
|
89
|
-
</
|
|
95
|
+
</TableCell>
|
|
96
|
+
</TableRow>
|
|
90
97
|
</React.Fragment>
|
|
91
98
|
))}
|
|
92
|
-
</
|
|
93
|
-
</
|
|
99
|
+
</TableBody>
|
|
100
|
+
</Table>
|
|
94
101
|
);
|
|
95
102
|
}
|
package/translations/en.json
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
2
|
+
"any": "Any",
|
|
3
|
+
"details": "Details",
|
|
4
|
+
"emr-id": "EMR ID",
|
|
5
|
+
"filter-by-patient": "Filter by patient",
|
|
6
|
+
"from": "From",
|
|
7
|
+
"name": "Name",
|
|
8
|
+
"referral-date": "Referral Date",
|
|
9
|
+
"referral-type": "Referral Type",
|
|
10
|
+
"referrals-queue": "Referrals Queue",
|
|
11
|
+
"select-referral-type": "Select Referral Type",
|
|
12
|
+
"select-status": "Select Status",
|
|
13
|
+
"status": "Status",
|
|
14
|
+
"to": "To"
|
|
4
15
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"any": "Any",
|
|
3
|
+
"details": "Detalles",
|
|
4
|
+
"emr-id": "EMR ID",
|
|
5
|
+
"filter-by-patient": "Filtrar por paciente",
|
|
6
|
+
"from": "Desde",
|
|
7
|
+
"name": "Nombre",
|
|
8
|
+
"referral-date": "Fecha de referencia",
|
|
9
|
+
"referral-type": "Tipo de referencia",
|
|
10
|
+
"referrals-queue": "Cola de referencias",
|
|
11
|
+
"select-referral-type": "Seleccionar tipo de referencia",
|
|
12
|
+
"select-status": "Seleccionar estado",
|
|
13
|
+
"status": "Estado",
|
|
14
|
+
"to": "Hasta"
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"any": "Tout",
|
|
3
|
+
"details": "Détails",
|
|
4
|
+
"emr-id": "EMR ID",
|
|
5
|
+
"filter-by-patient": "Filtrer avec patient",
|
|
6
|
+
"from": "de",
|
|
7
|
+
"name": "Nom",
|
|
8
|
+
"referral-date": "Date de Référé",
|
|
9
|
+
"referral-type": "Type Référé",
|
|
10
|
+
"referrals-queue": "List de Référé",
|
|
11
|
+
"select-referral-type": "Sélectionnez le type de référé",
|
|
12
|
+
"select-status": "Sélectionnez le état",
|
|
13
|
+
"status": "État",
|
|
14
|
+
"to": "à"
|
|
15
|
+
}
|