Skip to main content
Glama
TaskListItem.tsx2.03 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { Group, Stack, Text } from '@mantine/core'; import { formatDate, formatHumanName } from '@medplum/core'; import { MedplumLink, StatusBadge, useResource } from '@medplum/react'; import type { HumanName, Task } from '@medplum/fhirtypes'; import type { JSX } from 'react'; import classes from './TaskListItem.module.css'; import cx from 'clsx'; interface TaskListItemProps { task: Task; selectedTask: Task | undefined; getTaskUri: (task: Task) => string; } export function TaskListItem(props: TaskListItemProps): JSX.Element { const { task, selectedTask, getTaskUri } = props; const isSelected = selectedTask?.id === task.id; const patient = useResource(task.for); const owner = useResource(task.owner); const taskFrom = task?.authoredOn ? `from ${formatDate(task?.authoredOn)}` : ''; const taskUrl = getTaskUri(task); return ( <MedplumLink to={taskUrl} underline="never"> <Group p="xs" align="center" wrap="nowrap" className={cx(classes.contentContainer, { [classes.selected]: isSelected, })} > <Stack gap={0} flex={1}> <Group justify="space-between" align="flex-start" wrap="nowrap"> <Text fw={700} className={classes.content}> {task.code?.text ?? `Task ${taskFrom}`} </Text> <StatusBadge status={task.status} /> </Group> <Stack gap={0} c="dimmed"> {task.restriction?.period && <Text fw={500}>Due {formatDate(task.restriction?.period?.end)}</Text>} {patient?.resourceType === 'Patient' && <Text>For: {formatHumanName(patient.name?.[0] as HumanName)}</Text>} {owner?.resourceType === 'Practitioner' && ( <Text size="sm">Assigned to {formatHumanName(owner.name?.[0] as HumanName)}</Text> )} </Stack> </Stack> </Group> </MedplumLink> ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server