-
-
-
setSearchQuery(e.target.value)}
- onSearch={() => null}
- containerProps={{ className: 'max-w-80' }}
- />
- {
- setFilters(value)
- }}
- availableItems={availableFilters}
- />
-
-
-
+
+
+
+
setSearchQuery(e.target.value)}
+ onSearch={() => null}
+ containerProps={{ className: 'max-w-80' }}
+ />
+
+
+
+
{
@@ -507,6 +509,20 @@ export const PatientList = forwardRef(({ initi
+ {isShowFilters && (
+
+ )}
+ {isShowSorting && (
+
+ )}
{patientsLoading && (
diff --git a/web/i18n/translations.ts b/web/i18n/translations.ts
index f0e4bc6..6c98567 100644
--- a/web/i18n/translations.ts
+++ b/web/i18n/translations.ts
@@ -107,6 +107,7 @@ export type TasksTranslationEntries = {
'myOpenTasks': string,
'myTasks': string,
'name': string,
+ 'nFilter': (values: { count: number }) => string,
'no': string,
'noClosedTasks': string,
'noLocationsFound': string,
@@ -117,6 +118,7 @@ export type TasksTranslationEntries = {
'notAssigned': string,
'notifications': string,
'nPatient': (values: { count: number }) => string,
+ 'nSorting': (values: { count: number }) => string,
'nTask': (values: { count: number }) => string,
'nYears': (values: { years: number }) => string,
'occupancy': string,
@@ -341,6 +343,12 @@ export const tasksTranslation: Translation
{
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} Filter`,
+ 'other': `${count} Filter`,
+ })
+ },
'no': `Nein`,
'noClosedTasks': `Keine erledigten Aufgaben`,
'noLocationsFound': `Keine Standorte gefunden`,
@@ -356,6 +364,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} Sortierung`,
+ 'other': `${count} Sortierungen`,
+ })
+ },
'nTask': ({ count }): string => {
return TranslationGen.resolvePlural(count, {
'=1': `${count} Aufgabe`,
@@ -643,6 +657,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} filter`,
+ 'other': `${count} filters`,
+ })
+ },
'no': `No`,
'noClosedTasks': `No closed tasks`,
'noLocationsFound': `No locations found`,
@@ -658,6 +678,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} sort`,
+ 'other': `${count} sorts`,
+ })
+ },
'nTask': ({ count }): string => {
return TranslationGen.resolvePlural(count, {
'=1': `${count} Task`,
@@ -945,6 +971,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} filtro`,
+ 'other': `${count} filtros`,
+ })
+ },
'no': `No`,
'noClosedTasks': `No hay tareas cerradas`,
'noLocationsFound': `No se encontraron ubicaciones`,
@@ -960,6 +992,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} ordenación`,
+ 'other': `${count} ordenaciones`,
+ })
+ },
'nTask': ({ count }): string => {
return TranslationGen.resolvePlural(count, {
'=1': `${count} Tarea`,
@@ -1246,6 +1284,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} filtre`,
+ 'other': `${count} filtres`,
+ })
+ },
'no': `Non`,
'noClosedTasks': `Aucune tâche terminée`,
'noLocationsFound': `Aucun emplacement trouvé`,
@@ -1261,6 +1305,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} tri`,
+ 'other': `${count} tris`,
+ })
+ },
'nTask': ({ count }): string => {
return TranslationGen.resolvePlural(count, {
'=1': `${count} Tâche`,
@@ -1547,6 +1597,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} filter`,
+ 'other': `${count} filters`,
+ })
+ },
'no': `Nee`,
'noClosedTasks': `Geen afgeronde taken`,
'noLocationsFound': `Geen locaties gevonden`,
@@ -1562,6 +1618,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} sortering`,
+ 'other': `${count} sorteringen`,
+ })
+ },
'nTask': ({ count }): string => {
return TranslationGen.resolvePlural(count, {
'=1': `${count} Taak`,
@@ -1851,6 +1913,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} filtro`,
+ 'other': `${count} filtros`,
+ })
+ },
'no': `Não`,
'noClosedTasks': `Nenhuma tarefa concluída`,
'noLocationsFound': `Nenhuma localização encontrada`,
@@ -1866,6 +1934,12 @@ export const tasksTranslation: Translation {
+ return TranslationGen.resolvePlural(count, {
+ '=1': `${count} ordenação`,
+ 'other': `${count} ordenações`,
+ })
+ },
'nTask': ({ count }): string => {
return TranslationGen.resolvePlural(count, {
'=1': `${count} Tarefa`,
diff --git a/web/locales/de-DE.arb b/web/locales/de-DE.arb
index 60aebb2..c92f2d9 100644
--- a/web/locales/de-DE.arb
+++ b/web/locales/de-DE.arb
@@ -128,6 +128,22 @@
"noPatient": "Kein Patient",
"noResultsFound": "Keine Ergebnisse gefunden",
"notAssigned": "Nicht zugewiesen",
+ "nFilter": "{count, plural, =1{# Filter} other{# Filter}}",
+ "@nFilter": {
+ "placeholders": {
+ "count": {
+ "type": "number"
+ }
+ }
+ },
+ "nSorting": "{count, plural, =1{# Sortierung} other{# Sortierungen}}",
+ "@nSorting": {
+ "placeholders": {
+ "count": {
+ "type": "number"
+ }
+ }
+ },
"nPatient": "{count, plural, =1{# Patient} other{# Patienten}}",
"@nPatient": {
"placeholders": {
diff --git a/web/locales/en-US.arb b/web/locales/en-US.arb
index 3fdd846..e2ab73e 100644
--- a/web/locales/en-US.arb
+++ b/web/locales/en-US.arb
@@ -128,6 +128,22 @@
"noPatient": "No Patient",
"noResultsFound": "No results found",
"notAssigned": "Not assigned",
+ "nFilter": "{count, plural, =1{# filter} other{# filters}}",
+ "@nFilter": {
+ "placeholders": {
+ "count": {
+ "type": "number"
+ }
+ }
+ },
+ "nSorting": "{count, plural, =1{# sort} other{# sorts}}",
+ "@nSorting": {
+ "placeholders": {
+ "count": {
+ "type": "number"
+ }
+ }
+ },
"nPatient": "{count, plural, =1{# Patient} other{# Patients}}",
"@nPatient": {
"placeholders": {
diff --git a/web/locales/es-ES.arb b/web/locales/es-ES.arb
index 09a5102..d21f2f5 100644
--- a/web/locales/es-ES.arb
+++ b/web/locales/es-ES.arb
@@ -88,6 +88,10 @@
"noPatient": "Sin paciente",
"noResultsFound": "No se encontraron resultados",
"notAssigned": "No asignado",
+ "nFilter": "{count, plural, =1{# filtro} other{# filtros}}",
+ "@nFilter": { "placeholders": { "count": { "type": "number" } } },
+ "nSorting": "{count, plural, =1{# ordenación} other{# ordenaciones}}",
+ "@nSorting": { "placeholders": { "count": { "type": "number" } } },
"nPatient": "{count, plural, =1{# Paciente} other{# Pacientes}}",
"@nPatient": { "placeholders": { "count": { "type": "number" } } },
"nTask": "{count, plural, =1{# Tarea} other{# Tareas}}",
diff --git a/web/locales/fr-FR.arb b/web/locales/fr-FR.arb
index a72f35b..d2cb726 100644
--- a/web/locales/fr-FR.arb
+++ b/web/locales/fr-FR.arb
@@ -88,6 +88,10 @@
"noPatient": "Aucun patient",
"noResultsFound": "Aucun résultat trouvé",
"notAssigned": "Non assigné",
+ "nFilter": "{count, plural, =1{# filtre} other{# filtres}}",
+ "@nFilter": { "placeholders": { "count": { "type": "number" } } },
+ "nSorting": "{count, plural, =1{# tri} other{# tris}}",
+ "@nSorting": { "placeholders": { "count": { "type": "number" } } },
"nPatient": "{count, plural, =1{# Patient} other{# Patients}}",
"@nPatient": { "placeholders": { "count": { "type": "number" } } },
"nTask": "{count, plural, =1{# Tâche} other{# Tâches}}",
diff --git a/web/locales/nl-NL.arb b/web/locales/nl-NL.arb
index 783e4ff..86ed0e6 100644
--- a/web/locales/nl-NL.arb
+++ b/web/locales/nl-NL.arb
@@ -88,6 +88,10 @@
"noPatient": "Geen patiënt",
"noResultsFound": "Geen resultaten gevonden",
"notAssigned": "Niet toegewezen",
+ "nFilter": "{count, plural, =1{# filter} other{# filters}}",
+ "@nFilter": { "placeholders": { "count": { "type": "number" } } },
+ "nSorting": "{count, plural, =1{# sortering} other{# sorteringen}}",
+ "@nSorting": { "placeholders": { "count": { "type": "number" } } },
"nPatient": "{count, plural, =1{# Patiënt} other{# Patiënten}}",
"@nPatient": { "placeholders": { "count": { "type": "number" } } },
"nTask": "{count, plural, =1{# Taak} other{# Taken}}",
diff --git a/web/locales/pt-BR.arb b/web/locales/pt-BR.arb
index 7585c9f..ba5cd79 100644
--- a/web/locales/pt-BR.arb
+++ b/web/locales/pt-BR.arb
@@ -88,6 +88,10 @@
"noPatient": "Sem paciente",
"noResultsFound": "Nenhum resultado encontrado",
"notAssigned": "Não atribuído",
+ "nFilter": "{count, plural, =1{# filtro} other{# filtros}}",
+ "@nFilter": { "placeholders": { "count": { "type": "number" } } },
+ "nSorting": "{count, plural, =1{# ordenação} other{# ordenações}}",
+ "@nSorting": { "placeholders": { "count": { "type": "number" } } },
"nPatient": "{count, plural, =1{# Paciente} other{# Pacientes}}",
"@nPatient": { "placeholders": { "count": { "type": "number" } } },
"nTask": "{count, plural, =1{# Tarefa} other{# Tarefas}}",
diff --git a/web/package-lock.json b/web/package-lock.json
index a745f64..cac640d 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -12,7 +12,7 @@
"@dnd-kit/core": "6.3.1",
"@dnd-kit/modifiers": "9.0.0",
"@dnd-kit/sortable": "7.0.2",
- "@helpwave/hightide": "0.9.2",
+ "@helpwave/hightide": "0.9.3",
"@helpwave/internationalization": "0.4.0",
"@tailwindcss/postcss": "4.1.3",
"@tanstack/react-query": "5.90.16",
@@ -2149,9 +2149,9 @@
}
},
"node_modules/@helpwave/hightide": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/@helpwave/hightide/-/hightide-0.9.2.tgz",
- "integrity": "sha512-g9n9KrW9qvBIilc0o8x1xBxS+Pg2Fl0jx698UP88sDawiIqLH2cir2/AP4sKTdr0Ojz9hdM9730+FaGD0UVIKw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/@helpwave/hightide/-/hightide-0.9.3.tgz",
+ "integrity": "sha512-lEeB9EQxmT1+Pnkt0sMDbUE2l+iUzd0NkGgMaIAdWHMlYWS1uD+gKswO/AmjsI9fggoC2KEeFNP+wTYdQJyLAw==",
"license": "MPL-2.0",
"dependencies": {
"@helpwave/internationalization": "0.4.0",
diff --git a/web/package.json b/web/package.json
index ebe4a8d..7f7d2e1 100644
--- a/web/package.json
+++ b/web/package.json
@@ -17,7 +17,7 @@
"@dnd-kit/core": "6.3.1",
"@dnd-kit/modifiers": "9.0.0",
"@dnd-kit/sortable": "7.0.2",
- "@helpwave/hightide": "0.9.2",
+ "@helpwave/hightide": "0.9.3",
"@helpwave/internationalization": "0.4.0",
"@tailwindcss/postcss": "4.1.3",
"@tanstack/react-query": "5.90.16",
From 64e778b56f70faafd202b4d560dc78983cf8cdb8 Mon Sep 17 00:00:00 2001
From: DasProffi <67233923+DasProffi@users.noreply.github.com>
Date: Sun, 22 Mar 2026 19:15:08 +0100
Subject: [PATCH 07/20] Update translations for fast access dialog and add
preparation for fast access dialog
---
web/components/tables/PatientList.tsx | 61 ++++++++++++++++++++++++++-
web/i18n/translations.ts | 14 ++++++
web/locales/de-DE.arb | 2 +
web/locales/en-US.arb | 2 +
web/locales/es-ES.arb | 2 +
web/locales/fr-FR.arb | 2 +
web/locales/nl-NL.arb | 2 +
web/locales/pt-BR.arb | 2 +
8 files changed, 85 insertions(+), 2 deletions(-)
diff --git a/web/components/tables/PatientList.tsx b/web/components/tables/PatientList.tsx
index 0fcce94..1ad3d2e 100644
--- a/web/components/tables/PatientList.tsx
+++ b/web/components/tables/PatientList.tsx
@@ -1,6 +1,6 @@
import { useMemo, useState, forwardRef, useImperativeHandle, useEffect, useCallback, useRef } from 'react'
import type { IdentifierFilterValue, FilterListItem, FilterListPopUpBuilderProps } from '@helpwave/hightide'
-import { Chip, FillerCell, HelpwaveLogo, LoadingContainer, SearchBar, ProgressIndicator, Tooltip, Drawer, TableProvider, TableDisplay, TableColumnSwitcher, TablePagination, IconButton, useLocale, FilterList, SortingList, Button, ExpansionIcon } from '@helpwave/hightide'
+import { Chip, FillerCell, HelpwaveLogo, LoadingContainer, SearchBar, ProgressIndicator, Tooltip, Drawer, TableProvider, TableDisplay, TableColumnSwitcher, TablePagination, IconButton, useLocale, FilterList, SortingList, Button, ExpansionIcon, Visibility, Dialog, Input } from '@helpwave/hightide'
import { PlusIcon } from 'lucide-react'
import type { LocationType } from '@/api/gql/generated'
import { Sex, PatientState, type GetPatientsQuery, type TaskType, PropertyEntity, type FullTextSearchInput, FieldType } from '@/api/gql/generated'
@@ -12,7 +12,7 @@ import { PatientStateChip } from '@/components/patients/PatientStateChip'
import { getLocationNodesByKind, type LocationKindColumn } from '@/utils/location'
import { useTasksTranslation } from '@/i18n/useTasksTranslation'
import { useTasksContext } from '@/hooks/useTasksContext'
-import type { ColumnDef, Row, TableState } from '@tanstack/table-core'
+import type { ColumnDef, Row, SortingState, TableState } from '@tanstack/table-core'
import { getPropertyColumnsForEntity } from '@/utils/propertyColumn'
import { useStorageSyncedTableState } from '@/hooks/useTableState'
import { usePropertyColumnVisibility } from '@/hooks/usePropertyColumnVisibility'
@@ -83,6 +83,17 @@ export const PatientList = forwardRef(({ initi
setColumnVisibility,
} = useStorageSyncedTableState('patient-list')
+ // TODO get from the fast access id
+ const initialFilters: IdentifierFilterValue[] = []
+ const initialSorting: SortingState = []
+
+ // TODO make the comparison more robust
+ const filtersChanged = useMemo(() => filters !== initialFilters, [filters, initialFilters])
+ const sortingChanged = useMemo(() => sorting !== initialSorting, [sorting, initialSorting])
+
+ const [isShowingFastAccessDialog, setIsShowingFastAccessDialog] = useState(false)
+ const [fastAccessName, setFastAccessName] = useState('')
+
usePropertyColumnVisibility(
propertyDefinitionsData,
PropertyEntity.Patient,
@@ -497,6 +508,12 @@ export const PatientList = forwardRef(({ initi
{translation('sorting') + ` (${sorting.length})`}
+
+
+
+ {/* TODO Offer undo in case this is already a fast access and add a update button */}
(({ initi
onSuccess={refetch}
/>
+
)
diff --git a/web/i18n/translations.ts b/web/i18n/translations.ts
index 6c98567..4a2e85e 100644
--- a/web/i18n/translations.ts
+++ b/web/i18n/translations.ts
@@ -13,6 +13,8 @@ export type TasksTranslationEntries = {
'account': string,
'active': string,
'add': string,
+ 'addFastAccess': string,
+ 'addFastAccessDescription': string,
'addPatient': string,
'addProperty': string,
'addTask': string,
@@ -221,6 +223,8 @@ export const tasksTranslation: Translation
Date: Sun, 22 Mar 2026 20:28:47 +0100
Subject: [PATCH 08/20] chore: possible
---
backend/api/inputs.py | 31 ++
backend/api/resolvers/__init__.py | 3 +
backend/api/resolvers/saved_view.py | 178 +++++++++++
backend/api/types/saved_view.py | 41 +++
.../versions/add_saved_views_table.py | 38 +++
backend/database/models/__init__.py | 1 +
backend/database/models/saved_view.py | 48 +++
backend/database/models/user.py | 4 +
docs/VIEWS_ARCHITECTURE.md | 79 +++++
web/api/gql/generated.ts | 129 +++++++-
web/api/graphql/SavedView.graphql | 83 +++++
web/components/layout/Page.tsx | 33 +-
web/components/tables/PatientList.tsx | 110 +++----
.../views/PatientViewTasksPanel.tsx | 109 +++++++
web/components/views/SaveViewDialog.tsx | 102 ++++++
.../views/TaskViewPatientsPanel.tsx | 91 ++++++
web/data/hooks/index.ts | 1 +
web/data/hooks/useSavedViews.ts | 25 ++
web/data/index.ts | 2 +
web/i18n/translations.ts | 105 ++++++
web/locales/de-DE.arb | 15 +
web/locales/en-US.arb | 15 +
web/locales/es-ES.arb | 15 +
web/locales/fr-FR.arb | 15 +
web/locales/nl-NL.arb | 15 +
web/locales/pt-BR.arb | 15 +
web/pages/settings/index.tsx | 16 +-
web/pages/settings/views.tsx | 271 ++++++++++++++++
web/pages/tasks/index.tsx | 42 ++-
web/pages/view/[uid].tsx | 301 ++++++++++++++++++
web/utils/viewDefinition.ts | 93 ++++++
31 files changed, 1962 insertions(+), 64 deletions(-)
create mode 100644 backend/api/resolvers/saved_view.py
create mode 100644 backend/api/types/saved_view.py
create mode 100644 backend/database/migrations/versions/add_saved_views_table.py
create mode 100644 backend/database/models/saved_view.py
create mode 100644 docs/VIEWS_ARCHITECTURE.md
create mode 100644 web/api/graphql/SavedView.graphql
create mode 100644 web/components/views/PatientViewTasksPanel.tsx
create mode 100644 web/components/views/SaveViewDialog.tsx
create mode 100644 web/components/views/TaskViewPatientsPanel.tsx
create mode 100644 web/data/hooks/useSavedViews.ts
create mode 100644 web/pages/settings/views.tsx
create mode 100644 web/pages/view/[uid].tsx
create mode 100644 web/utils/viewDefinition.ts
diff --git a/backend/api/inputs.py b/backend/api/inputs.py
index 204a80f..4db40a1 100644
--- a/backend/api/inputs.py
+++ b/backend/api/inputs.py
@@ -286,3 +286,34 @@ class FullTextSearchInput:
search_columns: list[str] | None = None
include_properties: bool = False
property_definition_ids: list[str] | None = None
+
+
+@strawberry.enum
+class SavedViewEntityType(Enum):
+ TASK = "task"
+ PATIENT = "patient"
+
+
+@strawberry.enum
+class SavedViewVisibility(Enum):
+ PRIVATE = "private"
+ LINK_SHARED = "link_shared"
+
+
+@strawberry.input
+class CreateSavedViewInput:
+ name: str
+ base_entity_type: SavedViewEntityType
+ filter_definition: str
+ sort_definition: str
+ parameters: str
+ visibility: SavedViewVisibility = SavedViewVisibility.PRIVATE
+
+
+@strawberry.input
+class UpdateSavedViewInput:
+ name: str | None = None
+ filter_definition: str | None = None
+ sort_definition: str | None = None
+ parameters: str | None = None
+ visibility: SavedViewVisibility | None = None
diff --git a/backend/api/resolvers/__init__.py b/backend/api/resolvers/__init__.py
index b053198..c65a364 100644
--- a/backend/api/resolvers/__init__.py
+++ b/backend/api/resolvers/__init__.py
@@ -4,6 +4,7 @@
from .location import LocationMutation, LocationQuery, LocationSubscription
from .patient import PatientMutation, PatientQuery, PatientSubscription
from .property import PropertyDefinitionMutation, PropertyDefinitionQuery
+from .saved_view import SavedViewMutation, SavedViewQuery
from .task import TaskMutation, TaskQuery, TaskSubscription
from .user import UserMutation, UserQuery
@@ -16,6 +17,7 @@ class Query(
PropertyDefinitionQuery,
UserQuery,
AuditQuery,
+ SavedViewQuery,
):
pass
@@ -27,6 +29,7 @@ class Mutation(
PropertyDefinitionMutation,
LocationMutation,
UserMutation,
+ SavedViewMutation,
):
pass
diff --git a/backend/api/resolvers/saved_view.py b/backend/api/resolvers/saved_view.py
new file mode 100644
index 0000000..31d0349
--- /dev/null
+++ b/backend/api/resolvers/saved_view.py
@@ -0,0 +1,178 @@
+import json
+
+import strawberry
+from graphql import GraphQLError
+from sqlalchemy import select
+
+from api.context import Info
+from api.services.base import BaseRepository
+from api.inputs import (
+ CreateSavedViewInput,
+ SavedViewVisibility,
+ UpdateSavedViewInput,
+)
+from api.types.saved_view import SavedViewType
+from database import models
+
+
+def _require_user(info: Info) -> models.User:
+ user = info.context.user
+ if not user:
+ raise GraphQLError("Authentication required")
+ return user
+
+
+@strawberry.type
+class SavedViewQuery:
+ @strawberry.field
+ async def saved_view(self, info: Info, id: strawberry.ID) -> SavedViewType | None:
+ db = info.context.db
+ result = await db.execute(
+ select(models.SavedView).where(models.SavedView.id == str(id))
+ )
+ row = result.scalars().first()
+ if not row:
+ return None
+ uid = info.context.user.id if info.context.user else None
+ if row.owner_user_id != uid and row.visibility != SavedViewVisibility.LINK_SHARED.value:
+ raise GraphQLError("Not found or access denied")
+ return SavedViewType.from_model(row, current_user_id=uid)
+
+ @strawberry.field
+ async def my_saved_views(self, info: Info) -> list[SavedViewType]:
+ user = _require_user(info)
+ db = info.context.db
+ result = await db.execute(
+ select(models.SavedView)
+ .where(models.SavedView.owner_user_id == user.id)
+ .order_by(models.SavedView.updated_at.desc())
+ )
+ rows = result.scalars().all()
+ return [SavedViewType.from_model(r, current_user_id=user.id) for r in rows]
+
+
+@strawberry.type
+class SavedViewMutation:
+ @strawberry.mutation
+ async def create_saved_view(
+ self,
+ info: Info,
+ data: CreateSavedViewInput,
+ ) -> SavedViewType:
+ user = _require_user(info)
+ for blob, label in (
+ (data.filter_definition, "filter_definition"),
+ (data.sort_definition, "sort_definition"),
+ (data.parameters, "parameters"),
+ ):
+ try:
+ json.loads(blob)
+ except json.JSONDecodeError as e:
+ raise GraphQLError(f"Invalid JSON in {label}") from e
+
+ row = models.SavedView(
+ name=data.name.strip(),
+ base_entity_type=data.base_entity_type.value,
+ filter_definition=data.filter_definition,
+ sort_definition=data.sort_definition,
+ parameters=data.parameters,
+ owner_user_id=user.id,
+ visibility=data.visibility.value,
+ )
+ info.context.db.add(row)
+ await info.context.db.commit()
+ await info.context.db.refresh(row)
+ return SavedViewType.from_model(row, current_user_id=user.id)
+
+ @strawberry.mutation
+ async def update_saved_view(
+ self,
+ info: Info,
+ id: strawberry.ID,
+ data: UpdateSavedViewInput,
+ ) -> SavedViewType:
+ user = _require_user(info)
+ db = info.context.db
+ result = await db.execute(
+ select(models.SavedView).where(models.SavedView.id == str(id))
+ )
+ row = result.scalars().first()
+ if not row:
+ raise GraphQLError("View not found")
+ if row.owner_user_id != user.id:
+ raise GraphQLError("Forbidden")
+
+ if data.name is not None:
+ row.name = data.name.strip()
+ if data.filter_definition is not None:
+ try:
+ json.loads(data.filter_definition)
+ except json.JSONDecodeError as e:
+ raise GraphQLError("Invalid JSON in filter_definition") from e
+ row.filter_definition = data.filter_definition
+ if data.sort_definition is not None:
+ try:
+ json.loads(data.sort_definition)
+ except json.JSONDecodeError as e:
+ raise GraphQLError("Invalid JSON in sort_definition") from e
+ row.sort_definition = data.sort_definition
+ if data.parameters is not None:
+ try:
+ json.loads(data.parameters)
+ except json.JSONDecodeError as e:
+ raise GraphQLError("Invalid JSON in parameters") from e
+ row.parameters = data.parameters
+ if data.visibility is not None:
+ row.visibility = data.visibility.value
+
+ await db.commit()
+ await db.refresh(row)
+ return SavedViewType.from_model(row, current_user_id=user.id)
+
+ @strawberry.mutation
+ async def delete_saved_view(self, info: Info, id: strawberry.ID) -> bool:
+ user = _require_user(info)
+ db = info.context.db
+ result = await db.execute(
+ select(models.SavedView).where(models.SavedView.id == str(id))
+ )
+ row = result.scalars().first()
+ if not row:
+ return False
+ if row.owner_user_id != user.id:
+ raise GraphQLError("Forbidden")
+ repo = BaseRepository(db, models.SavedView)
+ await repo.delete(row)
+ return True
+
+ @strawberry.mutation
+ async def duplicate_saved_view(
+ self,
+ info: Info,
+ id: strawberry.ID,
+ name: str,
+ ) -> SavedViewType:
+ user = _require_user(info)
+ db = info.context.db
+ result = await db.execute(
+ select(models.SavedView).where(models.SavedView.id == str(id))
+ )
+ src = result.scalars().first()
+ if not src:
+ raise GraphQLError("View not found")
+ if src.owner_user_id != user.id and src.visibility != SavedViewVisibility.LINK_SHARED.value:
+ raise GraphQLError("Not found or access denied")
+
+ clone = models.SavedView(
+ name=name.strip(),
+ base_entity_type=src.base_entity_type,
+ filter_definition=src.filter_definition,
+ sort_definition=src.sort_definition,
+ parameters=src.parameters,
+ owner_user_id=user.id,
+ visibility=SavedViewVisibility.PRIVATE.value,
+ )
+ db.add(clone)
+ await db.commit()
+ await db.refresh(clone)
+ return SavedViewType.from_model(clone, current_user_id=user.id)
diff --git a/backend/api/types/saved_view.py b/backend/api/types/saved_view.py
new file mode 100644
index 0000000..b9eca42
--- /dev/null
+++ b/backend/api/types/saved_view.py
@@ -0,0 +1,41 @@
+from __future__ import annotations
+
+import strawberry
+
+from api.inputs import SavedViewEntityType, SavedViewVisibility
+from database.models.saved_view import SavedView as SavedViewModel
+
+
+@strawberry.type(name="SavedView")
+class SavedViewType:
+ id: strawberry.ID
+ name: str
+ base_entity_type: SavedViewEntityType
+ filter_definition: str
+ sort_definition: str
+ parameters: str
+ owner_user_id: strawberry.ID
+ visibility: SavedViewVisibility
+ created_at: str
+ updated_at: str
+ is_owner: bool
+
+ @staticmethod
+ def from_model(
+ row: SavedViewModel,
+ *,
+ current_user_id: str | None,
+ ) -> "SavedViewType":
+ return SavedViewType(
+ id=strawberry.ID(row.id),
+ name=row.name,
+ base_entity_type=SavedViewEntityType(row.base_entity_type),
+ filter_definition=row.filter_definition,
+ sort_definition=row.sort_definition,
+ parameters=row.parameters,
+ owner_user_id=strawberry.ID(row.owner_user_id),
+ visibility=SavedViewVisibility(row.visibility),
+ created_at=row.created_at.isoformat() if row.created_at else "",
+ updated_at=row.updated_at.isoformat() if row.updated_at else "",
+ is_owner=current_user_id is not None and row.owner_user_id == current_user_id,
+ )
diff --git a/backend/database/migrations/versions/add_saved_views_table.py b/backend/database/migrations/versions/add_saved_views_table.py
new file mode 100644
index 0000000..82cc9e0
--- /dev/null
+++ b/backend/database/migrations/versions/add_saved_views_table.py
@@ -0,0 +1,38 @@
+"""Add saved_views table for persistent user views.
+
+Revision ID: add_saved_views_table
+Revises: add_property_value_user_value
+Create Date: 2026-02-10
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+
+revision: str = "add_saved_views_table"
+down_revision: Union[str, Sequence[str], None] = "add_property_value_user_value"
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ op.create_table(
+ "saved_views",
+ sa.Column("id", sa.String(), nullable=False),
+ sa.Column("name", sa.String(), nullable=False),
+ sa.Column("base_entity_type", sa.String(), nullable=False),
+ sa.Column("filter_definition", sa.Text(), nullable=False),
+ sa.Column("sort_definition", sa.Text(), nullable=False),
+ sa.Column("parameters", sa.Text(), nullable=False),
+ sa.Column("owner_user_id", sa.String(), nullable=False),
+ sa.Column("visibility", sa.String(), nullable=False),
+ sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now()),
+ sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.func.now()),
+ sa.ForeignKeyConstraint(["owner_user_id"], ["users.id"]),
+ sa.PrimaryKeyConstraint("id"),
+ )
+
+
+def downgrade() -> None:
+ op.drop_table("saved_views")
diff --git a/backend/database/models/__init__.py b/backend/database/models/__init__.py
index 8108c8c..09b1c11 100644
--- a/backend/database/models/__init__.py
+++ b/backend/database/models/__init__.py
@@ -4,3 +4,4 @@
from .task import Task, task_dependencies # noqa: F401
from .property import PropertyDefinition, PropertyValue # noqa: F401
from .scaffold import ScaffoldImportState # noqa: F401
+from .saved_view import SavedView # noqa: F401
diff --git a/backend/database/models/saved_view.py b/backend/database/models/saved_view.py
new file mode 100644
index 0000000..e885d18
--- /dev/null
+++ b/backend/database/models/saved_view.py
@@ -0,0 +1,48 @@
+from __future__ import annotations
+
+import uuid
+from datetime import datetime
+from typing import TYPE_CHECKING
+
+from database.models.base import Base
+from sqlalchemy import DateTime, ForeignKey, String, Text, func
+from sqlalchemy.orm import Mapped, mapped_column, relationship
+
+if TYPE_CHECKING:
+ from .user import User
+
+
+class SavedView(Base):
+ """
+ Persistent user-defined view: saved filters, sort, scope (parameters), and entity type.
+ filter_definition / sort_definition / parameters store JSON as text (SQLite + Postgres compatible).
+ """
+
+ __tablename__ = "saved_views"
+
+ id: Mapped[str] = mapped_column(
+ String,
+ primary_key=True,
+ default=lambda: str(uuid.uuid4()),
+ )
+ name: Mapped[str] = mapped_column(String, nullable=False)
+ base_entity_type: Mapped[str] = mapped_column(
+ String, nullable=False
+ ) # 'task' | 'patient'
+ filter_definition: Mapped[str] = mapped_column(Text, nullable=False, default="{}")
+ sort_definition: Mapped[str] = mapped_column(Text, nullable=False, default="{}")
+ parameters: Mapped[str] = mapped_column(Text, nullable=False, default="{}")
+ owner_user_id: Mapped[str] = mapped_column(
+ String, ForeignKey("users.id"), nullable=False
+ )
+ visibility: Mapped[str] = mapped_column(
+ String, nullable=False, default="private"
+ ) # 'private' | 'link_shared'
+ created_at: Mapped[datetime] = mapped_column(
+ DateTime(timezone=True), server_default=func.now()
+ )
+ updated_at: Mapped[datetime] = mapped_column(
+ DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
+ )
+
+ owner: Mapped["User"] = relationship("User", back_populates="saved_views")
diff --git a/backend/database/models/user.py b/backend/database/models/user.py
index f8b0f0a..7c904ab 100644
--- a/backend/database/models/user.py
+++ b/backend/database/models/user.py
@@ -10,6 +10,7 @@
if TYPE_CHECKING:
from .location import LocationNode
+ from .saved_view import SavedView
from .task import Task
user_root_locations = Table(
@@ -44,6 +45,9 @@ class User(Base):
)
tasks: Mapped[list[Task]] = relationship("Task", back_populates="assignee")
+ saved_views: Mapped[list["SavedView"]] = relationship(
+ "SavedView", back_populates="owner"
+ )
root_locations: Mapped[list[LocationNode]] = relationship(
"LocationNode",
secondary=user_root_locations,
diff --git a/docs/VIEWS_ARCHITECTURE.md b/docs/VIEWS_ARCHITECTURE.md
new file mode 100644
index 0000000..a21af7b
--- /dev/null
+++ b/docs/VIEWS_ARCHITECTURE.md
@@ -0,0 +1,79 @@
+# Saved views (persistent views)
+
+## Concept
+
+A **SavedView** stores a named configuration for list screens:
+
+| Field | Purpose |
+|--------|---------|
+| `filterDefinition` | JSON string: column filters (same wire format as `useStorageSyncedTableState` filters). |
+| `sortDefinition` | JSON string: TanStack `SortingState` array. |
+| `parameters` | JSON string: **scope** and cross-entity context — `rootLocationIds`, `locationId`, `searchQuery` (patient), `assigneeId` (task / my tasks). |
+| `baseEntityType` | `PATIENT` or `TASK` — primary tab when opening `/view/:uid`. |
+| `visibility` | `PRIVATE` or `LINK_SHARED` (share by link / UID). |
+
+Location is **not** a separate route anymore for saved views: it is encoded in `parameters` (`rootLocationIds`, `locationId`).
+
+## Cross-entity model
+
+- **Patient view**
+ - **Patients tab**: `PatientList` hydrated from `filterDefinition` / `sortDefinition` / parameters.
+ - **Tasks tab**: `PatientViewTasksPanel` runs the **same patient query** (`usePatients` with identical filters/sort/scope) and flattens tasks from those patients — the task universe is *derived from the patient universe*, not an ad-hoc client filter.
+
+- **Task view**
+ - **Tasks tab**: `useTasksPaginated` with filters from the view + scope from parameters (`rootLocationIds`, `assigneeId`).
+ - **Patients tab**: `TaskViewPatientsPanel` runs **`useTasks` without pagination** with the same task filters/sort/scope and builds **distinct patients** from `tasks[].patient`.
+
+## GraphQL (examples)
+
+```graphql
+query {
+ savedView(id: "…") {
+ id
+ name
+ baseEntityType
+ filterDefinition
+ sortDefinition
+ parameters
+ isOwner
+ visibility
+ }
+}
+
+mutation {
+ createSavedView(data: {
+ name: "ICU patients"
+ baseEntityType: PATIENT
+ filterDefinition: "[]"
+ sortDefinition: "[]"
+ parameters: "{\"rootLocationIds\":[\"…\"],\"locationId\":null,\"searchQuery\":\"\"}"
+ visibility: PRIVATE
+ }) { id }
+}
+```
+
+```graphql
+mutation {
+ duplicateSavedView(id: "…", name: "Copy of shared view") { id }
+}
+```
+
+## Frontend entry points
+
+| Area | Path / component |
+|------|-------------------|
+| Open view | `/view/[uid]` |
+| Save from patients | `PatientList` → `SaveViewDialog` |
+| Save from my tasks | `/tasks` → `SaveViewDialog` |
+| Sidebar | `Page` → expandable **Saved views** + link to settings |
+| Manage | `/settings/views` (table: open, rename, share link, duplicate, delete) |
+
+## Migrations
+
+Apply Alembic migration `add_saved_views_table` (or your project’s revision chain) so the `saved_views` table exists before using the API.
+
+## Follow-ups
+
+- **Update view** from UI (owner edits in place → `updateSavedView`) instead of only “save as new”.
+- **Share visibility** UI (`LINK_SHARED`) and server checks are already modeled; expose in settings.
+- **Redirect** `/location/[id]` → a default view or keep both during transition.
diff --git a/web/api/gql/generated.ts b/web/api/gql/generated.ts
index c614ec5..15c77f9 100644
--- a/web/api/gql/generated.ts
+++ b/web/api/gql/generated.ts
@@ -61,6 +61,15 @@ export type CreatePropertyDefinitionInput = {
options?: InputMaybe>;
};
+export type CreateSavedViewInput = {
+ baseEntityType: SavedViewEntityType;
+ filterDefinition: Scalars['String']['input'];
+ name: Scalars['String']['input'];
+ parameters: Scalars['String']['input'];
+ sortDefinition: Scalars['String']['input'];
+ visibility?: SavedViewVisibility;
+};
+
export type CreateTaskInput = {
assigneeId?: InputMaybe;
assigneeTeamId?: InputMaybe;
@@ -195,12 +204,15 @@ export type Mutation = {
createLocationNode: LocationNodeType;
createPatient: PatientType;
createPropertyDefinition: PropertyDefinitionType;
+ createSavedView: SavedView;
createTask: TaskType;
deleteLocationNode: Scalars['Boolean']['output'];
deletePatient: Scalars['Boolean']['output'];
deletePropertyDefinition: Scalars['Boolean']['output'];
+ deleteSavedView: Scalars['Boolean']['output'];
deleteTask: Scalars['Boolean']['output'];
dischargePatient: PatientType;
+ duplicateSavedView: SavedView;
markPatientDead: PatientType;
reopenTask: TaskType;
unassignTask: TaskType;
@@ -209,6 +221,7 @@ export type Mutation = {
updatePatient: PatientType;
updateProfilePicture: UserType;
updatePropertyDefinition: PropertyDefinitionType;
+ updateSavedView: SavedView;
updateTask: TaskType;
waitPatient: PatientType;
};
@@ -251,6 +264,11 @@ export type MutationCreatePropertyDefinitionArgs = {
};
+export type MutationCreateSavedViewArgs = {
+ data: CreateSavedViewInput;
+};
+
+
export type MutationCreateTaskArgs = {
data: CreateTaskInput;
};
@@ -271,6 +289,11 @@ export type MutationDeletePropertyDefinitionArgs = {
};
+export type MutationDeleteSavedViewArgs = {
+ id: Scalars['ID']['input'];
+};
+
+
export type MutationDeleteTaskArgs = {
id: Scalars['ID']['input'];
};
@@ -281,6 +304,12 @@ export type MutationDischargePatientArgs = {
};
+export type MutationDuplicateSavedViewArgs = {
+ id: Scalars['ID']['input'];
+ name: Scalars['String']['input'];
+};
+
+
export type MutationMarkPatientDeadArgs = {
id: Scalars['ID']['input'];
};
@@ -324,6 +353,12 @@ export type MutationUpdatePropertyDefinitionArgs = {
};
+export type MutationUpdateSavedViewArgs = {
+ data: UpdateSavedViewInput;
+ id: Scalars['ID']['input'];
+};
+
+
export type MutationUpdateTaskArgs = {
data: UpdateTaskInput;
id: Scalars['ID']['input'];
@@ -426,6 +461,7 @@ export type Query = {
locationNodes: Array;
locationRoots: Array;
me?: Maybe;
+ mySavedViews: Array;
patient?: Maybe;
patients: Array;
patientsTotal: Scalars['Int']['output'];
@@ -434,6 +470,7 @@ export type Query = {
recentPatientsTotal: Scalars['Int']['output'];
recentTasks: Array;
recentTasksTotal: Scalars['Int']['output'];
+ savedView?: Maybe;
task?: Maybe;
tasks: Array;
tasksTotal: Scalars['Int']['output'];
@@ -494,6 +531,7 @@ export type QueryPatientsTotalArgs = {
export type QueryRecentPatientsArgs = {
filtering?: InputMaybe>;
pagination?: InputMaybe;
+ rootLocationIds?: InputMaybe>;
search?: InputMaybe;
sorting?: InputMaybe>;
};
@@ -501,6 +539,7 @@ export type QueryRecentPatientsArgs = {
export type QueryRecentPatientsTotalArgs = {
filtering?: InputMaybe>;
+ rootLocationIds?: InputMaybe>;
search?: InputMaybe;
sorting?: InputMaybe>;
};
@@ -509,6 +548,7 @@ export type QueryRecentPatientsTotalArgs = {
export type QueryRecentTasksArgs = {
filtering?: InputMaybe>;
pagination?: InputMaybe;
+ rootLocationIds?: InputMaybe>;
search?: InputMaybe;
sorting?: InputMaybe>;
};
@@ -516,11 +556,17 @@ export type QueryRecentTasksArgs = {
export type QueryRecentTasksTotalArgs = {
filtering?: InputMaybe>;
+ rootLocationIds?: InputMaybe>;
search?: InputMaybe;
sorting?: InputMaybe>;
};
+export type QuerySavedViewArgs = {
+ id: Scalars['ID']['input'];
+};
+
+
export type QueryTaskArgs = {
id: Scalars['ID']['input'];
};
@@ -561,6 +607,31 @@ export type QueryUsersArgs = {
sorting?: InputMaybe>;
};
+export type SavedView = {
+ __typename?: 'SavedView';
+ baseEntityType: SavedViewEntityType;
+ createdAt: Scalars['String']['output'];
+ filterDefinition: Scalars['String']['output'];
+ id: Scalars['ID']['output'];
+ isOwner: Scalars['Boolean']['output'];
+ name: Scalars['String']['output'];
+ ownerUserId: Scalars['ID']['output'];
+ parameters: Scalars['String']['output'];
+ sortDefinition: Scalars['String']['output'];
+ updatedAt: Scalars['String']['output'];
+ visibility: SavedViewVisibility;
+};
+
+export enum SavedViewEntityType {
+ Patient = 'PATIENT',
+ Task = 'TASK'
+}
+
+export enum SavedViewVisibility {
+ LinkShared = 'LINK_SHARED',
+ Private = 'PRIVATE'
+}
+
export enum Sex {
Female = 'FEMALE',
Male = 'MALE',
@@ -697,6 +768,14 @@ export type UpdatePropertyDefinitionInput = {
options?: InputMaybe>;
};
+export type UpdateSavedViewInput = {
+ filterDefinition?: InputMaybe;
+ name?: InputMaybe;
+ parameters?: InputMaybe;
+ sortDefinition?: InputMaybe;
+ visibility?: InputMaybe;
+};
+
export type UpdateTaskInput = {
assigneeId?: InputMaybe;
assigneeTeamId?: InputMaybe;
@@ -921,6 +1000,48 @@ export type GetPropertiesForSubjectQueryVariables = Exact<{
export type GetPropertiesForSubjectQuery = { __typename?: 'Query', propertyDefinitions: Array<{ __typename?: 'PropertyDefinitionType', id: string, name: string, description?: string | null, fieldType: FieldType, isActive: boolean, allowedEntities: Array, options: Array }> };
+export type MySavedViewsQueryVariables = Exact<{ [key: string]: never; }>;
+
+
+export type MySavedViewsQuery = { __typename?: 'Query', mySavedViews: Array<{ __typename?: 'SavedView', id: string, name: string, baseEntityType: SavedViewEntityType, filterDefinition: string, sortDefinition: string, parameters: string, ownerUserId: string, visibility: SavedViewVisibility, createdAt: string, updatedAt: string, isOwner: boolean }> };
+
+export type SavedViewQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
+
+
+export type SavedViewQuery = { __typename?: 'Query', savedView?: { __typename?: 'SavedView', id: string, name: string, baseEntityType: SavedViewEntityType, filterDefinition: string, sortDefinition: string, parameters: string, ownerUserId: string, visibility: SavedViewVisibility, createdAt: string, updatedAt: string, isOwner: boolean } | null };
+
+export type CreateSavedViewMutationVariables = Exact<{
+ data: CreateSavedViewInput;
+}>;
+
+
+export type CreateSavedViewMutation = { __typename?: 'Mutation', createSavedView: { __typename?: 'SavedView', id: string, name: string, baseEntityType: SavedViewEntityType, filterDefinition: string, sortDefinition: string, parameters: string, ownerUserId: string, visibility: SavedViewVisibility, createdAt: string, updatedAt: string, isOwner: boolean } };
+
+export type UpdateSavedViewMutationVariables = Exact<{
+ id: Scalars['ID']['input'];
+ data: UpdateSavedViewInput;
+}>;
+
+
+export type UpdateSavedViewMutation = { __typename?: 'Mutation', updateSavedView: { __typename?: 'SavedView', id: string, name: string, baseEntityType: SavedViewEntityType, filterDefinition: string, sortDefinition: string, parameters: string, ownerUserId: string, visibility: SavedViewVisibility, createdAt: string, updatedAt: string, isOwner: boolean } };
+
+export type DeleteSavedViewMutationVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
+
+
+export type DeleteSavedViewMutation = { __typename?: 'Mutation', deleteSavedView: boolean };
+
+export type DuplicateSavedViewMutationVariables = Exact<{
+ id: Scalars['ID']['input'];
+ name: Scalars['String']['input'];
+}>;
+
+
+export type DuplicateSavedViewMutation = { __typename?: 'Mutation', duplicateSavedView: { __typename?: 'SavedView', id: string, name: string, baseEntityType: SavedViewEntityType, filterDefinition: string, sortDefinition: string, parameters: string, ownerUserId: string, visibility: SavedViewVisibility, createdAt: string, updatedAt: string, isOwner: boolean } };
+
export type PatientCreatedSubscriptionVariables = Exact<{
rootLocationIds?: InputMaybe | Scalars['ID']['input']>;
}>;
@@ -1061,7 +1182,7 @@ export const GetAuditLogsDocument = {"kind":"Document","definitions":[{"kind":"O
export const GetLocationNodeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetLocationNode"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"locationNode"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parentId"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parentId"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parentId"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parentId"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parentId"}}]}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode;
export const GetLocationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetLocations"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"offset"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"locationNodes"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"offset"},"value":{"kind":"Variable","name":{"kind":"Name","value":"offset"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parentId"}}]}}]}}]} as unknown as DocumentNode;
export const GetMyTasksDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetMyTasks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"me"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"tasks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"done"}},{"kind":"Field","name":{"kind":"Name","value":"dueDate"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"estimatedTime"}},{"kind":"Field","name":{"kind":"Name","value":"creationDate"}},{"kind":"Field","name":{"kind":"Name","value":"updateDate"}},{"kind":"Field","name":{"kind":"Name","value":"patient"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"assignedLocation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignedLocations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignee"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}}]}}]}}]}}]} as unknown as DocumentNode;
-export const GetOverviewDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOverviewData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsFiltering"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FilterInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSorting"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SortInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsPagination"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginationInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSearch"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FullTextSearchInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksFiltering"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FilterInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSorting"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SortInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksPagination"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginationInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSearch"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FullTextSearchInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"recentPatients"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsPagination"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSearch"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sex"}},{"kind":"Field","name":{"kind":"Name","value":"birthdate"}},{"kind":"Field","name":{"kind":"Name","value":"position"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tasks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateDate"}}]}},{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"definition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"textValue"}},{"kind":"Field","name":{"kind":"Name","value":"numberValue"}},{"kind":"Field","name":{"kind":"Name","value":"booleanValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateTimeValue"}},{"kind":"Field","name":{"kind":"Name","value":"selectValue"}},{"kind":"Field","name":{"kind":"Name","value":"multiSelectValues"}},{"kind":"Field","name":{"kind":"Name","value":"userValue"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentPatientsTotal"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSearch"}}}]},{"kind":"Field","name":{"kind":"Name","value":"recentTasks"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksPagination"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSearch"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"done"}},{"kind":"Field","name":{"kind":"Name","value":"dueDate"}},{"kind":"Field","name":{"kind":"Name","value":"updateDate"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"assignee"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"patient"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"position"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"definition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"textValue"}},{"kind":"Field","name":{"kind":"Name","value":"numberValue"}},{"kind":"Field","name":{"kind":"Name","value":"booleanValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateTimeValue"}},{"kind":"Field","name":{"kind":"Name","value":"selectValue"}},{"kind":"Field","name":{"kind":"Name","value":"multiSelectValues"}},{"kind":"Field","name":{"kind":"Name","value":"userValue"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentTasksTotal"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSearch"}}}]}]}}]} as unknown as DocumentNode;
+export const GetOverviewDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOverviewData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsFiltering"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FilterInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSorting"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SortInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsPagination"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginationInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSearch"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FullTextSearchInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksFiltering"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FilterInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSorting"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SortInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksPagination"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginationInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSearch"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FullTextSearchInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"recentPatients"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsPagination"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSearch"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sex"}},{"kind":"Field","name":{"kind":"Name","value":"birthdate"}},{"kind":"Field","name":{"kind":"Name","value":"position"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tasks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateDate"}}]}},{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"definition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"textValue"}},{"kind":"Field","name":{"kind":"Name","value":"numberValue"}},{"kind":"Field","name":{"kind":"Name","value":"booleanValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateTimeValue"}},{"kind":"Field","name":{"kind":"Name","value":"selectValue"}},{"kind":"Field","name":{"kind":"Name","value":"multiSelectValues"}},{"kind":"Field","name":{"kind":"Name","value":"userValue"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentPatientsTotal"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentPatientsSearch"}}}]},{"kind":"Field","name":{"kind":"Name","value":"recentTasks"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksPagination"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSearch"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"done"}},{"kind":"Field","name":{"kind":"Name","value":"dueDate"}},{"kind":"Field","name":{"kind":"Name","value":"updateDate"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"assignee"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"patient"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"position"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"definition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"textValue"}},{"kind":"Field","name":{"kind":"Name","value":"numberValue"}},{"kind":"Field","name":{"kind":"Name","value":"booleanValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateTimeValue"}},{"kind":"Field","name":{"kind":"Name","value":"selectValue"}},{"kind":"Field","name":{"kind":"Name","value":"multiSelectValues"}},{"kind":"Field","name":{"kind":"Name","value":"userValue"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentTasksTotal"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksFiltering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"recentTasksSearch"}}}]}]}}]} as unknown as DocumentNode;
export const GetPatientDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetPatient"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"patient"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"firstname"}},{"kind":"Field","name":{"kind":"Name","value":"lastname"}},{"kind":"Field","name":{"kind":"Name","value":"birthdate"}},{"kind":"Field","name":{"kind":"Name","value":"sex"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"checksum"}},{"kind":"Field","name":{"kind":"Name","value":"assignedLocation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignedLocations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"clinic"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"position"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"teams"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tasks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"done"}},{"kind":"Field","name":{"kind":"Name","value":"dueDate"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"estimatedTime"}},{"kind":"Field","name":{"kind":"Name","value":"updateDate"}},{"kind":"Field","name":{"kind":"Name","value":"assignee"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assigneeTeam"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"definition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"textValue"}},{"kind":"Field","name":{"kind":"Name","value":"numberValue"}},{"kind":"Field","name":{"kind":"Name","value":"booleanValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateTimeValue"}},{"kind":"Field","name":{"kind":"Name","value":"selectValue"}},{"kind":"Field","name":{"kind":"Name","value":"multiSelectValues"}},{"kind":"Field","name":{"kind":"Name","value":"userValue"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}}]}}]} as unknown as DocumentNode;
export const GetPatientsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetPatients"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"locationId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"states"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PatientState"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"filtering"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FilterInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"sorting"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SortInput"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"pagination"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"PaginationInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FullTextSearchInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"patients"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"locationNodeId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"states"},"value":{"kind":"Variable","name":{"kind":"Name","value":"states"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filtering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"sorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"pagination"},"value":{"kind":"Variable","name":{"kind":"Name","value":"pagination"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"firstname"}},{"kind":"Field","name":{"kind":"Name","value":"lastname"}},{"kind":"Field","name":{"kind":"Name","value":"birthdate"}},{"kind":"Field","name":{"kind":"Name","value":"sex"}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"assignedLocation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignedLocations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"clinic"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"position"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"teams"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"parent"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tasks"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"done"}},{"kind":"Field","name":{"kind":"Name","value":"dueDate"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"estimatedTime"}},{"kind":"Field","name":{"kind":"Name","value":"creationDate"}},{"kind":"Field","name":{"kind":"Name","value":"updateDate"}},{"kind":"Field","name":{"kind":"Name","value":"assignee"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assigneeTeam"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"definition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"textValue"}},{"kind":"Field","name":{"kind":"Name","value":"numberValue"}},{"kind":"Field","name":{"kind":"Name","value":"booleanValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateTimeValue"}},{"kind":"Field","name":{"kind":"Name","value":"selectValue"}},{"kind":"Field","name":{"kind":"Name","value":"multiSelectValues"}},{"kind":"Field","name":{"kind":"Name","value":"userValue"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"patientsTotal"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"locationNodeId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"locationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"states"},"value":{"kind":"Variable","name":{"kind":"Name","value":"states"}}},{"kind":"Argument","name":{"kind":"Name","value":"filtering"},"value":{"kind":"Variable","name":{"kind":"Name","value":"filtering"}}},{"kind":"Argument","name":{"kind":"Name","value":"sorting"},"value":{"kind":"Variable","name":{"kind":"Name","value":"sorting"}}},{"kind":"Argument","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}}]}]}}]} as unknown as DocumentNode;
export const GetTaskDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetTask"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"task"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"done"}},{"kind":"Field","name":{"kind":"Name","value":"dueDate"}},{"kind":"Field","name":{"kind":"Name","value":"priority"}},{"kind":"Field","name":{"kind":"Name","value":"estimatedTime"}},{"kind":"Field","name":{"kind":"Name","value":"checksum"}},{"kind":"Field","name":{"kind":"Name","value":"updateDate"}},{"kind":"Field","name":{"kind":"Name","value":"patient"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignee"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assigneeTeam"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}},{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"definition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}},{"kind":"Field","name":{"kind":"Name","value":"textValue"}},{"kind":"Field","name":{"kind":"Name","value":"numberValue"}},{"kind":"Field","name":{"kind":"Name","value":"booleanValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateValue"}},{"kind":"Field","name":{"kind":"Name","value":"dateTimeValue"}},{"kind":"Field","name":{"kind":"Name","value":"selectValue"}},{"kind":"Field","name":{"kind":"Name","value":"multiSelectValues"}},{"kind":"Field","name":{"kind":"Name","value":"userValue"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"lastOnline"}},{"kind":"Field","name":{"kind":"Name","value":"isOnline"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"kind"}}]}}]}}]}}]}}]} as unknown as DocumentNode;
@@ -1081,6 +1202,12 @@ export const UpdatePropertyDefinitionDocument = {"kind":"Document","definitions"
export const DeletePropertyDefinitionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeletePropertyDefinition"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deletePropertyDefinition"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}]}}]} as unknown as DocumentNode;
export const GetPropertyDefinitionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetPropertyDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"propertyDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}}]}}]} as unknown as DocumentNode;
export const GetPropertiesForSubjectDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetPropertiesForSubject"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"subjectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"subjectType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PropertyEntity"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"propertyDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"fieldType"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"allowedEntities"}},{"kind":"Field","name":{"kind":"Name","value":"options"}}]}}]}}]} as unknown as DocumentNode;
+export const MySavedViewsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"MySavedViews"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"mySavedViews"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"baseEntityType"}},{"kind":"Field","name":{"kind":"Name","value":"filterDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"sortDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"parameters"}},{"kind":"Field","name":{"kind":"Name","value":"ownerUserId"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"isOwner"}}]}}]}}]} as unknown as DocumentNode;
+export const SavedViewDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SavedView"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"savedView"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"baseEntityType"}},{"kind":"Field","name":{"kind":"Name","value":"filterDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"sortDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"parameters"}},{"kind":"Field","name":{"kind":"Name","value":"ownerUserId"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"isOwner"}}]}}]}}]} as unknown as DocumentNode;
+export const CreateSavedViewDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateSavedView"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"data"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreateSavedViewInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createSavedView"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"data"},"value":{"kind":"Variable","name":{"kind":"Name","value":"data"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"baseEntityType"}},{"kind":"Field","name":{"kind":"Name","value":"filterDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"sortDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"parameters"}},{"kind":"Field","name":{"kind":"Name","value":"ownerUserId"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"isOwner"}}]}}]}}]} as unknown as DocumentNode;
+export const UpdateSavedViewDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateSavedView"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"data"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateSavedViewInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateSavedView"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"data"},"value":{"kind":"Variable","name":{"kind":"Name","value":"data"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"baseEntityType"}},{"kind":"Field","name":{"kind":"Name","value":"filterDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"sortDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"parameters"}},{"kind":"Field","name":{"kind":"Name","value":"ownerUserId"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"isOwner"}}]}}]}}]} as unknown as DocumentNode;
+export const DeleteSavedViewDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteSavedView"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteSavedView"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}]}}]} as unknown as DocumentNode;
+export const DuplicateSavedViewDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DuplicateSavedView"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"duplicateSavedView"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"baseEntityType"}},{"kind":"Field","name":{"kind":"Name","value":"filterDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"sortDefinition"}},{"kind":"Field","name":{"kind":"Name","value":"parameters"}},{"kind":"Field","name":{"kind":"Name","value":"ownerUserId"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"isOwner"}}]}}]}}]} as unknown as DocumentNode;
export const PatientCreatedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"PatientCreated"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"patientCreated"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}}]}]}}]} as unknown as DocumentNode;
export const PatientUpdatedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"PatientUpdated"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"patientId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"patientUpdated"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"patientId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"patientId"}}},{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}}]}]}}]} as unknown as DocumentNode;
export const PatientStateChangedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"PatientStateChanged"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"patientId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"patientStateChanged"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"patientId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"patientId"}}},{"kind":"Argument","name":{"kind":"Name","value":"rootLocationIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"rootLocationIds"}}}]}]}}]} as unknown as DocumentNode;
diff --git a/web/api/graphql/SavedView.graphql b/web/api/graphql/SavedView.graphql
new file mode 100644
index 0000000..dea0394
--- /dev/null
+++ b/web/api/graphql/SavedView.graphql
@@ -0,0 +1,83 @@
+query MySavedViews {
+ mySavedViews {
+ id
+ name
+ baseEntityType
+ filterDefinition
+ sortDefinition
+ parameters
+ ownerUserId
+ visibility
+ createdAt
+ updatedAt
+ isOwner
+ }
+}
+
+query SavedView($id: ID!) {
+ savedView(id: $id) {
+ id
+ name
+ baseEntityType
+ filterDefinition
+ sortDefinition
+ parameters
+ ownerUserId
+ visibility
+ createdAt
+ updatedAt
+ isOwner
+ }
+}
+
+mutation CreateSavedView($data: CreateSavedViewInput!) {
+ createSavedView(data: $data) {
+ id
+ name
+ baseEntityType
+ filterDefinition
+ sortDefinition
+ parameters
+ ownerUserId
+ visibility
+ createdAt
+ updatedAt
+ isOwner
+ }
+}
+
+mutation UpdateSavedView($id: ID!, $data: UpdateSavedViewInput!) {
+ updateSavedView(id: $id, data: $data) {
+ id
+ name
+ baseEntityType
+ filterDefinition
+ sortDefinition
+ parameters
+ ownerUserId
+ visibility
+ createdAt
+ updatedAt
+ isOwner
+ }
+}
+
+mutation DeleteSavedView($id: ID!) {
+ deleteSavedView(id: $id)
+}
+
+mutation DuplicateSavedView($id: ID!, $name: String!) {
+ duplicateSavedView(id: $id, name: $name) {
+ id
+ name
+ baseEntityType
+ filterDefinition
+ sortDefinition
+ parameters
+ ownerUserId
+ visibility
+ createdAt
+ updatedAt
+ isOwner
+ }
+}
diff --git a/web/components/layout/Page.tsx b/web/components/layout/Page.tsx
index 0f17f84..7a62217 100644
--- a/web/components/layout/Page.tsx
+++ b/web/components/layout/Page.tsx
@@ -31,12 +31,14 @@ import {
Users,
Menu as MenuIcon,
X,
- MessageSquare
+ MessageSquare,
+ LayoutList
} from 'lucide-react'
import { TasksLogo } from '@/components/TasksLogo'
import { useRouter } from 'next/router'
import { useTasksContext } from '@/hooks/useTasksContext'
-import { useLocations } from '@/data'
+import { useLocations, useMySavedViews } from '@/data'
+import type { MySavedViewsQuery } from '@/api/gql/generated'
import { hashString } from '@/utils/hash'
import { useSwipeGesture } from '@/hooks/useSwipeGesture'
import { LocationSelectionDialog } from '@/components/locations/LocationSelectionDialog'
@@ -495,6 +497,9 @@ export const Sidebar = ({ isOpen, onClose, ...props }: SidebarProps) => {
const translation = useTasksTranslation()
const locationRoute = '/location'
const context = useTasksContext()
+ const { data: savedViewsData } = useMySavedViews()
+ const savedViews = savedViewsData?.mySavedViews ?? []
+ const [isSavedViewsOpen, setIsSavedViewsOpen] = useState(true)
return (
<>
@@ -549,6 +554,30 @@ export const Sidebar = ({ isOpen, onClose, ...props }: SidebarProps) => {
{translation('patients')}
{context?.totalPatientsCount !== undefined && ({context.totalPatientsCount})}
+ {savedViews.length > 0 && (
+
+
+
+
+ {translation('savedViews')}
+
+
+
+ {savedViews.map((v: MySavedViewsQuery['mySavedViews'][number]) => (
+
+ {v.name}
+
+ ))}
+
+ {translation('viewSettings')}
+
+
+
+ )}
{(context?.teams?.length ?? 0) > 0 && (
void,
}
-export const PatientList = forwardRef(({ initialPatientId, onInitialPatientOpened, acceptedStates: _acceptedStates, rootLocationIds, locationId }, ref) => {
+export const PatientList = forwardRef(({ initialPatientId, onInitialPatientOpened, acceptedStates: _acceptedStates, rootLocationIds, locationId, storageKeyPrefix, viewDefaultFilters, viewDefaultSorting, viewDefaultSearchQuery, readOnly: _readOnly, hideSaveView, onSavedViewCreated }, ref) => {
const translation = useTasksTranslation()
const { locale } = useLocale()
const { selectedRootLocationIds } = useTasksContext()
@@ -67,7 +78,7 @@ export const PatientList = forwardRef(({ initi
const effectiveRootLocationIds = rootLocationIds ?? selectedRootLocationIds
const [isPanelOpen, setIsPanelOpen] = useState(false)
const [selectedPatient, setSelectedPatient] = useState(undefined)
- const [searchQuery, setSearchQuery] = useState('')
+ const [searchQuery, setSearchQuery] = useState(viewDefaultSearchQuery ?? '')
const [openedPatientId, setOpenedPatientId] = useState(null)
const [isShowFilters, setIsShowFilters] = useState(false)
const [isShowSorting, setIsShowSorting] = useState(false)
@@ -81,18 +92,26 @@ export const PatientList = forwardRef(({ initi
setFilters,
columnVisibility,
setColumnVisibility,
- } = useStorageSyncedTableState('patient-list')
-
- // TODO get from the fast access id
- const initialFilters: IdentifierFilterValue[] = []
- const initialSorting: SortingState = []
-
- // TODO make the comparison more robust
- const filtersChanged = useMemo(() => filters !== initialFilters, [filters, initialFilters])
- const sortingChanged = useMemo(() => sorting !== initialSorting, [sorting, initialSorting])
+ } = useStorageSyncedTableState(storageKeyPrefix ?? 'patient-list', {
+ defaultFilters: viewDefaultFilters,
+ defaultSorting: viewDefaultSorting,
+ })
+
+ const baselineFilters = useMemo(() => viewDefaultFilters ?? [], [viewDefaultFilters])
+ const baselineSorting = useMemo(() => viewDefaultSorting ?? [], [viewDefaultSorting])
+ const baselineSearch = useMemo(() => viewDefaultSearchQuery ?? '', [viewDefaultSearchQuery])
+
+ const filtersChanged = useMemo(
+ () => serializeColumnFiltersForView(filters as ColumnFiltersState) !== serializeColumnFiltersForView(baselineFilters),
+ [filters, baselineFilters]
+ )
+ const sortingChanged = useMemo(
+ () => serializeSortingForView(sorting) !== serializeSortingForView(baselineSorting),
+ [sorting, baselineSorting]
+ )
+ const searchChanged = useMemo(() => searchQuery !== baselineSearch, [searchQuery, baselineSearch])
- const [isShowingFastAccessDialog, setIsShowingFastAccessDialog] = useState(false)
- const [fastAccessName, setFastAccessName] = useState('')
+ const [isSaveViewDialogOpen, setIsSaveViewDialogOpen] = useState(false)
usePropertyColumnVisibility(
propertyDefinitionsData,
@@ -508,9 +527,9 @@ export const PatientList = forwardRef(({ initi
{translation('sorting') + ` (${sorting.length})`}
-
-
)
diff --git a/web/components/views/PatientViewTasksPanel.tsx b/web/components/views/PatientViewTasksPanel.tsx
new file mode 100644
index 0000000..dda2b00
--- /dev/null
+++ b/web/components/views/PatientViewTasksPanel.tsx
@@ -0,0 +1,109 @@
+'use client'
+
+import { useMemo } from 'react'
+import { usePatients } from '@/data'
+import { PatientState } from '@/api/gql/generated'
+import type { FullTextSearchInput } from '@/api/gql/generated'
+import { columnFiltersToFilterInput, sortingStateToSortInput } from '@/utils/tableStateToApi'
+import { deserializeColumnFiltersFromView, deserializeSortingFromView } from '@/utils/viewDefinition'
+import type { ViewParameters } from '@/utils/viewDefinition'
+import { TaskList } from '@/components/tables/TaskList'
+import type { TaskViewModel } from '@/components/tables/TaskList'
+
+const ADMITTED_OR_WAITING: PatientState[] = [PatientState.Admitted, PatientState.Wait]
+
+type PatientViewTasksPanelProps = {
+ filterDefinitionJson: string,
+ sortDefinitionJson: string,
+ parameters: ViewParameters,
+}
+
+/**
+ * Task universe derived from the same patient query as the patient tab (patients matching the
+ * saved filters + scope), flattened to tasks — not a separate client hack.
+ */
+export function PatientViewTasksPanel({
+ filterDefinitionJson,
+ sortDefinitionJson,
+ parameters,
+}: PatientViewTasksPanelProps) {
+ const filters = deserializeColumnFiltersFromView(filterDefinitionJson)
+ const sorting = deserializeSortingFromView(sortDefinitionJson)
+ const apiFiltering = useMemo(() => columnFiltersToFilterInput(filters), [filters])
+ const apiSorting = useMemo(() => sortingStateToSortInput(sorting), [sorting])
+
+ const allPatientStates: PatientState[] = useMemo(() => [
+ PatientState.Admitted,
+ PatientState.Discharged,
+ PatientState.Dead,
+ PatientState.Wait,
+ ], [])
+
+ const patientStates = useMemo(() => {
+ const stateFilter = apiFiltering.find(
+ f => f.column === 'state' &&
+ (f.operator === 'TAGS_SINGLE_EQUALS' || f.operator === 'TAGS_SINGLE_CONTAINS') &&
+ f.parameter?.searchTags != null &&
+ f.parameter.searchTags.length > 0
+ )
+ if (!stateFilter?.parameter?.searchTags) return allPatientStates
+ const allowed = new Set(allPatientStates as unknown as string[])
+ const filtered = (stateFilter.parameter.searchTags as string[]).filter(s => allowed.has(s))
+ return filtered.length > 0 ? (filtered as PatientState[]) : allPatientStates
+ }, [apiFiltering, allPatientStates])
+
+ const searchInput: FullTextSearchInput | undefined = parameters.searchQuery
+ ? { searchText: parameters.searchQuery, includeProperties: true }
+ : undefined
+
+ const { data: patientsData, loading, refetch } = usePatients({
+ locationId: parameters.locationId,
+ rootLocationIds: parameters.rootLocationIds && parameters.rootLocationIds.length > 0 ? parameters.rootLocationIds : undefined,
+ states: patientStates,
+ filtering: apiFiltering.length > 0 ? apiFiltering : undefined,
+ sorting: apiSorting.length > 0 ? apiSorting : undefined,
+ search: searchInput,
+ })
+
+ const tasks: TaskViewModel[] = useMemo(() => {
+ if (!patientsData?.patients) return []
+ return patientsData.patients.flatMap(patient => {
+ if (!ADMITTED_OR_WAITING.includes(patient.state) || !patient.tasks) return []
+ const mergedLocations = [
+ ...(patient.clinic ? [patient.clinic] : []),
+ ...(patient.position ? [patient.position] : []),
+ ...(patient.teams || [])
+ ]
+ return patient.tasks.map(task => ({
+ id: task.id,
+ name: task.title,
+ description: task.description || undefined,
+ updateDate: task.updateDate ? new Date(task.updateDate) : new Date(task.creationDate),
+ dueDate: task.dueDate ? new Date(task.dueDate) : undefined,
+ priority: task.priority || null,
+ estimatedTime: task.estimatedTime ?? null,
+ done: task.done,
+ patient: {
+ id: patient.id,
+ name: patient.name,
+ locations: mergedLocations
+ },
+ assignee: task.assignee
+ ? { id: task.assignee.id, name: task.assignee.name, avatarURL: task.assignee.avatarUrl, isOnline: task.assignee.isOnline ?? null }
+ : undefined,
+ assigneeTeam: task.assigneeTeam
+ ? { id: task.assigneeTeam.id, title: task.assigneeTeam.title }
+ : undefined,
+ }))
+ })
+ }, [patientsData])
+
+ return (
+
+ )
+}
diff --git a/web/components/views/SaveViewDialog.tsx b/web/components/views/SaveViewDialog.tsx
new file mode 100644
index 0000000..a8d4f66
--- /dev/null
+++ b/web/components/views/SaveViewDialog.tsx
@@ -0,0 +1,102 @@
+'use client'
+
+import { useCallback, useState } from 'react'
+import { useMutation } from '@apollo/client/react'
+import { Button, Dialog, Input } from '@helpwave/hightide'
+import type {
+ SavedViewEntityType } from '@/api/gql/generated'
+import {
+ CreateSavedViewDocument,
+ type CreateSavedViewMutation,
+ type CreateSavedViewMutationVariables,
+ SavedViewVisibility
+} from '@/api/gql/generated'
+import { getParsedDocument } from '@/data/hooks/queryHelpers'
+import { useTasksTranslation } from '@/i18n/useTasksTranslation'
+
+type SaveViewDialogProps = {
+ isOpen: boolean,
+ onClose: () => void,
+ /** Entity this view is saved from */
+ baseEntityType: SavedViewEntityType,
+ filterDefinition: string,
+ sortDefinition: string,
+ parameters: string,
+ /** Optional: navigate or toast after save */
+ onCreated?: (id: string) => void,
+}
+
+export function SaveViewDialog({
+ isOpen,
+ onClose,
+ baseEntityType,
+ filterDefinition,
+ sortDefinition,
+ parameters,
+ onCreated,
+}: SaveViewDialogProps) {
+ const translation = useTasksTranslation()
+ const [name, setName] = useState('')
+
+ const handleClose = useCallback(() => {
+ onClose()
+ setName('')
+ }, [onClose])
+
+ const [createSavedView, { loading }] = useMutation<
+ CreateSavedViewMutation,
+ CreateSavedViewMutationVariables
+ >(getParsedDocument(CreateSavedViewDocument), {
+ onCompleted(data) {
+ onCreated?.(data?.createSavedView?.id)
+ handleClose()
+ },
+ })
+
+ return (
+
+ )
+}
diff --git a/web/components/views/TaskViewPatientsPanel.tsx b/web/components/views/TaskViewPatientsPanel.tsx
new file mode 100644
index 0000000..42d1af1
--- /dev/null
+++ b/web/components/views/TaskViewPatientsPanel.tsx
@@ -0,0 +1,91 @@
+'use client'
+
+import { useMemo } from 'react'
+import Link from 'next/link'
+import { useTasks } from '@/data'
+import { columnFiltersToFilterInput, sortingStateToSortInput } from '@/utils/tableStateToApi'
+import { deserializeColumnFiltersFromView, deserializeSortingFromView } from '@/utils/viewDefinition'
+import type { ViewParameters } from '@/utils/viewDefinition'
+import { LocationChips } from '@/components/locations/LocationChips'
+import { LoadingContainer } from '@helpwave/hightide'
+import { useTasksTranslation } from '@/i18n/useTasksTranslation'
+
+type TaskViewPatientsPanelProps = {
+ filterDefinitionJson: string,
+ sortDefinitionJson: string,
+ parameters: ViewParameters,
+}
+
+type DistinctPatientRow = {
+ id: string,
+ name: string,
+ locations: Array<{ id: string, title: string }>,
+}
+
+/**
+ * Distinct patients from the same task query as the task tab (no duplicate task-fetch hack).
+ */
+export function TaskViewPatientsPanel({
+ filterDefinitionJson,
+ sortDefinitionJson,
+ parameters,
+}: TaskViewPatientsPanelProps) {
+ const translation = useTasksTranslation()
+ const filters = deserializeColumnFiltersFromView(filterDefinitionJson)
+ const sorting = deserializeSortingFromView(sortDefinitionJson)
+ const apiFiltering = useMemo(() => columnFiltersToFilterInput(filters, 'task'), [filters])
+ const apiSorting = useMemo(() => sortingStateToSortInput(sorting, 'task'), [sorting])
+
+ const { data, loading } = useTasks(
+ {
+ rootLocationIds: parameters.rootLocationIds,
+ assigneeId: parameters.assigneeId,
+ filtering: apiFiltering.length > 0 ? apiFiltering : undefined,
+ sorting: apiSorting.length > 0 ? apiSorting : undefined,
+ },
+ {
+ skip: !parameters.rootLocationIds?.length && !parameters.assigneeId,
+ }
+ )
+
+ const rows = useMemo((): DistinctPatientRow[] => {
+ const map = new Map
()
+ for (const t of data?.tasks ?? []) {
+ if (!t.patient) continue
+ if (!map.has(t.patient.id)) {
+ map.set(t.patient.id, {
+ id: t.patient.id,
+ name: t.patient.name,
+ locations: (t.patient.assignedLocations ?? []).map(l => ({ id: l.id, title: l.title })),
+ })
+ }
+ }
+ return [...map.values()].sort((a, b) => a.name.localeCompare(b.name))
+ }, [data])
+
+ if (loading) {
+ return
+ }
+
+ return (
+
+
{translation('viewDerivedPatientsHint')}
+
+ {rows.map((p) => (
+ -
+
+ {p.name}
+
+
+
+ ))}
+
+ {rows.length === 0 && (
+
{translation('noPatientsInTaskView')}
+ )}
+
+ )
+}
diff --git a/web/data/hooks/index.ts b/web/data/hooks/index.ts
index c0db2b5..5b53d5f 100644
--- a/web/data/hooks/index.ts
+++ b/web/data/hooks/index.ts
@@ -36,3 +36,4 @@ export { useCreatePropertyDefinition } from './useCreatePropertyDefinition'
export { useUpdatePropertyDefinition } from './useUpdatePropertyDefinition'
export { useDeletePropertyDefinition } from './useDeletePropertyDefinition'
export { useUpdateProfilePicture } from './useUpdateProfilePicture'
+export { useMySavedViews, useSavedView } from './useSavedViews'
diff --git a/web/data/hooks/useSavedViews.ts b/web/data/hooks/useSavedViews.ts
new file mode 100644
index 0000000..52514b7
--- /dev/null
+++ b/web/data/hooks/useSavedViews.ts
@@ -0,0 +1,25 @@
+import {
+ MySavedViewsDocument,
+ SavedViewDocument,
+ type MySavedViewsQuery,
+ type MySavedViewsQueryVariables,
+ type SavedViewQuery,
+ type SavedViewQueryVariables
+} from '@/api/gql/generated'
+import { useQueryWhenReady } from './queryHelpers'
+
+export function useMySavedViews(options?: { skip?: boolean }) {
+ return useQueryWhenReady(
+ MySavedViewsDocument,
+ {},
+ options
+ )
+}
+
+export function useSavedView(id: string | undefined, options?: { skip?: boolean }) {
+ return useQueryWhenReady(
+ SavedViewDocument,
+ { id: id ?? '' },
+ { skip: options?.skip ?? !id }
+ )
+}
diff --git a/web/data/index.ts b/web/data/index.ts
index 6ce1ae9..1102914 100644
--- a/web/data/index.ts
+++ b/web/data/index.ts
@@ -70,6 +70,8 @@ export {
useUpdatePropertyDefinition,
useDeletePropertyDefinition,
useUpdateProfilePicture,
+ useMySavedViews,
+ useSavedView,
} from './hooks'
export type {
ClientMutationId,
diff --git a/web/i18n/translations.ts b/web/i18n/translations.ts
index 4a2e85e..13eb60c 100644
--- a/web/i18n/translations.ts
+++ b/web/i18n/translations.ts
@@ -35,6 +35,7 @@ export type TasksTranslationEntries = {
'closedTasks': string,
'collapseAll': string,
'confirm': string,
+ 'confirmDeleteView': string,
'confirmSelection': string,
'confirmShiftHandover': string,
'confirmShiftHandoverDescription': string,
@@ -43,6 +44,8 @@ export type TasksTranslationEntries = {
'connectionConnected': string,
'connectionConnecting': string,
'connectionDisconnected': string,
+ 'copyShareLink': string,
+ 'copyViewToMyViews': string,
'create': string,
'createTask': string,
'currentTime': string,
@@ -67,6 +70,7 @@ export type TasksTranslationEntries = {
'diverse': string,
'done': string,
'dueDate': string,
+ 'duplicate': string,
'edit': string,
'editPatient': string,
'editTask': string,
@@ -116,6 +120,7 @@ export type TasksTranslationEntries = {
'noNotifications': string,
'noOpenTasks': string,
'noPatient': string,
+ 'noPatientsInTaskView': string,
'noResultsFound': string,
'notAssigned': string,
'notifications': string,
@@ -127,6 +132,7 @@ export type TasksTranslationEntries = {
'ok': string,
'openSurvey': string,
'openTasks': string,
+ 'openView': string,
'option': string,
'organizations': string,
'overview': string,
@@ -156,6 +162,7 @@ export type TasksTranslationEntries = {
'property': string,
'pThemes': (values: { count: number }) => string,
'rAdd': (values: { name: string }) => string,
+ 'readOnlyView': string,
'recentPatients': string,
'recentTasks': string,
'rEdit': (values: { name: string }) => string,
@@ -164,6 +171,9 @@ export type TasksTranslationEntries = {
'removePropertyConfirmation': string,
'retakeSurvey': string,
'rShow': (values: { name: string }) => string,
+ 'savedViews': string,
+ 'saveView': string,
+ 'saveViewDescription': string,
'search': string,
'searchLocations': string,
'searchUserOrTeam': string,
@@ -212,6 +222,11 @@ export type TasksTranslationEntries = {
'user': string,
'userInformation': string,
'users': string,
+ 'viewDerivedPatientsHint': string,
+ 'viewsEntityPatient': string,
+ 'viewsEntityTask': string,
+ 'viewSettings': string,
+ 'viewSettingsDescription': string,
'waitingForPatient': string,
'waitPatient': string,
'wards': string,
@@ -245,6 +260,7 @@ export const tasksTranslation: Translation {
return `${name} hinzufügen`
},
+ 'readOnlyView': `Nur lesen`,
'recentPatients': `Deine kürzlichen Patienten`,
'recentTasks': `Deine kürzlichen Aufgaben`,
'rEdit': ({ name }): string => {
@@ -455,6 +477,9 @@ export const tasksTranslation: Translation {
return `${name} anzeigen`
},
+ 'savedViews': `Gespeicherte Ansichten`,
+ 'saveView': `Ansicht speichern`,
+ 'saveViewDescription': `Geben Sie dieser Ansicht einen Namen. Filter, Sortierung, Suche und Standort werden gespeichert.`,
'search': `Suchen`,
'searchLocations': `Standorte suchen...`,
'searchUserOrTeam': `Nach Benutzer (oder Team) suchen...`,
@@ -530,6 +555,11 @@ export const tasksTranslation: Translation {
return `Add ${name}`
},
+ 'readOnlyView': `Read-only`,
'recentPatients': `Your Recent Patients`,
'recentTasks': `Your Recent Tasks`,
'rEdit': ({ name }): string => {
@@ -771,6 +808,9 @@ export const tasksTranslation: Translation {
return `Show ${name}`
},
+ 'savedViews': `Saved views`,
+ 'saveView': `Save view`,
+ 'saveViewDescription': `Name this view. Filters, sorting, search, and location scope are stored.`,
'search': `Search`,
'searchLocations': `Search locations...`,
'searchUserOrTeam': `Search for user (or team)...`,
@@ -846,6 +886,11 @@ export const tasksTranslation: Translation {
return `Añadir ${name}`
},
+ 'readOnlyView': `Read-only`,
'recentPatients': `Tus pacientes recientes`,
'recentTasks': `Tus tareas recientes`,
'rEdit': ({ name }): string => {
@@ -1086,6 +1138,9 @@ export const tasksTranslation: Translation {
return `Mostrar ${name}`
},
+ 'savedViews': `Saved views`,
+ 'saveView': `Save view`,
+ 'saveViewDescription': `Name this view. Filters, sorting, search, and location scope are stored.`,
'search': `Buscar`,
'searchLocations': `Buscar ubicaciones...`,
'searchUserOrTeam': `Buscar usuario (o equipo)...`,
@@ -1161,6 +1216,11 @@ export const tasksTranslation: Translation {
return `Ajouter ${name}`
},
+ 'readOnlyView': `Read-only`,
'recentPatients': `Vos patients récents`,
'recentTasks': `Vos tâches récentes`,
'rEdit': ({ name }): string => {
@@ -1401,6 +1468,9 @@ export const tasksTranslation: Translation {
return `Afficher ${name}`
},
+ 'savedViews': `Saved views`,
+ 'saveView': `Save view`,
+ 'saveViewDescription': `Name this view. Filters, sorting, search, and location scope are stored.`,
'search': `Rechercher`,
'searchLocations': `Rechercher des emplacements...`,
'searchUserOrTeam': `Rechercher un utilisateur (ou une équipe)...`,
@@ -1476,6 +1546,11 @@ export const tasksTranslation: Translation {
return `${name} toevoegen`
},
+ 'readOnlyView': `Read-only`,
'recentPatients': `Uw recente patiënten`,
'recentTasks': `Uw recente taken`,
'rEdit': ({ name }): string => {
@@ -1719,6 +1801,9 @@ export const tasksTranslation: Translation {
return `${name} tonen`
},
+ 'savedViews': `Saved views`,
+ 'saveView': `Save view`,
+ 'saveViewDescription': `Name this view. Filters, sorting, search, and location scope are stored.`,
'search': `Zoeken`,
'searchLocations': `Locaties zoeken...`,
'searchUserOrTeam': `Zoek gebruiker (of team)...`,
@@ -1794,6 +1879,11 @@ export const tasksTranslation: Translation {
return `Adicionar ${name}`
},
+ 'readOnlyView': `Read-only`,
'recentPatients': `Seus pacientes recentes`,
'recentTasks': `Suas tarefas recentes`,
'rEdit': ({ name }): string => {
@@ -2034,6 +2131,9 @@ export const tasksTranslation: Translation {
return `Mostrar ${name}`
},
+ 'savedViews': `Saved views`,
+ 'saveView': `Save view`,
+ 'saveViewDescription': `Name this view. Filters, sorting, search, and location scope are stored.`,
'search': `Pesquisar`,
'searchLocations': `Pesquisar localizações...`,
'searchUserOrTeam': `Pesquisar usuário (ou equipe)...`,
@@ -2109,6 +2209,11 @@ export const tasksTranslation: Translation {
+