Skip to content

Commit 1c15748

Browse files
authored
Merge pull request #42 from trevorpfiz/elektrikspark/ttp-88-donnas-tasks
fix: task bugs
2 parents 62d074f + a8fd42b commit 1c15748

File tree

5 files changed

+50
-34
lines changed

5 files changed

+50
-34
lines changed

apps/expo/src/app/(main)/portal/(modals)/tasks.tsx

+22-18
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export default function TasksPage() {
2727
format(new Date(), "yyyy-MM-dd"),
2828
);
2929

30-
const listTask = api.task.search.useQuery({
30+
const { isLoading, isError, data, error } = api.task.search.useQuery({
3131
query: {
3232
patient: `Patient/${patientId}`,
3333
},
@@ -79,24 +79,28 @@ export default function TasksPage() {
7979
};
8080

8181
const tasks = useMemo(() => {
82-
if (listTask.data) {
83-
const items = listTask.data.entry!.map((task) => ({
84-
name: `${task.resource.description ?? "No Description"}|${
85-
task.resource.status
86-
}`,
87-
height: 80,
88-
day: format(new Date(task.resource.authoredOn!), "yyyy-MM-dd"),
89-
}));
82+
const filteredTasks =
83+
data?.entry?.filter(
84+
(task) =>
85+
task.resource.status === "completed" ||
86+
task.resource.status === "requested",
87+
) ?? [];
9088

91-
return items.reduce((acc, item) => {
92-
(acc[item.day] = acc[item.day] ?? []).push(item);
93-
return acc;
94-
}, {} as AgendaSchedule);
95-
}
96-
return {};
97-
}, [listTask.data]);
89+
const items = filteredTasks.map((task) => ({
90+
name: `${task.resource.description ?? "No Description"}~~~${
91+
task.resource.status
92+
}`,
93+
height: 80,
94+
day: format(new Date(task.resource.authoredOn!), "yyyy-MM-dd"),
95+
}));
96+
97+
return items.reduce((acc, item) => {
98+
(acc[item.day] = acc[item.day] ?? []).push(item);
99+
return acc;
100+
}, {} as AgendaSchedule);
101+
}, [data]);
98102

99-
if (listTask.isLoading) {
103+
if (isLoading) {
100104
return <LoaderComponent />;
101105
}
102106

@@ -135,7 +139,7 @@ export default function TasksPage() {
135139
monthTextColor: "#888",
136140
}}
137141
renderItem={(item: AgendaEntry, isFirst) => {
138-
const [description, status] = item.name.split("|");
142+
const [description, status] = item.name.split("~~~");
139143

140144
let backgroundColor = "bg-blue-500"; // Default color
141145
if (status === "completed") {

apps/expo/src/app/(main)/portal/(tabs)/health-record/forms/clinical-notes.tsx

+9-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,14 @@ export default function ClinicalNotes() {
3131
const processedNotes = data?.entry
3232
?.filter((note) => {
3333
const typeCode = note.resource?.type?.coding?.[0]?.code;
34-
return typeCode !== "11502-2" && typeCode !== "94093-2";
34+
const categoryCode = note.resource?.category?.[0]?.coding?.[0]?.code;
35+
36+
// Filter based on typeCode and categoryCode of bills, lab reports, and consents
37+
return (
38+
typeCode !== "11502-2" &&
39+
typeCode !== "94093-2" &&
40+
categoryCode !== "patientadministrativedocument"
41+
);
3542
})
3643
.map((note) => {
3744
let displayText = note.resource?.type?.coding?.[0]?.display;
@@ -56,7 +63,7 @@ export default function ClinicalNotes() {
5663

5764
return (
5865
<View className="flex-1 bg-gray-100">
59-
{data && data.total > 0 ? (
66+
{data && data.total > 0 && sortedNotes.length > 0 ? (
6067
<FlashList
6168
data={sortedNotes}
6269
renderItem={({ item }) => {

apps/expo/src/app/(main)/portal/(tabs)/health-record/forms/questionnaires/index.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,8 @@ export default function QuestionnairesPage() {
7575

7676
return {
7777
...response,
78-
questionnaireName:
79-
questionnaire?.resource?.name ?? "Retired questionnaire",
80-
questionnaireStatus: questionnaire?.resource?.status ?? "retired",
78+
questionnaireName: questionnaire?.resource?.name ?? "Questionnaire",
79+
questionnaireStatus: "completed", // TODO: Get the status of the questionnaire
8180
};
8281
});
8382

apps/expo/src/components/next-appointment.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export default function NextAppointment() {
4545
}, [appointmentQuery.data?.entry]);
4646

4747
if (isLoading) {
48-
return <LoaderComponent className="mt-8" />;
48+
return <LoaderComponent className="mt-12" />;
4949
}
5050

5151
if (isError) {

apps/expo/src/components/tasks.tsx

+16-10
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ export default function Tasks() {
2525
// Check if there are tasks to display
2626
const hasTasks = tasksQuery.data?.entry?.length ?? 0 > 0;
2727

28-
// Sort tasks by date using date-fns
28+
// Sort and filter tasks
2929
const sortedTasks = tasksQuery.data?.entry
3030
?.filter((item) => {
31-
if (taskStatus === "") {
32-
return true;
31+
// Exclude 'cancelled' tasks
32+
if (item.resource.status === "cancelled") {
33+
return false;
3334
}
34-
return item.resource.status === taskStatus;
35+
// If taskStatus is set, filter by it; otherwise, include all non-cancelled tasks
36+
return taskStatus === "" || item.resource.status === taskStatus;
3537
})
3638
.sort((a, b) =>
3739
compareAsc(
@@ -64,18 +66,22 @@ export default function Tasks() {
6466
item.resource.status === "requested"
6567
? "border-blue-400 bg-blue-500"
6668
: item.resource.status === "cancelled"
67-
? "border-yellow-400 bg-yellow-200"
68-
: "border-green-400 bg-green-200"
69+
? "border-yellow-400 bg-yellow-500"
70+
: "border-green-400 bg-green-500"
6971
}`}
7072
>
7173
<Text className="text-base font-medium text-white">
7274
{item.resource.description}
7375
</Text>
74-
<Text className="text-sm text-white">
75-
{formatDateTime(item.resource.authoredOn!)}
76-
</Text>
76+
{item.resource.status !== "completed" && (
77+
<Text className="text-sm text-white">
78+
{formatDateTime(item.resource.authoredOn!)}
79+
</Text>
80+
)}
7781
{item.resource.status === "completed" && (
78-
<Text>{item.resource.status}</Text>
82+
<Text className="text-sm capitalize text-white">
83+
{item.resource.status}
84+
</Text>
7985
)}
8086
</View>
8187
)}

0 commit comments

Comments
 (0)