Compare commits
3 commits
ea07f1a092
...
34bed279db
Author | SHA1 | Date | |
---|---|---|---|
34bed279db | |||
8862cd713c | |||
e11a1d8006 |
25 changed files with 1088 additions and 275 deletions
|
@ -24,6 +24,7 @@
|
||||||
"zod": "^3.22.4"
|
"zod": "^3.22.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@faker-js/faker": "^8.3.1",
|
||||||
"@playwright/test": "^1.40.1",
|
"@playwright/test": "^1.40.1",
|
||||||
"@sveltejs/adapter-node": "^2.0.0",
|
"@sveltejs/adapter-node": "^2.0.0",
|
||||||
"@sveltejs/kit": "^2.0.0",
|
"@sveltejs/kit": "^2.0.0",
|
||||||
|
@ -47,6 +48,7 @@
|
||||||
"svelte-check": "^3.6.2",
|
"svelte-check": "^3.6.2",
|
||||||
"tailwindcss": "^3.3.6",
|
"tailwindcss": "^3.3.6",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.6.2",
|
||||||
|
"tsx": "^4.7.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"vite": "^5.0.0",
|
"vite": "^5.0.0",
|
||||||
"vitest": "^1.0.0"
|
"vitest": "^1.0.0"
|
||||||
|
|
|
@ -22,6 +22,9 @@ dependencies:
|
||||||
version: 3.22.4
|
version: 3.22.4
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@faker-js/faker':
|
||||||
|
specifier: ^8.3.1
|
||||||
|
version: 8.3.1
|
||||||
'@playwright/test':
|
'@playwright/test':
|
||||||
specifier: ^1.40.1
|
specifier: ^1.40.1
|
||||||
version: 1.40.1
|
version: 1.40.1
|
||||||
|
@ -91,6 +94,9 @@ devDependencies:
|
||||||
tslib:
|
tslib:
|
||||||
specifier: ^2.6.2
|
specifier: ^2.6.2
|
||||||
version: 2.6.2
|
version: 2.6.2
|
||||||
|
tsx:
|
||||||
|
specifier: ^4.7.0
|
||||||
|
version: 4.7.0
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.3.3
|
specifier: ^5.3.3
|
||||||
version: 5.3.3
|
version: 5.3.3
|
||||||
|
@ -396,6 +402,11 @@ packages:
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@faker-js/faker@8.3.1:
|
||||||
|
resolution: {integrity: sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw==}
|
||||||
|
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@humanwhocodes/config-array@0.11.13:
|
/@humanwhocodes/config-array@0.11.13:
|
||||||
resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
|
resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
|
||||||
engines: {node: '>=10.10.0'}
|
engines: {node: '>=10.10.0'}
|
||||||
|
@ -1650,6 +1661,12 @@ packages:
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/get-tsconfig@4.7.2:
|
||||||
|
resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==}
|
||||||
|
dependencies:
|
||||||
|
resolve-pkg-maps: 1.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/glob-parent@5.1.2:
|
/glob-parent@5.1.2:
|
||||||
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
|
@ -2440,6 +2457,10 @@ packages:
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/resolve-pkg-maps@1.0.0:
|
||||||
|
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/resolve@1.22.8:
|
/resolve@1.22.8:
|
||||||
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
|
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
@ -2846,6 +2867,17 @@ packages:
|
||||||
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/tsx@4.7.0:
|
||||||
|
resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
esbuild: 0.19.10
|
||||||
|
get-tsconfig: 4.7.2
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents: 2.3.3
|
||||||
|
dev: true
|
||||||
|
|
||||||
/type-check@0.4.0:
|
/type-check@0.4.0:
|
||||||
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
|
|
|
@ -21,7 +21,6 @@ CREATE TABLE "users" (
|
||||||
"id" SERIAL NOT NULL,
|
"id" SERIAL NOT NULL,
|
||||||
"name" TEXT,
|
"name" TEXT,
|
||||||
"email" TEXT,
|
"email" TEXT,
|
||||||
"emailVerified" TIMESTAMP(3),
|
|
||||||
|
|
||||||
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
@ -38,7 +37,7 @@ CREATE TABLE "stations" (
|
||||||
CREATE TABLE "rooms" (
|
CREATE TABLE "rooms" (
|
||||||
"id" SERIAL NOT NULL,
|
"id" SERIAL NOT NULL,
|
||||||
"name" TEXT NOT NULL,
|
"name" TEXT NOT NULL,
|
||||||
"stationId" INTEGER NOT NULL,
|
"station_id" INTEGER NOT NULL,
|
||||||
|
|
||||||
CONSTRAINT "rooms_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "rooms_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
@ -46,11 +45,11 @@ CREATE TABLE "rooms" (
|
||||||
-- CreateTable
|
-- CreateTable
|
||||||
CREATE TABLE "patients" (
|
CREATE TABLE "patients" (
|
||||||
"id" SERIAL NOT NULL,
|
"id" SERIAL NOT NULL,
|
||||||
"firstName" TEXT NOT NULL,
|
"first_name" TEXT NOT NULL,
|
||||||
"lastName" TEXT NOT NULL,
|
"last_name" TEXT NOT NULL,
|
||||||
"age" INTEGER,
|
"age" INTEGER,
|
||||||
"roomId" INTEGER,
|
"room_id" INTEGER,
|
||||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
CONSTRAINT "patients_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "patients_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
@ -68,8 +67,8 @@ CREATE TABLE "categories" (
|
||||||
-- CreateTable
|
-- CreateTable
|
||||||
CREATE TABLE "entries" (
|
CREATE TABLE "entries" (
|
||||||
"id" SERIAL NOT NULL,
|
"id" SERIAL NOT NULL,
|
||||||
"patientId" INTEGER NOT NULL,
|
"patient_id" INTEGER NOT NULL,
|
||||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
CONSTRAINT "entries_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "entries_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
@ -77,26 +76,26 @@ CREATE TABLE "entries" (
|
||||||
-- CreateTable
|
-- CreateTable
|
||||||
CREATE TABLE "entry_versions" (
|
CREATE TABLE "entry_versions" (
|
||||||
"id" SERIAL NOT NULL,
|
"id" SERIAL NOT NULL,
|
||||||
"entryId" INTEGER NOT NULL,
|
"entry_id" INTEGER NOT NULL,
|
||||||
"text" TEXT NOT NULL,
|
"text" TEXT NOT NULL,
|
||||||
"date" TIMESTAMP(3) NOT NULL,
|
"date" TIMESTAMP(3) NOT NULL,
|
||||||
"categoryId" INTEGER,
|
"category_id" INTEGER,
|
||||||
"priority" BOOLEAN NOT NULL,
|
"priority" BOOLEAN NOT NULL,
|
||||||
"authorId" INTEGER NOT NULL,
|
"author_id" INTEGER NOT NULL,
|
||||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
CONSTRAINT "entry_versions_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "entry_versions_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
|
||||||
-- CreateTable
|
-- CreateTable
|
||||||
CREATE TABLE "entry_execution" (
|
CREATE TABLE "entry_executions" (
|
||||||
"id" SERIAL NOT NULL,
|
"id" SERIAL NOT NULL,
|
||||||
"entryId" INTEGER NOT NULL,
|
"entry_id" INTEGER NOT NULL,
|
||||||
"text" TEXT NOT NULL,
|
"text" TEXT NOT NULL,
|
||||||
"authorId" INTEGER NOT NULL,
|
"author_id" INTEGER NOT NULL,
|
||||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
CONSTRAINT "entry_execution_pkey" PRIMARY KEY ("id")
|
CONSTRAINT "entry_executions_pkey" PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
|
||||||
-- CreateIndex
|
-- CreateIndex
|
||||||
|
@ -109,25 +108,25 @@ CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
|
||||||
ALTER TABLE "accounts" ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
ALTER TABLE "accounts" ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "rooms" ADD CONSTRAINT "rooms_stationId_fkey" FOREIGN KEY ("stationId") REFERENCES "stations"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
ALTER TABLE "rooms" ADD CONSTRAINT "rooms_station_id_fkey" FOREIGN KEY ("station_id") REFERENCES "stations"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "patients" ADD CONSTRAINT "patients_roomId_fkey" FOREIGN KEY ("roomId") REFERENCES "rooms"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
ALTER TABLE "patients" ADD CONSTRAINT "patients_room_id_fkey" FOREIGN KEY ("room_id") REFERENCES "rooms"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "entries" ADD CONSTRAINT "entries_patientId_fkey" FOREIGN KEY ("patientId") REFERENCES "patients"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
ALTER TABLE "entries" ADD CONSTRAINT "entries_patient_id_fkey" FOREIGN KEY ("patient_id") REFERENCES "patients"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "entry_versions" ADD CONSTRAINT "entry_versions_entryId_fkey" FOREIGN KEY ("entryId") REFERENCES "entries"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
ALTER TABLE "entry_versions" ADD CONSTRAINT "entry_versions_entry_id_fkey" FOREIGN KEY ("entry_id") REFERENCES "entries"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "entry_versions" ADD CONSTRAINT "entry_versions_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
ALTER TABLE "entry_versions" ADD CONSTRAINT "entry_versions_category_id_fkey" FOREIGN KEY ("category_id") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "entry_versions" ADD CONSTRAINT "entry_versions_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
ALTER TABLE "entry_versions" ADD CONSTRAINT "entry_versions_author_id_fkey" FOREIGN KEY ("author_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "entry_execution" ADD CONSTRAINT "entry_execution_entryId_fkey" FOREIGN KEY ("entryId") REFERENCES "entries"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
ALTER TABLE "entry_executions" ADD CONSTRAINT "entry_executions_entry_id_fkey" FOREIGN KEY ("entry_id") REFERENCES "entries"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE "entry_execution" ADD CONSTRAINT "entry_execution_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
ALTER TABLE "entry_executions" ADD CONSTRAINT "entry_executions_author_id_fkey" FOREIGN KEY ("author_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
29
prisma/migrations/20240113221445_search_index/migration.sql
Normal file
29
prisma/migrations/20240113221445_search_index/migration.sql
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
ALTER TABLE entries
|
||||||
|
ADD COLUMN tsvec tsvector;
|
||||||
|
|
||||||
|
CREATE FUNCTION public.update_entry_tsvec () RETURNS TRIGGER LANGUAGE plpgsql AS $function$
|
||||||
|
declare
|
||||||
|
v_text text := '';
|
||||||
|
x_text text := '';
|
||||||
|
begin
|
||||||
|
select text into v_text from entry_versions ev where ev.entry_id = new.entry_id order by ev.created_at desc limit 1;
|
||||||
|
select text into x_text from entry_executions ex where ex.entry_id = new.entry_id order by ex.created_at desc limit 1;
|
||||||
|
update entries set tsvec =
|
||||||
|
to_tsvector('german', coalesce(v_text, '')) ||
|
||||||
|
to_tsvector('german', coalesce(x_text, ''))
|
||||||
|
where id = new.entry_id;
|
||||||
|
RETURN NEW;
|
||||||
|
END
|
||||||
|
$function$;
|
||||||
|
|
||||||
|
CREATE TRIGGER entry_versions_update_tsvec
|
||||||
|
AFTER INSERT
|
||||||
|
OR
|
||||||
|
UPDATE ON entry_versions FOR EACH ROW
|
||||||
|
EXECUTE PROCEDURE update_entry_tsvec ();
|
||||||
|
|
||||||
|
CREATE TRIGGER entry_execution_update_tsvec
|
||||||
|
AFTER INSERT
|
||||||
|
OR
|
||||||
|
UPDATE ON entry_executions FOR EACH ROW
|
||||||
|
EXECUTE PROCEDURE update_entry_tsvec ();
|
|
@ -14,7 +14,7 @@ datasource db {
|
||||||
|
|
||||||
model Account {
|
model Account {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
userId Int
|
user_id Int @map("userId")
|
||||||
type String
|
type String
|
||||||
provider String
|
provider String
|
||||||
providerAccountId String
|
providerAccountId String
|
||||||
|
@ -26,17 +26,16 @@ model Account {
|
||||||
id_token String? @db.Text
|
id_token String? @db.Text
|
||||||
session_state String?
|
session_state String?
|
||||||
|
|
||||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
|
||||||
|
|
||||||
@@unique([provider, providerAccountId])
|
@@unique([provider, providerAccountId])
|
||||||
@@map("accounts")
|
@@map("accounts")
|
||||||
}
|
}
|
||||||
|
|
||||||
model User {
|
model User {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
name String?
|
name String?
|
||||||
email String? @unique
|
email String? @unique
|
||||||
emailVerified DateTime?
|
|
||||||
|
|
||||||
accounts Account[]
|
accounts Account[]
|
||||||
EntryVersion EntryVersion[]
|
EntryVersion EntryVersion[]
|
||||||
|
@ -58,25 +57,25 @@ model Station {
|
||||||
|
|
||||||
// Hospital room
|
// Hospital room
|
||||||
model Room {
|
model Room {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
name String
|
name String
|
||||||
station Station @relation(fields: [stationId], references: [id], onDelete: Cascade)
|
station Station @relation(fields: [station_id], references: [id], onDelete: Cascade)
|
||||||
stationId Int
|
station_id Int
|
||||||
Patient Patient[]
|
Patient Patient[]
|
||||||
|
|
||||||
@@map("rooms")
|
@@map("rooms")
|
||||||
}
|
}
|
||||||
|
|
||||||
model Patient {
|
model Patient {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
firstName String
|
first_name String
|
||||||
lastName String
|
last_name String
|
||||||
age Int?
|
age Int?
|
||||||
room Room? @relation(fields: [roomId], references: [id], onDelete: SetNull)
|
room Room? @relation(fields: [room_id], references: [id], onDelete: SetNull)
|
||||||
roomId Int?
|
room_id Int?
|
||||||
Entry Entry[]
|
Entry Entry[]
|
||||||
|
|
||||||
createdAt DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
|
|
||||||
@@map("patients")
|
@@map("patients")
|
||||||
}
|
}
|
||||||
|
@ -93,49 +92,49 @@ model Category {
|
||||||
}
|
}
|
||||||
|
|
||||||
model Entry {
|
model Entry {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
patient Patient @relation(fields: [patientId], references: [id], onDelete: Cascade)
|
patient Patient @relation(fields: [patient_id], references: [id], onDelete: Cascade)
|
||||||
patientId Int
|
patient_id Int
|
||||||
|
|
||||||
EntryVersion EntryVersion[]
|
EntryVersion EntryVersion[]
|
||||||
EntryExecution EntryExecution[]
|
EntryExecution EntryExecution[]
|
||||||
|
|
||||||
createdAt DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
|
|
||||||
@@map("entries")
|
@@map("entries")
|
||||||
}
|
}
|
||||||
|
|
||||||
model EntryVersion {
|
model EntryVersion {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
entry Entry @relation(fields: [entryId], references: [id], onDelete: Cascade)
|
entry Entry @relation(fields: [entry_id], references: [id], onDelete: Cascade)
|
||||||
entryId Int
|
entry_id Int
|
||||||
|
|
||||||
text String
|
text String
|
||||||
date DateTime
|
date DateTime
|
||||||
|
|
||||||
category Category? @relation(fields: [categoryId], references: [id], onDelete: SetNull)
|
category Category? @relation(fields: [category_id], references: [id], onDelete: SetNull)
|
||||||
categoryId Int?
|
category_id Int?
|
||||||
priority Boolean
|
priority Boolean
|
||||||
|
|
||||||
author User @relation(fields: [authorId], references: [id])
|
author User @relation(fields: [author_id], references: [id])
|
||||||
authorId Int
|
author_id Int
|
||||||
|
|
||||||
createdAt DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
|
|
||||||
@@map("entry_versions")
|
@@map("entry_versions")
|
||||||
}
|
}
|
||||||
|
|
||||||
model EntryExecution {
|
model EntryExecution {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
entry Entry @relation(fields: [entryId], references: [id], onDelete: Cascade)
|
entry Entry @relation(fields: [entry_id], references: [id], onDelete: Cascade)
|
||||||
entryId Int
|
entry_id Int
|
||||||
|
|
||||||
text String
|
text String
|
||||||
|
|
||||||
author User @relation(fields: [authorId], references: [id])
|
author User @relation(fields: [author_id], references: [id])
|
||||||
authorId Int
|
author_id Int
|
||||||
|
|
||||||
createdAt DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
|
|
||||||
@@map("entry_execution")
|
@@map("entry_executions")
|
||||||
}
|
}
|
||||||
|
|
4
run/gen-mockdata.ts
Normal file
4
run/gen-mockdata.ts
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
// eslint-disable-next-line no-relative-import-paths/no-relative-import-paths
|
||||||
|
import generateMockdata from "../tests/helpers/generate-mockdata"
|
||||||
|
|
||||||
|
await generateMockdata();
|
|
@ -7,7 +7,7 @@ function mapUser(user: User): AdapterUser {
|
||||||
id: user.id.toString(),
|
id: user.id.toString(),
|
||||||
name: user.name,
|
name: user.name,
|
||||||
email: user.email!,
|
email: user.email!,
|
||||||
emailVerified: user.emailVerified,
|
emailVerified: null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ function mapUserOpt(user: User | null | undefined): AdapterUser | null {
|
||||||
|
|
||||||
function mapAccount(account: Account): AdapterAccount {
|
function mapAccount(account: Account): AdapterAccount {
|
||||||
return {
|
return {
|
||||||
userId: account.userId.toString(),
|
userId: account.user_id.toString(),
|
||||||
type: account.type as "oauth" | "oidc" | "email",
|
type: account.type as "oauth" | "oidc" | "email",
|
||||||
provider: account.provider,
|
provider: account.provider,
|
||||||
providerAccountId: account.providerAccountId,
|
providerAccountId: account.providerAccountId,
|
||||||
|
@ -39,7 +39,6 @@ export function PrismaAdapter(p: PrismaClient): Adapter {
|
||||||
data: {
|
data: {
|
||||||
name: data.name,
|
name: data.name,
|
||||||
email: data.email,
|
email: data.email,
|
||||||
emailVerified: data.emailVerified,
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
|
@ -62,7 +61,7 @@ export function PrismaAdapter(p: PrismaClient): Adapter {
|
||||||
mapAccount(
|
mapAccount(
|
||||||
await p.account.create({
|
await p.account.create({
|
||||||
data: {
|
data: {
|
||||||
userId: parseInt(data.userId),
|
user_id: parseInt(data.userId),
|
||||||
type: data.type,
|
type: data.type,
|
||||||
provider: data.provider,
|
provider: data.provider,
|
||||||
providerAccountId: data.providerAccountId,
|
providerAccountId: data.providerAccountId,
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { prisma } from "$lib/server/prisma";
|
||||||
|
|
||||||
export async function newCategory(category: CategoryNew): Promise<number> {
|
export async function newCategory(category: CategoryNew): Promise<number> {
|
||||||
const data = ZCategoryNew.parse(category);
|
const data = ZCategoryNew.parse(category);
|
||||||
const created = await prisma.category.create({ data });
|
const created = await prisma.category.create({ data, select: { id: true } });
|
||||||
return created.id;
|
return created.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,9 @@ import {
|
||||||
ZEntryNew,
|
ZEntryNew,
|
||||||
ZEntryVersionNew,
|
ZEntryVersionNew,
|
||||||
} from "$lib/shared/model/validation";
|
} from "$lib/shared/model/validation";
|
||||||
|
import { ErrorConflict } from "$lib/shared/util/error";
|
||||||
import { mapEntry } from "./mapping";
|
import { mapEntry } from "./mapping";
|
||||||
import { QueryBuilder } from "./util";
|
import { QueryBuilder, parseSearchQuery } from "./util";
|
||||||
|
|
||||||
const USER_SELECT = { select: { id: true, name: true } };
|
const USER_SELECT = { select: { id: true, name: true } };
|
||||||
|
|
||||||
|
@ -24,12 +25,12 @@ export async function getEntry(id: number): Promise<Entry> {
|
||||||
patient: { include: { room: { include: { station: true } } } },
|
patient: { include: { room: { include: { station: true } } } },
|
||||||
EntryVersion: {
|
EntryVersion: {
|
||||||
include: { author: USER_SELECT, category: true },
|
include: { author: USER_SELECT, category: true },
|
||||||
orderBy: { createdAt: "desc" },
|
orderBy: { created_at: "desc" },
|
||||||
take: 1,
|
take: 1,
|
||||||
},
|
},
|
||||||
EntryExecution: {
|
EntryExecution: {
|
||||||
include: { author: USER_SELECT },
|
include: { author: USER_SELECT },
|
||||||
orderBy: { createdAt: "desc" },
|
orderBy: { created_at: "desc" },
|
||||||
take: 1,
|
take: 1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -38,117 +39,172 @@ export async function getEntry(id: number): Promise<Entry> {
|
||||||
return mapEntry(entry);
|
return mapEntry(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function newEntry(authorId: number, entry: EntryNew): Promise<number> {
|
export async function newEntry(author_id: number, entry: EntryNew): Promise<number> {
|
||||||
const data = ZEntryNew.parse(entry);
|
const data = ZEntryNew.parse(entry);
|
||||||
const created = await prisma.entry.create({
|
const created = await prisma.entry.create({
|
||||||
data: {
|
data: {
|
||||||
patientId: data.patientId,
|
patient_id: data.patient_id,
|
||||||
EntryVersion: {
|
EntryVersion: {
|
||||||
create: {
|
create: {
|
||||||
authorId,
|
author_id,
|
||||||
...data.version,
|
...data.version,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
select: { id: true },
|
||||||
});
|
});
|
||||||
return created.id;
|
return created.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function newEntryVersion(
|
export async function newEntryVersion(
|
||||||
authorId: number,
|
author_id: number,
|
||||||
entryId: number,
|
entry_id: number,
|
||||||
version: EntryVersionNew
|
version: EntryVersionNew
|
||||||
): Promise<number> {
|
): Promise<number> {
|
||||||
const data = ZEntryVersionNew.parse(version);
|
const data = ZEntryVersionNew.parse(version);
|
||||||
const created = await prisma.entryVersion.create({
|
|
||||||
data: {
|
return prisma.$transaction(async (tx) => {
|
||||||
entryId,
|
const entry = await tx.entry.findUniqueOrThrow({
|
||||||
authorId,
|
where: { id: entry_id },
|
||||||
...data,
|
include: {
|
||||||
},
|
EntryVersion: {
|
||||||
|
orderBy: { created_at: "desc" },
|
||||||
|
take: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const cver = entry.EntryVersion[0];
|
||||||
|
|
||||||
|
// Check if the entry has been updated by someone else
|
||||||
|
if (data.old_version && (!cver || cver.id !== data.old_version)) {
|
||||||
|
throw new ErrorConflict("old version id does not match");
|
||||||
|
}
|
||||||
|
|
||||||
|
const created = await tx.entryVersion.create({
|
||||||
|
data: {
|
||||||
|
// Old version
|
||||||
|
entry_id,
|
||||||
|
author_id,
|
||||||
|
text: data.text || cver.text,
|
||||||
|
date: data.date || cver.date,
|
||||||
|
category_id: data.category_id || cver.category_id,
|
||||||
|
priority: data.priority || cver.priority,
|
||||||
|
},
|
||||||
|
select: { id: true },
|
||||||
|
});
|
||||||
|
return created.id;
|
||||||
});
|
});
|
||||||
return created.id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function newEntryExecution(
|
export async function newEntryExecution(
|
||||||
authorId: number,
|
author_id: number,
|
||||||
entryId: number,
|
entry_id: number,
|
||||||
execution: EntryExecutionNew
|
execution: EntryExecutionNew
|
||||||
): Promise<number> {
|
): Promise<number> {
|
||||||
const data = ZEntryExecutionNew.parse(execution);
|
const data = ZEntryExecutionNew.parse(execution);
|
||||||
const created = await prisma.entryExecution.create({
|
|
||||||
data: {
|
return prisma.$transaction(async (tx) => {
|
||||||
entryId,
|
const entry = await tx.entry.findUniqueOrThrow({
|
||||||
authorId,
|
where: { id: entry_id },
|
||||||
...data,
|
include: {
|
||||||
},
|
EntryExecution: {
|
||||||
|
orderBy: { created_at: "desc" },
|
||||||
|
take: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const cex = entry.EntryExecution[0];
|
||||||
|
|
||||||
|
// Check if the execution has been updated by someone else
|
||||||
|
if (
|
||||||
|
(data.old_execution && (!cex || cex.id !== data.old_execution)) ||
|
||||||
|
(data.old_execution === null && cex)
|
||||||
|
) {
|
||||||
|
throw new ErrorConflict("old execution id does not match");
|
||||||
|
}
|
||||||
|
|
||||||
|
const created = await prisma.entryExecution.create({
|
||||||
|
data: {
|
||||||
|
entry_id,
|
||||||
|
author_id,
|
||||||
|
text: data.text,
|
||||||
|
},
|
||||||
|
select: { id: true },
|
||||||
|
});
|
||||||
|
return created.id;
|
||||||
});
|
});
|
||||||
return created.id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getEntries(req: EntriesRequest): Promise<Pagination<Entry>> {
|
export async function getEntries(req: EntriesRequest): Promise<Pagination<Entry>> {
|
||||||
const qb = new QueryBuilder(
|
const qb = new QueryBuilder(
|
||||||
`select
|
`select
|
||||||
e.id,
|
e.id,
|
||||||
e."createdAt",
|
e.created_at,
|
||||||
ev.text,
|
ev.text,
|
||||||
ev."date",
|
ev.date,
|
||||||
ev.priority,
|
ev.priority,
|
||||||
ev.id as "versionId",
|
ev.id as version_id,
|
||||||
ev."createdAt" as "versionCreatedAt",
|
ev.created_at as version_created_at,
|
||||||
vau.id as "versionAuthorId",
|
vau.id as version_author_id,
|
||||||
vau."name" as "versionAuthorName",
|
vau.name as version_author_name,
|
||||||
c.id as "categoryId",
|
c.id as category_id,
|
||||||
c."name" as "categoryName",
|
c.name as category_name,
|
||||||
c.color as "categoryColor",
|
c.color as category_color,
|
||||||
ex.id as "executionId",
|
ex.id as execution_id,
|
||||||
ex.text as "executionText",
|
ex.text as execution_text,
|
||||||
ex."createdAt" as "executionCreatedAt",
|
ex.created_at as execution_created_at,
|
||||||
xau.id as "executionAuthorId",
|
xau.id as execution_author_id,
|
||||||
xau.name as "executionAuthorName",
|
xau.name as execution_author_name,
|
||||||
p.id as "patientId",
|
p.id as patient_id,
|
||||||
p."firstName" as "patientFirstName",
|
p.first_name as patient_first_name,
|
||||||
p."lastName" as "patientLastName",
|
p.last_name as patient_last_name,
|
||||||
p.age as "patientAge",
|
p.age as patient_age,
|
||||||
p."createdAt" as "patientCreatedAt",
|
p.created_at as patient_created_at,
|
||||||
r.id as "roomId",
|
r.id as room_id,
|
||||||
r."name" as "roomName",
|
r.name as room_name,
|
||||||
s.id as "stationId",
|
s.id as station_id,
|
||||||
s."name" as "stationName"`,
|
s.name as station_name`,
|
||||||
`from entries e
|
`from entries e
|
||||||
join entry_versions ev on
|
join entry_versions ev on
|
||||||
ev."entryId" = e.id
|
ev.entry_id = e.id
|
||||||
and ev.id = (
|
and ev.id = (
|
||||||
select
|
select
|
||||||
id
|
id
|
||||||
from
|
from
|
||||||
entry_versions ev2
|
entry_versions ev2
|
||||||
where
|
where
|
||||||
ev2."entryId" = ev."entryId"
|
ev2.entry_id = ev.entry_id
|
||||||
order by
|
order by
|
||||||
ev2."createdAt" desc
|
ev2.created_at desc
|
||||||
limit 1)
|
limit 1)
|
||||||
join users vau on vau.id=ev."authorId"
|
join users vau on vau.id=ev.author_id
|
||||||
left join categories c on c.id=ev."categoryId"
|
left join categories c on c.id=ev.category_id
|
||||||
left join entry_execution ex on
|
left join entry_executions ex on
|
||||||
ex."entryId" = e.id
|
ex.entry_id = e.id
|
||||||
and ex.id = (
|
and ex.id = (
|
||||||
select
|
select
|
||||||
id
|
id
|
||||||
from
|
from
|
||||||
entry_execution ex2
|
entry_executions ex2
|
||||||
where
|
where
|
||||||
ex2."entryId" = ex."entryId"
|
ex2.entry_id = ex.entry_id
|
||||||
order by
|
order by
|
||||||
ex2."createdAt" desc
|
ex2.created_at desc
|
||||||
limit 1)
|
limit 1)
|
||||||
left join users xau on xau.id=ex."authorId"
|
left join users xau on xau.id=ex.author_id
|
||||||
join patients p on p.id = e."patientId"
|
join patients p on p.id = e.patient_id
|
||||||
join rooms r on r.id = p."roomId"
|
join rooms r on r.id = p.room_id
|
||||||
join stations s on s.id = r."stationId"`
|
join stations s on s.id = r.station_id`
|
||||||
);
|
);
|
||||||
|
|
||||||
// qb.addFilterIsNull("ex.id", req.filter?.done);
|
if (req.filter?.search && req.filter.search.length > 0) {
|
||||||
|
const query = parseSearchQuery(req.filter.search);
|
||||||
|
qb.addFilterClause(
|
||||||
|
`to_tsquery('german', ${qb.pvar()}) @@ e.tsvec`,
|
||||||
|
query.toTsquery()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (req.filter?.done === true) {
|
if (req.filter?.done === true) {
|
||||||
qb.addFilterClause("ex.id is not null");
|
qb.addFilterClause("ex.id is not null");
|
||||||
} else if (req.filter?.done === false) {
|
} else if (req.filter?.done === false) {
|
||||||
|
@ -168,41 +224,41 @@ join stations s on s.id = r."stationId"`
|
||||||
author = [author];
|
author = [author];
|
||||||
}
|
}
|
||||||
qb.addFilterClause(
|
qb.addFilterClause(
|
||||||
`${qb.pvar()}::integer[] && (select array_agg(ev2."authorId") from entry_versions ev2 where ev2."entryId"=e.id)`,
|
`${qb.pvar()}::integer[] && (select array_agg(ev2.author_id) from entry_versions ev2 where ev2.entry_id=e.id)`,
|
||||||
author
|
author
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
qb.setOrderClause(`order by e."createdAt" desc`);
|
qb.setOrderClause(`order by e.created_at desc`);
|
||||||
if (req.pagination) qb.setPagination(req.pagination);
|
if (req.pagination) qb.setPagination(req.pagination);
|
||||||
|
|
||||||
type RequestItem = {
|
type RequestItem = {
|
||||||
id: number;
|
id: number;
|
||||||
createdAt: Date;
|
created_at: Date;
|
||||||
text: string;
|
text: string;
|
||||||
date: Date;
|
date: Date;
|
||||||
priority: boolean;
|
priority: boolean;
|
||||||
versionId: number;
|
version_id: number;
|
||||||
versionCreatedAt: Date;
|
version_created_at: Date;
|
||||||
versionAuthorId: number;
|
version_author_id: number;
|
||||||
versionAuthorName: string;
|
version_author_name: string;
|
||||||
categoryId: number;
|
category_id: number;
|
||||||
categoryName: string;
|
category_name: string;
|
||||||
categoryColor: string;
|
category_color: string;
|
||||||
executionId: number;
|
execution_id: number;
|
||||||
executionText: string;
|
execution_text: string;
|
||||||
executionCreatedAt: Date;
|
execution_created_at: Date;
|
||||||
executionAuthorId: number;
|
execution_author_id: number;
|
||||||
executionAuthorName: string;
|
execution_author_name: string;
|
||||||
patientId: number;
|
patient_id: number;
|
||||||
patientFirstName: string;
|
patient_first_name: string;
|
||||||
patientLastName: string;
|
patient_last_name: string;
|
||||||
patientAge: number;
|
patient_age: number;
|
||||||
patientCreatedAt: Date;
|
patient_created_at: Date;
|
||||||
roomId: number;
|
room_id: number;
|
||||||
roomName: string;
|
room_name: string;
|
||||||
stationId: number;
|
station_id: number;
|
||||||
stationName: string;
|
station_name: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const [res, countRes] = (await Promise.all([
|
const [res, countRes] = (await Promise.all([
|
||||||
|
@ -216,40 +272,40 @@ join stations s on s.id = r."stationId"`
|
||||||
return {
|
return {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
patient: {
|
patient: {
|
||||||
id: item.patientId,
|
id: item.patient_id,
|
||||||
firstName: item.patientFirstName,
|
first_name: item.patient_first_name,
|
||||||
lastName: item.patientLastName,
|
last_name: item.patient_last_name,
|
||||||
createdAt: item.patientCreatedAt,
|
created_at: item.patient_created_at,
|
||||||
age: item.patientAge,
|
age: item.patient_age,
|
||||||
room: {
|
room: {
|
||||||
id: item.roomId,
|
id: item.room_id,
|
||||||
name: item.roomName,
|
name: item.room_name,
|
||||||
station: { id: item.stationId, name: item.stationName },
|
station: { id: item.station_id, name: item.station_name },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
createdAt: item.createdAt,
|
created_at: item.created_at,
|
||||||
currentVersion: {
|
current_version: {
|
||||||
id: item.versionId,
|
id: item.version_id,
|
||||||
text: item.text,
|
text: item.text,
|
||||||
date: item.date,
|
date: item.date,
|
||||||
category: item.categoryId
|
category: item.category_id
|
||||||
? {
|
? {
|
||||||
id: item.categoryId,
|
id: item.category_id,
|
||||||
name: item.categoryName,
|
name: item.category_name,
|
||||||
color: item.categoryColor,
|
color: item.category_color,
|
||||||
description: null,
|
description: null,
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
priority: item.priority,
|
priority: item.priority,
|
||||||
author: { id: item.versionAuthorId, name: item.versionAuthorName },
|
author: { id: item.version_author_id, name: item.version_author_name },
|
||||||
createdAt: item.createdAt,
|
created_at: item.version_created_at,
|
||||||
},
|
},
|
||||||
execution: item.executionId
|
execution: item.execution_id
|
||||||
? {
|
? {
|
||||||
id: item.executionId,
|
id: item.execution_id,
|
||||||
author: { id: item.executionAuthorId, name: item.executionAuthorName },
|
author: { id: item.execution_author_id, name: item.execution_author_name },
|
||||||
text: item.executionText,
|
text: item.execution_text,
|
||||||
createdAt: item.executionCreatedAt,
|
created_at: item.execution_created_at,
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import type { Entry, Patient, User, UserTag, Room } from "$lib/shared/model";
|
import type { Entry, Patient, User, UserTag, Room } from "$lib/shared/model";
|
||||||
|
import { ErrorNotFound } from "$lib/shared/util/error";
|
||||||
import type {
|
import type {
|
||||||
Patient as DbPatient,
|
Patient as DbPatient,
|
||||||
Room as DbRoom,
|
Room as DbRoom,
|
||||||
|
@ -21,9 +22,9 @@ type DbEntryExecutionLn = DbEntryExecution & { author: UserTag };
|
||||||
export function mapPatient(patient: DbPatientLn): Patient {
|
export function mapPatient(patient: DbPatientLn): Patient {
|
||||||
return {
|
return {
|
||||||
id: patient.id,
|
id: patient.id,
|
||||||
firstName: patient.firstName,
|
first_name: patient.first_name,
|
||||||
lastName: patient.lastName,
|
last_name: patient.last_name,
|
||||||
createdAt: patient.createdAt,
|
created_at: patient.created_at,
|
||||||
age: patient.age,
|
age: patient.age,
|
||||||
room: patient.room
|
room: patient.room
|
||||||
? {
|
? {
|
||||||
|
@ -55,27 +56,27 @@ export function mapEntry(
|
||||||
}
|
}
|
||||||
): Entry {
|
): Entry {
|
||||||
const v = entry.EntryVersion[0];
|
const v = entry.EntryVersion[0];
|
||||||
if (!v) throw new Error("no version associated with that entry");
|
if (!v) throw new ErrorNotFound("no version associated with that entry");
|
||||||
const x = entry.EntryExecution[0];
|
const x = entry.EntryExecution[0];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: entry.id,
|
id: entry.id,
|
||||||
patient: mapPatient(entry.patient),
|
patient: mapPatient(entry.patient),
|
||||||
createdAt: entry.createdAt,
|
created_at: entry.created_at,
|
||||||
currentVersion: {
|
current_version: {
|
||||||
id: v.id,
|
id: v.id,
|
||||||
text: v.text,
|
text: v.text,
|
||||||
date: v.date,
|
date: v.date,
|
||||||
category: v.category,
|
category: v.category,
|
||||||
priority: v.priority,
|
priority: v.priority,
|
||||||
author: v.author,
|
author: v.author,
|
||||||
createdAt: v.createdAt,
|
created_at: v.created_at,
|
||||||
},
|
},
|
||||||
execution: x
|
execution: x
|
||||||
? {
|
? {
|
||||||
id: x.id,
|
id: x.id,
|
||||||
author: x.author,
|
author: x.author,
|
||||||
createdAt: x.createdAt,
|
created_at: x.created_at,
|
||||||
text: x.text,
|
text: x.text,
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { convertFilterList } from "./util";
|
||||||
|
|
||||||
export async function newPatient(patient: PatientNew): Promise<number> {
|
export async function newPatient(patient: PatientNew): Promise<number> {
|
||||||
const data = ZPatientNew.parse(patient);
|
const data = ZPatientNew.parse(patient);
|
||||||
const created = await prisma.patient.create({ data });
|
const created = await prisma.patient.create({ data, select: { id: true } });
|
||||||
return created.id;
|
return created.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,9 +29,9 @@ export async function getPatient(id: number): Promise<Patient> {
|
||||||
export async function getPatients(req: PatientsRequest): Promise<Pagination<Patient>> {
|
export async function getPatients(req: PatientsRequest): Promise<Pagination<Patient>> {
|
||||||
const offset = req.pagination?.offset || 0;
|
const offset = req.pagination?.offset || 0;
|
||||||
const where = {
|
const where = {
|
||||||
roomId: convertFilterList(req.filter?.room),
|
room_id: convertFilterList(req.filter?.room),
|
||||||
room: {
|
room: {
|
||||||
stationId: convertFilterList(req.filter?.station),
|
station_id: convertFilterList(req.filter?.station),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const [patients, total] = await Promise.all([
|
const [patients, total] = await Promise.all([
|
||||||
|
@ -40,7 +40,7 @@ export async function getPatients(req: PatientsRequest): Promise<Pagination<Pati
|
||||||
include: {
|
include: {
|
||||||
room: { include: { station: true } },
|
room: { include: { station: true } },
|
||||||
},
|
},
|
||||||
orderBy: { createdAt: "desc" },
|
orderBy: { created_at: "desc" },
|
||||||
skip: offset,
|
skip: offset,
|
||||||
take: req.pagination?.limit || PAGINATION_LIMIT,
|
take: req.pagination?.limit || PAGINATION_LIMIT,
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { mapRoom } from "./mapping";
|
||||||
|
|
||||||
export async function newStation(station: StationNew): Promise<number> {
|
export async function newStation(station: StationNew): Promise<number> {
|
||||||
const data = ZStationNew.parse(station);
|
const data = ZStationNew.parse(station);
|
||||||
const created = await prisma.station.create({ data });
|
const created = await prisma.station.create({ data, select: { id: true } });
|
||||||
return created.id;
|
return created.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ export async function getStations(): Promise<Station[]> {
|
||||||
|
|
||||||
export async function newRoom(room: RoomNew): Promise<number> {
|
export async function newRoom(room: RoomNew): Promise<number> {
|
||||||
const data = ZRoomNew.parse(room);
|
const data = ZRoomNew.parse(room);
|
||||||
const created = await prisma.room.create({ data });
|
const created = await prisma.room.create({ data, select: { id: true } });
|
||||||
return created.id;
|
return created.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { expect, test } from "vitest";
|
import { expect, test } from "vitest";
|
||||||
import { QueryBuilder } from "./util";
|
import { QueryBuilder, parseSearchQuery } from "./util";
|
||||||
|
|
||||||
test("query builder", () => {
|
test("query builder", () => {
|
||||||
const qb = new QueryBuilder("select e.id, e.text, e.category", "from entries e");
|
const qb = new QueryBuilder("select e.id, e.text, e.category", "from entries e");
|
||||||
|
@ -18,3 +18,40 @@ test("query builder", () => {
|
||||||
expect(params[2]).toBe(20);
|
expect(params[2]).toBe(20);
|
||||||
expect(params[3]).toBe(10);
|
expect(params[3]).toBe(10);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("parse search query", () => {
|
||||||
|
const q = `"hello world" banana -cherry -"b x y" vis`;
|
||||||
|
const parsed = parseSearchQuery(q);
|
||||||
|
expect(parsed.components).toMatchObject([
|
||||||
|
{
|
||||||
|
negative: false,
|
||||||
|
typ: 2,
|
||||||
|
word: "hello world",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
negative: false,
|
||||||
|
typ: 1,
|
||||||
|
word: "banana",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
negative: true,
|
||||||
|
typ: 1,
|
||||||
|
word: "cherry",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
negative: true,
|
||||||
|
typ: 2,
|
||||||
|
word: "b x y",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
negative: false,
|
||||||
|
typ: 3,
|
||||||
|
word: "vis",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
const term = parsed.toTsquery();
|
||||||
|
expect(term).toBe(
|
||||||
|
`'hello' <-> 'world' & 'banana' & !'cherry' & !('b' <-> 'x' <-> 'y') & 'vis':*`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
|
@ -13,6 +13,97 @@ export function convertFilterList<T>(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum QueryComponentType {
|
||||||
|
Normal = 1,
|
||||||
|
Exact,
|
||||||
|
Trailing,
|
||||||
|
}
|
||||||
|
|
||||||
|
class SearchQueryComponent {
|
||||||
|
word: string;
|
||||||
|
typ: QueryComponentType;
|
||||||
|
negative: boolean;
|
||||||
|
|
||||||
|
constructor(word: string, typ: QueryComponentType, negative: boolean) {
|
||||||
|
this.word = word;
|
||||||
|
this.typ = typ;
|
||||||
|
this.negative = negative;
|
||||||
|
}
|
||||||
|
|
||||||
|
private quoted(): string {
|
||||||
|
return `'${this.word}'`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the query component to a Postgres Tsquery string
|
||||||
|
*/
|
||||||
|
toTsquery(): string {
|
||||||
|
let tsquery;
|
||||||
|
let multipleParts = false;
|
||||||
|
|
||||||
|
if (this.typ == QueryComponentType.Exact) {
|
||||||
|
const parts = this.word.split(" ").map((s) => `'${s}'`);
|
||||||
|
multipleParts = parts.length > 1;
|
||||||
|
tsquery = parts.join(" <-> ");
|
||||||
|
} else if (this.typ == QueryComponentType.Trailing) {
|
||||||
|
tsquery = this.quoted() + ":*";
|
||||||
|
} else {
|
||||||
|
tsquery = this.quoted();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.negative) {
|
||||||
|
if (multipleParts) {
|
||||||
|
tsquery = "!(" + tsquery + ")";
|
||||||
|
} else {
|
||||||
|
tsquery = "!" + tsquery;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tsquery;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SearchQueryComponents {
|
||||||
|
components: SearchQueryComponent[];
|
||||||
|
|
||||||
|
constructor(components: SearchQueryComponent[]) {
|
||||||
|
this.components = components;
|
||||||
|
}
|
||||||
|
|
||||||
|
toTsquery(): string {
|
||||||
|
return this.components.map((c) => c.toTsquery()).join(" & ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Split a search query into individual components
|
||||||
|
*
|
||||||
|
* Supported search syntax:
|
||||||
|
* - Negative query `-word`
|
||||||
|
* - Exact query `"word"`
|
||||||
|
*/
|
||||||
|
export function parseSearchQuery(q: string): SearchQueryComponents {
|
||||||
|
const regexpParts = /(-)?(?:"([^"]*)"|([^"\s]+))(?:\s|$)/g;
|
||||||
|
const components = Array.from(q.matchAll(regexpParts), (m) => {
|
||||||
|
const negative = m[1] === "-";
|
||||||
|
// Exact
|
||||||
|
if (m[2]) {
|
||||||
|
return new SearchQueryComponent(m[2], QueryComponentType.Exact, negative);
|
||||||
|
} else {
|
||||||
|
return new SearchQueryComponent(m[3], QueryComponentType.Normal, negative);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (
|
||||||
|
components.length > 0 &&
|
||||||
|
components[components.length - 1].typ === QueryComponentType.Normal
|
||||||
|
) {
|
||||||
|
components[components.length - 1].typ = QueryComponentType.Trailing;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new SearchQueryComponents(components);
|
||||||
|
}
|
||||||
|
|
||||||
export class QueryBuilder {
|
export class QueryBuilder {
|
||||||
private selectClause;
|
private selectClause;
|
||||||
private fromClause;
|
private fromClause;
|
||||||
|
|
|
@ -34,7 +34,7 @@ export type Room = {
|
||||||
|
|
||||||
export type RoomNew = {
|
export type RoomNew = {
|
||||||
name: string;
|
name: string;
|
||||||
stationId: number;
|
station_id: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Category = {
|
export type Category = {
|
||||||
|
@ -52,31 +52,31 @@ export type CategoryNew = {
|
||||||
|
|
||||||
export type Patient = {
|
export type Patient = {
|
||||||
id: number;
|
id: number;
|
||||||
firstName: string;
|
first_name: string;
|
||||||
lastName: string;
|
last_name: string;
|
||||||
age: Option<number>;
|
age: Option<number>;
|
||||||
room: Option<Room>;
|
room: Option<Room>;
|
||||||
createdAt: Date;
|
created_at: Date;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PatientNew = {
|
export type PatientNew = {
|
||||||
firstName: string;
|
first_name: string;
|
||||||
lastName: string;
|
last_name: string;
|
||||||
age: Option<number>;
|
age: Option<number>;
|
||||||
roomId: number;
|
room_id: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Entry = {
|
export type Entry = {
|
||||||
id: number;
|
id: number;
|
||||||
patient: Patient;
|
patient: Patient;
|
||||||
createdAt: Date;
|
created_at: Date;
|
||||||
currentVersion: EntryVersion;
|
current_version: EntryVersion;
|
||||||
execution: Option<EntryExecution>;
|
execution: Option<EntryExecution>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type EntryNew = {
|
export type EntryNew = {
|
||||||
patientId: number;
|
patient_id: number;
|
||||||
version: EntryVersionNew;
|
version: EntryVersionNdata;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type EntryVersion = {
|
export type EntryVersion = {
|
||||||
|
@ -86,23 +86,30 @@ export type EntryVersion = {
|
||||||
category: Option<Category>;
|
category: Option<Category>;
|
||||||
priority: boolean;
|
priority: boolean;
|
||||||
author: UserTag;
|
author: UserTag;
|
||||||
createdAt: Date;
|
created_at: Date;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type EntryVersionNew = {
|
export type EntryVersionNdata = {
|
||||||
text: string;
|
text: string;
|
||||||
date: Date;
|
date: Date;
|
||||||
categoryId: Option<number>;
|
category_id: Option<number>;
|
||||||
priority: boolean;
|
priority: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type EntryVersionNew = Partial<{
|
||||||
|
old_version: number;
|
||||||
|
}> &
|
||||||
|
Partial<EntryVersionNdata>;
|
||||||
|
|
||||||
export type EntryExecution = {
|
export type EntryExecution = {
|
||||||
id: number;
|
id: number;
|
||||||
author: UserTag;
|
author: UserTag;
|
||||||
text: string;
|
text: string;
|
||||||
createdAt: Date;
|
created_at: Date;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type EntryExecutionNew = {
|
export type EntryExecutionNew = Partial<{
|
||||||
|
old_execution: number | null;
|
||||||
|
}> & {
|
||||||
text: string;
|
text: string;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,6 +6,7 @@ export type PaginationRequest = {
|
||||||
export type FilterList<T> = T | T[];
|
export type FilterList<T> = T | T[];
|
||||||
|
|
||||||
export type EntriesFilter = Partial<{
|
export type EntriesFilter = Partial<{
|
||||||
|
search: string;
|
||||||
done: boolean;
|
done: boolean;
|
||||||
author: FilterList<number>;
|
author: FilterList<number>;
|
||||||
executor: FilterList<number>;
|
executor: FilterList<number>;
|
||||||
|
|
|
@ -4,6 +4,7 @@ import type {
|
||||||
CategoryNew,
|
CategoryNew,
|
||||||
EntryExecutionNew,
|
EntryExecutionNew,
|
||||||
EntryNew,
|
EntryNew,
|
||||||
|
EntryVersionNdata,
|
||||||
EntryVersionNew,
|
EntryVersionNew,
|
||||||
PatientNew,
|
PatientNew,
|
||||||
RoomNew,
|
RoomNew,
|
||||||
|
@ -18,7 +19,7 @@ export const ZStationNew = implement<StationNew>().with({ name: ZNameString });
|
||||||
|
|
||||||
export const ZRoomNew = implement<RoomNew>().with({
|
export const ZRoomNew = implement<RoomNew>().with({
|
||||||
name: ZNameString,
|
name: ZNameString,
|
||||||
stationId: ZEntityId,
|
station_id: ZEntityId,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ZCategoryNew = implement<CategoryNew>().with({
|
export const ZCategoryNew = implement<CategoryNew>().with({
|
||||||
|
@ -32,24 +33,31 @@ export const ZCategoryNew = implement<CategoryNew>().with({
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ZPatientNew = implement<PatientNew>().with({
|
export const ZPatientNew = implement<PatientNew>().with({
|
||||||
firstName: ZNameString,
|
first_name: ZNameString,
|
||||||
lastName: ZNameString,
|
last_name: ZNameString,
|
||||||
age: z.number().int().nonnegative().lt(200).nullable(),
|
age: z.number().int().nonnegative().lt(200).nullable(),
|
||||||
roomId: ZEntityId,
|
room_id: ZEntityId,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ZEntryVersionNew = implement<EntryVersionNew>().with({
|
export const ZEntryVersionNew = implement<EntryVersionNew>().with({
|
||||||
text: ZTextString,
|
old_version: ZEntityId.optional(),
|
||||||
date: z.date(),
|
text: ZTextString.optional(),
|
||||||
categoryId: ZEntityId.nullable(),
|
date: z.date().optional(),
|
||||||
priority: z.boolean(),
|
category_id: ZEntityId.optional().nullable(),
|
||||||
|
priority: z.boolean().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ZEntryNew = implement<EntryNew>().with({
|
export const ZEntryNew = implement<EntryNew>().with({
|
||||||
patientId: ZEntityId,
|
patient_id: ZEntityId,
|
||||||
version: ZEntryVersionNew,
|
version: implement<EntryVersionNdata>().with({
|
||||||
|
text: ZTextString,
|
||||||
|
date: z.date(),
|
||||||
|
category_id: ZEntityId.nullable(),
|
||||||
|
priority: z.boolean(),
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ZEntryExecutionNew = implement<EntryExecutionNew>().with({
|
export const ZEntryExecutionNew = implement<EntryExecutionNew>().with({
|
||||||
|
old_execution: ZEntityId.optional().nullable(),
|
||||||
text: ZTextString,
|
text: ZTextString,
|
||||||
});
|
});
|
||||||
|
|
13
src/lib/shared/util/error.ts
Normal file
13
src/lib/shared/util/error.ts
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
export class ErrorConflict extends Error {
|
||||||
|
constructor(msg: string) {
|
||||||
|
super("conflict: " + msg);
|
||||||
|
Object.setPrototypeOf(this, ErrorConflict.prototype);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ErrorNotFound extends Error {
|
||||||
|
constructor(msg: string) {
|
||||||
|
super(msg);
|
||||||
|
Object.setPrototypeOf(this, ErrorNotFound.prototype);
|
||||||
|
}
|
||||||
|
}
|
161
tests/helpers/generate-mockdata.ts
Normal file
161
tests/helpers/generate-mockdata.ts
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
import { prisma } from "$lib/server/prisma";
|
||||||
|
import { faker } from "@faker-js/faker";
|
||||||
|
import fs from "fs";
|
||||||
|
import { CATEGORIES, STATIONS } from "./testdata";
|
||||||
|
import path from "path";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
|
||||||
|
type MockEntry = { category: string; description: string; result: string };
|
||||||
|
|
||||||
|
const CATEGORY_IDS: { [id: string]: number } = {
|
||||||
|
Laborabnahme: 1,
|
||||||
|
Untersuchungen: 2,
|
||||||
|
Medikationsumstellung: 3,
|
||||||
|
"Klinische Visite": 4,
|
||||||
|
Entlassung: 5,
|
||||||
|
Sonstiges: 6,
|
||||||
|
};
|
||||||
|
const refDate = new Date(2023, 11, 1);
|
||||||
|
|
||||||
|
const N_USERS = 10;
|
||||||
|
const N_ROOMS = 20;
|
||||||
|
const N_PATIENTS = 50;
|
||||||
|
|
||||||
|
export default async () => {
|
||||||
|
// Reset database
|
||||||
|
await prisma.$transaction([
|
||||||
|
prisma.entryExecution.deleteMany(),
|
||||||
|
prisma.entryVersion.deleteMany(),
|
||||||
|
prisma.entry.deleteMany(),
|
||||||
|
prisma.patient.deleteMany(),
|
||||||
|
prisma.room.deleteMany(),
|
||||||
|
prisma.station.deleteMany(),
|
||||||
|
prisma.category.deleteMany(),
|
||||||
|
prisma.user.deleteMany(),
|
||||||
|
prisma.category.createMany({ data: CATEGORIES }),
|
||||||
|
prisma.station.createMany({ data: STATIONS }),
|
||||||
|
prisma.$executeRawUnsafe("alter sequence entries_id_seq restart with 1"),
|
||||||
|
prisma.$executeRawUnsafe("alter sequence entry_executions_id_seq restart with 1"),
|
||||||
|
prisma.$executeRawUnsafe("alter sequence entry_versions_id_seq restart with 1"),
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Make generated data reproducible
|
||||||
|
faker.seed(42);
|
||||||
|
|
||||||
|
const filepath = path.join(
|
||||||
|
fileURLToPath(import.meta.url),
|
||||||
|
"../mockdata_entries.jsonl"
|
||||||
|
);
|
||||||
|
const file = fs.readFileSync(filepath).toString();
|
||||||
|
const entryMockdata: MockEntry[] = file
|
||||||
|
.trim()
|
||||||
|
.split("\n")
|
||||||
|
.map((l) => JSON.parse(l));
|
||||||
|
|
||||||
|
function randomId(len: number): number {
|
||||||
|
return faker.number.int({ min: 1, max: len - 1 });
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 1; i <= N_USERS; i++) {
|
||||||
|
const firstName = faker.person.firstName();
|
||||||
|
const lastName = faker.person.lastName();
|
||||||
|
|
||||||
|
await prisma.user.create({
|
||||||
|
data: {
|
||||||
|
id: i,
|
||||||
|
name: firstName + " " + lastName,
|
||||||
|
email: faker.internet.email({ firstName, lastName }),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let i = 1;
|
||||||
|
for (let sId = 1; sId <= 2; sId++) {
|
||||||
|
for (let rId = 1; rId <= 10; rId++) {
|
||||||
|
await prisma.room.create({
|
||||||
|
data: { id: i, name: `R${sId}.${rId}`, station_id: sId },
|
||||||
|
});
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 1; i <= N_PATIENTS; i++) {
|
||||||
|
await prisma.patient.create({
|
||||||
|
data: {
|
||||||
|
id: i,
|
||||||
|
first_name: faker.person.firstName(),
|
||||||
|
last_name: faker.person.lastName(),
|
||||||
|
age: faker.number.int({ min: 16, max: 100 }),
|
||||||
|
room_id: randomId(N_ROOMS),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < entryMockdata.length; i++) {
|
||||||
|
const e = entryMockdata[i];
|
||||||
|
const created_at = faker.date.soon({ refDate, days: 30 });
|
||||||
|
const todo_date = faker.date.soon({ refDate: created_at, days: 30 });
|
||||||
|
const priority = faker.datatype.boolean({ probability: 0.05 });
|
||||||
|
const entry = await prisma.entry.create({
|
||||||
|
data: {
|
||||||
|
patient_id: randomId(N_PATIENTS),
|
||||||
|
created_at,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await prisma.entryVersion.create({
|
||||||
|
data: {
|
||||||
|
entry_id: entry.id,
|
||||||
|
author_id: randomId(N_USERS),
|
||||||
|
category_id: CATEGORY_IDS[e.category],
|
||||||
|
date: todo_date,
|
||||||
|
priority,
|
||||||
|
text: e.description,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add additional version(s) with some extra text
|
||||||
|
for (let n = 0; n < faker.number.int({ min: 0, max: 3 }); n++) {
|
||||||
|
const extraText = "\n\n> " + faker.lorem.paragraph();
|
||||||
|
await prisma.entryVersion.create({
|
||||||
|
data: {
|
||||||
|
entry_id: entry.id,
|
||||||
|
author_id: randomId(N_USERS),
|
||||||
|
category_id: CATEGORY_IDS[e.category],
|
||||||
|
date: todo_date,
|
||||||
|
priority,
|
||||||
|
text: e.description + extraText,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 30% of entries are done
|
||||||
|
if (faker.datatype.boolean({ probability: 0.3 })) {
|
||||||
|
await prisma.entryExecution.create({
|
||||||
|
data: {
|
||||||
|
entry_id: entry.id,
|
||||||
|
author_id: randomId(N_USERS),
|
||||||
|
text: e.result,
|
||||||
|
created_at: faker.date.soon({ refDate: todo_date, days: 2 }),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
await prisma.$transaction([
|
||||||
|
prisma.$executeRawUnsafe(
|
||||||
|
`alter sequence users_id_seq restart with ${N_USERS + 1}`
|
||||||
|
),
|
||||||
|
prisma.$executeRawUnsafe(
|
||||||
|
`alter sequence categories_id_seq restart with ${CATEGORIES.length + 1}`
|
||||||
|
),
|
||||||
|
prisma.$executeRawUnsafe(
|
||||||
|
`alter sequence stations_id_seq restart with ${STATIONS.length + 1}`
|
||||||
|
),
|
||||||
|
prisma.$executeRawUnsafe(
|
||||||
|
`alter sequence rooms_id_seq restart with ${N_ROOMS + 1}`
|
||||||
|
),
|
||||||
|
prisma.$executeRawUnsafe(
|
||||||
|
`alter sequence patients_id_seq restart with ${N_PATIENTS + 1}`
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
};
|
300
tests/helpers/mockdata_entries.jsonl
Normal file
300
tests/helpers/mockdata_entries.jsonl
Normal file
|
@ -0,0 +1,300 @@
|
||||||
|
{"category": "Laborabnahme", "description": "Dem Patienten wurde Blut abgenommen, um verschiedene Laborwerte zu überprüfen.", "result": "Die Blutprobe wurde entnommen und zur Analyse an das Labor geschickt. Die Ergebnisse werden in Kürze erwartet."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurde eine Anpassung der Medikation vorgenommen, um die Behandlung zu optimieren.", "result": "Die Medikationsumstellung wurde erfolgreich durchgeführt. Der Patient wird engmaschig überwacht, um mögliche Reaktionen auf die neuen Medikamente zu erfassen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde klinisch untersucht, um den aktuellen Gesundheitszustand zu beurteilen.", "result": "Bei der klinischen Visite wurden vitale Parameter überprüft, einschließlich Blutdruck, Puls und Temperatur. Der Patient zeigt keine ungewöhnlichen Symptome und befindet sich in stabilem Zustand."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es ist eine radiologische Untersuchung erforderlich, um genaue Informationen zu erhalten.", "result": "Die radiologische Untersuchung wurde durchgeführt, um detaillierte Bilder der betroffenen Bereiche zu erhalten. Die Ergebnisse werden vom Fachpersonal ausgewertet und mit dem behandelnden Arzt besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde erfolgreich aus der stationären Behandlung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung der vitalen Parameter wurde der Patient in einem stabilen Zustand entlassen. Er wurde über die weiteren Schritte der Nachsorge informiert."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind zusätzliche Maßnahmen erforderlich, um die Ursache der Beschwerden zu klären.", "result": "Es wurden weitere diagnostische Maßnahmen eingeleitet, um die genaue Ursache der Beschwerden zu identifizieren. Der Patient wird über die geplanten Untersuchungen informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient berichtet über Schlafprobleme und Unruhezustände.", "result": "Bei der klinischen Visite wurden psychische und emotionale Aspekte des Patienten angesprochen. Es wurde eine weiterführende Untersuchung der Schlafgewohnheiten und Stressfaktoren empfohlen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutprobe zur Überprüfung der Leberfunktion entnommen.", "result": "Die Blutabnahme erfolgte ohne Komplikationen. Die Ergebnisse der Leberfunktionstests werden in den nächsten Tagen erwartet."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Dosierung aufgrund von Nebenwirkungen.", "result": "Die Medikation wurde aufgrund von auftretenden Nebenwirkungen angepasst. Der Patient wird auf mögliche Verbesserungen oder weitere Reaktionen beobachtet."}
|
||||||
|
{"category": "Untersuchungen", "description": "Magnetresonanztomographie (MRT) zur detaillierten Darstellung der Gelenke.", "result": "Die MRT-Untersuchung wurde erfolgreich durchgeführt und lieferte detaillierte Bilder der Gelenke. Die Ergebnisse werden vom Radiologen ausgewertet und dem behandelnden Arzt mitgeteilt."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Operation entlassen.", "result": "Nach einer erfolgreichen Operation und Überwachung der postoperativen Phase wurde der Patient in gutem Zustand entlassen. Die weiteren Genesungsschritte wurden besprochen."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung zur physiotherapeutischen Behandlung", "result": "Nach eingehender Untersuchung wurde eine physiotherapeutische Behandlung empfohlen, um die Beweglichkeit und Muskelkraft des Patienten zu verbessern."}
|
||||||
|
{"category": "Klinische Visite", "description": "Patient klagt über anhaltende Kopfschmerzen und Schwindelgefühl.", "result": "Die klinische Visite fokussierte sich auf die Symptome von Kopfschmerzen und Schwindel. Weitere neurologische Untersuchungen sind geplant, um die Ursache zu klären."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutentnahme zur Überprüfung der Schilddrüsenwerte.", "result": "Die Blutprobe wurde entnommen, um die Schilddrüsenfunktion zu überprüfen. Die Ergebnisse werden mit dem Patienten besprochen, um gegebenenfalls eine Therapie einzuleiten."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Wechsel zu einem alternativen Medikament aufgrund von Unverträglichkeiten.", "result": "Die Medikationsumstellung wurde aufgrund von Unverträglichkeiten erfolgreich durchgeführt. Der Patient wird auf mögliche positive Auswirkungen und eventuelle Nebenwirkungen überwacht."}
|
||||||
|
{"category": "Untersuchungen", "description": "Ultraschalluntersuchung zur Abklärung von Bauchbeschwerden.", "result": "Die Ultraschalluntersuchung des Bauchraums wurde durchgeführt, um mögliche Ursachen für die Bauchbeschwerden zu identifizieren. Die Ergebnisse werden mit dem Patienten besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Patient konnte nach erfolgreicher Rehabilitation nach Hause entlassen werden.", "result": "Nach einer erfolgreichen Rehabilitation und Verbesserung des Gesundheitszustands konnte der Patient in die häusliche Umgebung entlassen werden. Empfehlungen für die Nachsorge wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung zur Ernährungsberatung aufgrund von Gewichtsproblemen.", "result": "Nach der Untersuchung wurde eine Ernährungsberatung empfohlen, um das Gewicht des Patienten zu stabilisieren und gesunde Essgewohnheiten zu fördern."}
|
||||||
|
{"category": "Klinische Visite", "description": "Besprechung der aktuellen Symptome und Fortschritte des Patienten.", "result": "Die klinische Visite konzentrierte sich auf die Besprechung der aktuellen Symptome und Fortschritte des Patienten. Anpassungen der Behandlungspläne wurden vorgenommen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutuntersuchung zur Überprüfung der Blutzuckerwerte.", "result": "Die Blutuntersuchung zur Überprüfung der Blutzuckerwerte wurde durchgeführt. Die Ergebnisse werden mit dem Patienten besprochen, um die Diabetesbehandlung zu optimieren."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Änderung der Medikation zur besseren Kontrolle von Bluthochdruck.", "result": "Die Medikationsumstellung wurde durchgeführt, um den Bluthochdruck des Patienten besser zu kontrollieren. Überwachung der Blutdruckwerte und Anpassungen bei Bedarf werden fortgesetzt."}
|
||||||
|
{"category": "Untersuchungen", "description": "EKG zur Überprüfung der Herzfunktion und Rhythmusstörungen.", "result": "Das EKG wurde durchgeführt, um die Herzfunktion und mögliche Rhythmusstörungen zu überprüfen. Die Ergebnisse werden mit dem Kardiologen besprochen, um weitere Schritte zu planen."}
|
||||||
|
{"category": "Entlassung", "description": "Patient wurde nach erfolgreicher Behandlung und Stabilisierung entlassen.", "result": "Nach erfolgreicher Behandlung und Stabilisierung des Gesundheitszustands konnte der Patient in gutem Zustand entlassen werden. Empfehlungen für die Nachsorge wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung zur psychologischen Beratung aufgrund von emotionalen Belastungen.", "result": "Nach eingehender Besprechung der emotionalen Belastungen wurde eine psychologische Beratung empfohlen, um den Patienten bei der Bewältigung seiner psychischen Herausforderungen zu unterstützen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Patient zeigt Anzeichen von Gelenksteifigkeit und Schmerzen.", "result": "Die klinische Visite konzentrierte sich auf die Bewertung der Gelenkgesundheit. Weitere rheumatologische Untersuchungen sind geplant, um die Ursache der Gelenksteifigkeit zu identifizieren."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutentnahme zur Überprüfung der Nierenfunktion.", "result": "Die Blutentnahme zur Überprüfung der Nierenfunktion wurde durchgeführt. Die Ergebnisse werden mit dem Nephrologen besprochen, um die geeignete Therapie festzulegen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Änderung der Medikation aufgrund von unzureichender Wirkung.", "result": "Die Medikationsumstellung wurde vorgenommen, da die bisherige Medikation nicht die gewünschte Wirkung zeigte. Der Patient wird engmaschig überwacht, um die Effektivität der neuen Medikamente zu beurteilen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Röntgenaufnahme zur Diagnose von Atemwegsproblemen.", "result": "Die Röntgenaufnahme der Atemwege wurde durchgeführt, um mögliche Ursachen von Atemwegsproblemen zu identifizieren. Die Ergebnisse werden mit dem Pneumologen besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Patient wurde nach erfolgreicher Operation und Rehabilitationsphase entlassen.", "result": "Nach einer erfolgreichen Operation und abschließender Rehabilitationsphase wurde der Patient in gutem Zustand entlassen. Empfehlungen für die weitere Genesung zu Hause wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung zur Ergotherapie aufgrund von motorischen Einschränkungen.", "result": "Nach einer eingehenden Untersuchung wurde eine Ergotherapie empfohlen, um die motorischen Einschränkungen des Patienten zu verbessern und die Lebensqualität zu steigern."}
|
||||||
|
{"category": "Klinische Visite", "description": "Besprechung der Fortschritte in der Schmerztherapie.", "result": "Die klinische Visite konzentrierte sich auf die Fortschritte in der Schmerztherapie. Anpassungen der Medikation und alternative Therapieansätze wurden erörtert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutuntersuchung zur Überprüfung der Schilddrüsenfunktion.", "result": "Die Blutuntersuchung zur Überprüfung der Schilddrüsenfunktion wurde durchgeführt. Die Ergebnisse werden mit dem Endokrinologen besprochen, um die optimale Behandlung festzulegen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Wechsel zu einem neuen Antidepressivum aufgrund von Unverträglichkeiten.", "result": "Die Medikationsumstellung auf ein neues Antidepressivum wurde durchgeführt, um Unverträglichkeiten zu minimieren. Der Patient wird auf mögliche Verbesserungen und Nebenwirkungen überwacht."}
|
||||||
|
{"category": "Untersuchungen", "description": "CT-Untersuchung zur Abklärung von neurologischen Symptomen.", "result": "Die CT-Untersuchung des Gehirns wurde durchgeführt, um mögliche neurologische Ursachen der Symptome zu identifizieren. Die Ergebnisse werden mit dem Neurologen besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Patient konnte nach intensiver Therapie entlassen werden.", "result": "Nach einer intensiven Therapie und Überwachung konnte der Patient in einem stabilen Zustand entlassen werden. Die weitere Genesung wird ambulant fortgesetzt."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung zur Schlafanalyse aufgrund von Schlafstörungen.", "result": "Nach eingehender Besprechung der Schlafprobleme wurde eine Schlafanalyse empfohlen, um genaue Informationen über mögliche Schlafstörungen zu erhalten."}
|
||||||
|
{"category": "Klinische Visite", "description": "Patient berichtet über Magen-Darm-Beschwerden und Verdauungsprobleme.", "result": "Die klinische Visite konzentrierte sich auf die Bewertung von Magen-Darm-Beschwerden. Weitere gastroenterologische Untersuchungen sind geplant, um die Ursache zu klären."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutentnahme zur Überprüfung der Eisenspeicher und Blutbild.", "result": "Die Blutentnahme zur Überprüfung der Eisenspeicher und des Blutbilds wurde durchgeführt. Die Ergebnisse werden mit dem Hämatologen besprochen, um eine geeignete Therapie festzulegen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Medikation aufgrund von allergischen Reaktionen.", "result": "Die Medikationsumstellung wurde aufgrund von allergischen Reaktionen erfolgreich durchgeführt. Der Patient wird auf weitere mögliche allergische Reaktionen überwacht."}
|
||||||
|
{"category": "Untersuchungen", "description": "Doppler-Sonographie zur Überprüfung der Durchblutung in den Beinen.", "result": "Die Doppler-Sonographie wurde durchgeführt, um die Durchblutung in den Beinen zu überprüfen. Die Ergebnisse werden mit dem Angiologen besprochen, um gegebenenfalls weitere Maßnahmen einzuleiten."}
|
||||||
|
{"category": "Entlassung", "description": "Patient konnte nach erfolgreicher Therapie entlassen werden.", "result": "Nach erfolgreicher Therapie und Überwachung konnte der Patient in gutem Zustand entlassen werden. Empfehlungen für die Nachsorge und Verhaltensmaßnahmen wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung zur Physiotherapie aufgrund von Rückenschmerzen.", "result": "Nach der Untersuchung wurde eine Physiotherapie empfohlen, um die Rückenschmerzen zu lindern und die muskuläre Unterstützung zu stärken."}
|
||||||
|
{"category": "Klinische Visite", "description": "Besprechung der aktuellen Schmerzintensität und Schmerzmanagement.", "result": "Die klinische Visite konzentrierte sich auf die Besprechung der aktuellen Schmerzintensität und die Anpassung des Schmerzmanagements. Alternative Therapieansätze wurden erörtert."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Ultraschalluntersuchung durchgeführt, um die Organe im Bauchraum zu überprüfen.", "result": "Die Ultraschalluntersuchung zeigte normale Befunde der Bauchorgane. Es wurden keine Anomalien festgestellt."}
|
||||||
|
{"category": "Laborabnahme", "description": "Zur Überprüfung der Nierenfunktion wurde dem Patienten Blut abgenommen.", "result": "Die Laborergebnisse deuten auf eine normale Nierenfunktion hin. Der Patient wird über mögliche Maßnahmen zur Verbesserung der Nierenfunktion beraten."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine routinemäßige klinische Visite wurde durchgeführt, um den Gesundheitszustand des Patienten zu überwachen.", "result": "Bei der klinischen Visite wurden keine besorgniserregenden Symptome festgestellt. Der Patient ist in einem stabilen Zustand."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung und Stabilisierung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung aller vitalen Parameter wurde der Patient in einem verbesserten Zustand entlassen. Er erhält Empfehlungen für die weitere Nachsorge."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um mögliche Nebenwirkungen zu minimieren.", "result": "Die Medikationsumstellung wurde vorgenommen, und der Patient wird sorgfältig überwacht, um eventuelle unerwünschte Reaktionen zu identifizieren."}
|
||||||
|
{"category": "Sonstiges", "description": "Es wurde eine Beratung zur Lebensstiländerung durchgeführt, um die Gesundheit zu verbessern.", "result": "Der Patient erhielt Ratschläge zur Änderung seines Lebensstils, um die Gesundheit zu fördern. Es werden regelmäßige Follow-up-Termine vereinbart."}
|
||||||
|
{"category": "Laborabnahme", "description": "Eine Blutuntersuchung wurde durchgeführt, um die Schilddrüsenfunktion zu überprüfen.", "result": "Die Blutwerte deuten auf eine normale Schilddrüsenfunktion hin. Weitere Untersuchungen werden bei Bedarf empfohlen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde aufgrund von Beschwerden im Magen-Darm-Bereich untersucht.", "result": "Bei der klinischen Visite wurden keine akuten Probleme festgestellt. Der Patient wird aufgefordert, bei anhaltenden Beschwerden erneut Kontakt aufzunehmen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Röntgenaufnahme angefertigt, um mögliche Frakturen auszuschließen.", "result": "Die Röntgenaufnahme zeigt keine Anzeichen von Frakturen. Der Patient wird über weitere Schritte zur Schmerzlinderung informiert."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach Abschluss der Rehabilitationsmaßnahmen entlassen.", "result": "Nach erfolgreicher Rehabilitation und Überprüfung der Fortschritte wurde der Patient in einem verbesserten Zustand entlassen. Es wurden Empfehlungen für die Fortsetzung der Übungen gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Es wurde eine genetische Untersuchung angeordnet, um mögliche genetische Risikofaktoren zu identifizieren.", "result": "Die genetische Untersuchung wurde in die Wege geleitet, um potenzielle genetische Risikofaktoren zu identifizieren. Die Ergebnisse werden mit dem Patienten besprochen, um entsprechende Maßnahmen zu ergreifen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Dosierung eines Medikaments wurde angepasst, um die Wirksamkeit zu erhöhen.", "result": "Die Medikationsanpassung wurde vorgenommen, und der Patient wird auf mögliche Veränderungen in den Symptomen hinsichtlich der Medikationsänderung überwacht."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung durchgeführt, um den Eisengehalt im Blut zu überprüfen.", "result": "Die Ergebnisse der Blutuntersuchung deuten auf einen normalen Eisengehalt hin. Empfehlungen zur Verbesserung der Eisenversorgung werden dem Patienten mitgeteilt."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient stellte sich aufgrund von Kopfschmerzen und Schwindel vor.", "result": "Die klinische Visite ergab keine akuten neurologischen Auffälligkeiten. Der Patient wird aufgefordert, bei weiteren Beschwerden sofort Kontakt aufzunehmen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine MRT-Untersuchung des Gehirns durchgeführt, um mögliche Ursachen von neurologischen Symptomen zu identifizieren.", "result": "Die MRT-Untersuchung zeigte keine strukturellen Anomalien im Gehirn. Weitere Untersuchungen werden zur genaueren Abklärung der Beschwerden empfohlen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung und Stabilisierung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung aller vitalen Parameter wurde der Patient in einem verbesserten Zustand entlassen. Er erhält Empfehlungen für die Fortsetzung der Rehabilitation zu Hause."}
|
||||||
|
{"category": "Sonstiges", "description": "Es wurde eine Beratung zur Stressbewältigung und Entspannungstechniken durchgeführt.", "result": "Der Patient erhielt Tipps zur Stressbewältigung und Entspannungstechniken. Regelmäßige Übungen werden empfohlen, um das Wohlbefinden zu steigern."}
|
||||||
|
{"category": "Laborabnahme", "description": "Eine Blutprobe wurde genommen, um die Leberfunktion zu überprüfen.", "result": "Die Blutuntersuchung ergab normale Leberwerte. Der Patient wird über gesunde Ernährungsgewohnheiten informiert, um die Lebergesundheit zu unterstützen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde zur routinemäßigen Kontrolle der Herzfunktion untersucht.", "result": "Die klinische Visite zeigte keine Anzeichen von Herzproblemen. Der Patient wird ermutigt, regelmäßige kardiovaskuläre Übungen durchzuführen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Endoskopie durchgeführt, um mögliche Magen-Darm-Erkrankungen auszuschließen.", "result": "Die Endoskopie zeigte keine Anomalien im Magen-Darm-Trakt. Der Patient wird über mögliche Ursachen der Beschwerden aufgeklärt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um Nebenwirkungen zu minimieren.", "result": "Die Medikationsanpassung wurde durchgeführt, und der Patient wird auf mögliche Veränderungen in den Symptomen hinsichtlich der Medikationsänderung überwacht."}
|
||||||
|
{"category": "Sonstiges", "description": "Es wurde eine Ernährungsberatung durchgeführt, um den Cholesterinspiegel zu kontrollieren.", "result": "Der Patient erhielt Ratschläge zur cholesterinbewussten Ernährung. Regelmäßige Kontrollen werden empfohlen, um den Cholesterinspiegel im Auge zu behalten."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung durchgeführt, um den Vitamin-D-Spiegel zu überprüfen.", "result": "Die Blutwerte zeigen einen niedrigen Vitamin-D-Spiegel. Der Patient wird über Maßnahmen zur Verbesserung der Vitamin-D-Versorgung informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde aufgrund von Muskelschmerzen und -schwäche untersucht.", "result": "Die klinische Untersuchung ergab keine akuten muskuloskelettalen Probleme. Der Patient wird zu physiotherapeutischen Übungen zur Stärkung der Muskulatur angeleitet."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Spirometrie durchgeführt, um die Lungenfunktion zu testen.", "result": "Die Spirometrie zeigt normale Ergebnisse der Lungenfunktion. Der Patient wird ermutigt, regelmäßig Atemübungen durchzuführen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung und Stabilisierung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung aller vitalen Parameter wurde der Patient in einem stabilen Zustand entlassen. Er erhält Empfehlungen für die Fortsetzung der medikamentösen Therapie."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um die Symptome besser zu kontrollieren.", "result": "Die Medikationsanpassung wurde durchgeführt, und der Patient wird auf mögliche Verbesserungen der Symptome überwacht."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung durchgeführt, um die Schilddrüsenwerte zu überprüfen.", "result": "Die Blutwerte deuten auf eine normale Schilddrüsenfunktion hin. Der Patient wird über die Bedeutung der Schilddrüsenwerte informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient stellte sich aufgrund von Schlafproblemen und Erschöpfung vor.", "result": "Bei der klinischen Visite wurden keine akuten körperlichen Ursachen für die Schlafprobleme festgestellt. Der Patient wird zu Schlafhygiene-Maßnahmen beraten."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Colonoskopie durchgeführt, um mögliche Darmprobleme auszuschließen.", "result": "Die Colonoskopie zeigte keine Anzeichen von Darmproblemen. Der Patient wird über gesunde Darmgewohnheiten aufgeklärt."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung und Stabilisierung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung aller vitalen Parameter wurde der Patient in einem verbesserten Zustand entlassen. Er erhält Empfehlungen für die Fortsetzung der physiotherapeutischen Übungen zu Hause."}
|
||||||
|
{"category": "Sonstiges", "description": "Es wurde eine psychologische Beratung durchgeführt, um den Umgang mit Stress zu verbessern.", "result": "Der Patient erhielt psychologische Unterstützung zur Stressbewältigung. Regelmäßige Sitzungen werden empfohlen, um den emotionalen Wohlbefinden zu fördern."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Dosierung eines blutdrucksenkenden Medikaments wurde angepasst.", "result": "Die Medikationsanpassung wurde durchgeführt, und der Patient wird auf mögliche Veränderungen im Blutdruck überwacht."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung durchgeführt, um die Blutzuckerwerte zu überprüfen.", "result": "Die Blutwerte deuten auf einen erhöhten Blutzuckerspiegel hin. Der Patient wird über Maßnahmen zur Blutzuckerregulation informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde zur Nachkontrolle nach einer Operation untersucht.", "result": "Bei der klinischen Visite wurden keine Komplikationen nach der Operation festgestellt. Der Heilungsprozess verläuft zufriedenstellend."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine DEXA-Untersuchung durchgeführt, um die Knochendichte zu messen.", "result": "Die DEXA-Untersuchung ergab normale Knochendichtewerte. Der Patient wird über Maßnahmen zur Erhaltung der Knochengesundheit informiert."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung und Stabilisierung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung aller vitalen Parameter wurde der Patient in einem verbesserten Zustand entlassen. Er erhält Empfehlungen für die Fortsetzung der medikamentösen Therapie und regelmäßige Kontrollen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung durchgeführt, um die Nierenfunktion zu überprüfen.", "result": "Die Laborergebnisse deuten auf normale Nierenfunktion hin. Der Patient wird über gesunde Ernährungsgewohnheiten informiert, um die Nierenfunktion zu unterstützen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um Nebenwirkungen zu minimieren.", "result": "Die Medikationsumstellung erfolgte aufgrund von auftretenden Nebenwirkungen. Der Patient wird aufmerksam über mögliche Reaktionen geschult und weiterhin überwacht."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine ausführliche klinische Untersuchung wurde durchgeführt.", "result": "Die klinische Visite ergab keine neuen Befunde. Der Patient ist symptomfrei und zeigt eine positive Reaktion auf die laufende Therapie."}
|
||||||
|
{"category": "Untersuchungen", "description": "Eine MRT-Untersuchung wurde angeordnet, um die genaue Lokalisation eines Problems zu bestimmen.", "result": "Das MRT lieferte detaillierte Bilder und ermöglichte eine präzise Diagnose. Die weiteren Behandlungsschritte werden entsprechend den Ergebnissen geplant."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung entlassen.", "result": "Der Patient wurde in einem stabilen Zustand entlassen. Die Entlassungspapiere und Anweisungen für die Nachsorge wurden ausgehändigt."}
|
||||||
|
{"category": "Sonstiges", "description": "Zusätzliche Tests wurden angeordnet, um unklare Symptome zu klären.", "result": "Weitere diagnostische Tests wurden in Auftrag gegeben, um die Ursache der unklaren Symptome zu ermitteln. Der Patient wird über den Fortschritt informiert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung zur Überprüfung der Schilddrüsenwerte durchgeführt.", "result": "Die Blutprobe wurde genommen, und die Ergebnisse deuten auf normale Schilddrüsenfunktion hin. Der Patient wird über mögliche Ursachen von Schilddrüsenproblemen informiert."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde optimiert, um die Wirksamkeit zu steigern.", "result": "Die Anpassung der Medikation wurde erfolgreich umgesetzt. Der Patient wird engmaschig überwacht, um auf mögliche Verbesserungen oder Nebenwirkungen zu reagieren."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine regelmäßige klinische Untersuchung wurde durchgeführt.", "result": "Bei der klinischen Visite wurden vitale Parameter überprüft, und der Patient zeigte eine stabile Verfassung. Es wurden keine neuen gesundheitlichen Probleme festgestellt."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Ultraschalluntersuchung zur Abklärung von Bauchbeschwerden angeordnet.", "result": "Die Ultraschalluntersuchung lieferte Hinweise auf leichte Veränderungen im Bauchraum. Der behandelnde Arzt wird weitere Schritte zur Diagnose planen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Genesung aus der Klinik entlassen.", "result": "Der Patient hat die Therapie erfolgreich abgeschlossen und wurde in einem guten Gesundheitszustand entlassen. Empfehlungen für die Nachsorge wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind zusätzliche Tests erforderlich, um eine genaue Diagnose zu stellen.", "result": "Zusätzliche diagnostische Tests wurden angeordnet, um die genaue Ursache der Beschwerden zu identifizieren. Der Patient wird über die geplanten Untersuchungen informiert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung zur Überprüfung der Leberfunktion durchgeführt.", "result": "Die Blutprobe wurde genommen, und die Ergebnisse deuten auf normale Leberfunktion hin. Der Patient wird über gesunde Lebensgewohnheiten aufgeklärt, um die Lebergesundheit zu unterstützen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um auf neue gesundheitliche Entwicklungen zu reagieren.", "result": "Die Anpassung der Medikation erfolgte aufgrund neuer Befunde. Der Patient wird über die Gründe und mögliche Auswirkungen informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde klinisch untersucht, um die Fortschritte der Therapie zu überprüfen.", "result": "Bei der klinischen Visite wurden positive Fortschritte festgestellt. Der Patient zeigt eine verbesserte körperliche Verfassung, und die Therapie wird entsprechend angepasst."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Röntgenuntersuchung zur Abklärung von Atembeschwerden angeordnet.", "result": "Die Röntgenuntersuchung ergab keine strukturellen Auffälligkeiten. Der behandelnde Arzt wird weitere Aspekte der Atemprobleme untersuchen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Rehabilitation aus der stationären Behandlung entlassen.", "result": "Der Patient hat die Rehabilitation erfolgreich abgeschlossen und wurde in einem stabilen Zustand entlassen. Empfehlungen für die Fortsetzung der Rehabilitationsmaßnahmen wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind weitere diagnostische Maßnahmen erforderlich, um die Symptome zu klären.", "result": "Weitere diagnostische Maßnahmen wurden eingeleitet, um die Ursache der Symptome zu identifizieren. Der Patient wird über den geplanten Untersuchungsverlauf informiert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung zur Überprüfung der Blutzuckerwerte durchgeführt.", "result": "Die Blutprobe wurde entnommen, und die Ergebnisse deuten auf einen normalen Blutzuckerspiegel hin. Der Patient wird über gesunde Ernährungsgewohnheiten und regelmäßige Bewegung aufgeklärt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um mögliche Wechselwirkungen zu vermeiden.", "result": "Die Anpassung der Medikation wurde aufgrund von möglichen Wechselwirkungen erfolgreich umgesetzt. Der Patient wird über die Bedeutung der Einhaltung der vorgeschriebenen Einnahmezeiten informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine routinemäßige klinische Untersuchung wurde durchgeführt.", "result": "Bei der klinischen Visite wurden keine neuen gesundheitlichen Probleme festgestellt. Der Patient zeigt eine stabile Verfassung und setzt die empfohlene Therapie fort."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Endoskopie zur genaueren Untersuchung des Magen-Darm-Trakts angeordnet.", "result": "Die Endoskopie lieferte präzise Bilder des Magen-Darm-Trakts. Der behandelnde Arzt wird die Ergebnisse auswerten und die weitere Vorgehensweise mit dem Patienten besprechen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Operation aus dem Krankenhaus entlassen.", "result": "Nach einer erfolgreichen Operation wurde der Patient in einem stabilen Zustand entlassen. Empfehlungen für die postoperative Pflege wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind zusätzliche Tests erforderlich, um eine genaue Diagnose zu stellen.", "result": "Zusätzliche diagnostische Tests wurden angeordnet, um die genaue Ursache der Beschwerden zu ermitteln. Der Patient wird über den geplanten Untersuchungsverlauf informiert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung zur Überprüfung der Eisenwerte durchgeführt.", "result": "Die Blutprobe wurde entnommen, und die Ergebnisse deuten auf normale Eisenwerte hin. Der Patient wird über eisenreiche Ernährung informiert, um einen optimalen Eisenspiegel aufrechtzuerhalten."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um auf aktuelle Laborergebnisse zu reagieren.", "result": "Die Anpassung der Medikation erfolgte basierend auf aktuellen Laborergebnissen. Der Patient wird über die Bedeutung der regelmäßigen Kontrolluntersuchungen informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine umfassende klinische Untersuchung wurde durchgeführt.", "result": "Die klinische Visite ergab keine neuen gesundheitlichen Probleme. Der Patient zeigt eine positive Reaktion auf die Therapie und wird weiterhin engmaschig überwacht."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine CT-Untersuchung zur Abklärung von Kopfschmerzen angeordnet.", "result": "Die CT-Untersuchung des Kopfes zeigte keine strukturellen Auffälligkeiten. Der behandelnde Arzt wird weitere Aspekte der Kopfschmerzen untersuchen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung aus der Klinik entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung der vitalen Parameter wurde der Patient in einem stabilen Zustand entlassen. Empfehlungen für die Nachsorge wurden gegeben."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind weitere diagnostische Maßnahmen erforderlich, um die Ursache der Beschwerden zu klären.", "result": "Weitere diagnostische Maßnahmen wurden eingeleitet, um die genaue Ursache der Beschwerden zu identifizieren. Der Patient wird über den geplanten Untersuchungsverlauf informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde auf mögliche Infektionen untersucht, um frühzeitig Maßnahmen ergreifen zu können.", "result": "Bei der klinischen Visite wurden Symptome einer Infektion überprüft. Der Patient zeigt keine Anzeichen einer akuten Infektion. Weiterhin werden regelmäßige Kontrollen durchgeführt, um eventuelle Veränderungen frühzeitig zu erkennen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Eine Anpassung der Medikation wurde vorgenommen, um Nebenwirkungen zu minimieren.", "result": "Die Medikationsumstellung erfolgte aufgrund von bisherigen Nebenwirkungen. Der Patient wird über mögliche Veränderungen in den kommenden Tagen informiert. Bei auftretenden Beschwerden sollte umgehend Kontakt aufgenommen werden."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurden verschiedene Blutwerte überprüft, um den Gesundheitszustand zu bewerten.", "result": "Die Blutuntersuchung ergab normale Werte in den meisten Parametern. Einige Werte werden weiter überwacht. Der Patient wird über die Ergebnisse informiert und weitere Schritte werden besprochen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es ist eine Ultraschalluntersuchung des Bauchraums geplant.", "result": "Die Ultraschalluntersuchung wurde durchgeführt, um den Zustand der inneren Organe zu beurteilen. Bisher wurden keine Auffälligkeiten festgestellt. Die genauen Ergebnisse werden mit dem Patienten bei der nächsten Visite besprochen."}
|
||||||
|
{"category": "Sonstiges", "description": "Der Patient benötigt spezielle physiotherapeutische Maßnahmen.", "result": "Physiotherapie wurde verschrieben, um die Genesung zu unterstützen. Der Therapieplan wird individuell angepasst, um auf die Bedürfnisse des Patienten einzugehen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Es wurden neurologische Tests durchgeführt, um mögliche Veränderungen festzustellen.", "result": "Die neurologische Untersuchung zeigte keine Anzeichen von neurologischen Erkrankungen. Der Patient ist weiterhin stabil. Die Behandlung wird entsprechend fortgesetzt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Änderungen in der Medikation wurden vorgenommen, um die Therapieeffizienz zu steigern.", "result": "Die Medikationsanpassung erfolgte nach eingehender Prüfung. Der Patient wird auf mögliche Nebenwirkungen aufmerksam gemacht. Regelmäßige Kontrollen sind wichtig, um die Wirkung zu überwachen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutproben wurden für eine umfassende Analyse entnommen.", "result": "Die Blutproben wurden dem Labor übergeben, um verschiedene Parameter zu überprüfen. Die Ergebnisse werden in den nächsten Tagen erwartet."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es ist eine Magnetresonanztomographie (MRT) des Kopfes geplant.", "result": "Die MRT-Untersuchung wurde durchgeführt, um detaillierte Bilder des Gehirns zu erhalten. Die Aufnahmen zeigen keine strukturellen Auffälligkeiten. Die Ergebnisse werden mit dem Patienten besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung der vitalen Parameter wurde der Patient in einem stabilen Zustand entlassen. Er erhielt Empfehlungen für die Nachsorge und mögliche weiterführende Maßnahmen."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind weitere bildgebende Untersuchungen erforderlich, um die Diagnose zu präzisieren.", "result": "Zusätzliche bildgebende Untersuchungen wurden angeordnet, um detaillierte Informationen über den Zustand des betroffenen Bereichs zu erhalten. Die Ergebnisse werden mit dem Patienten ausführlich besprochen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurden Blutproben entnommen, um die Wirksamkeit der aktuellen Therapie zu überprüfen.", "result": "Die Blutabnahme erfolgte zur Bestimmung von Medikamentenspiegeln und anderen relevanten Parametern. Die Ergebnisse werden genutzt, um die Therapie gegebenenfalls anzupassen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine umfassende körperliche Untersuchung wurde durchgeführt.", "result": "Bei der klinischen Visite wurden alle relevanten Körpersysteme überprüft. Es wurden keine Anomalien festgestellt. Der Patient befindet sich in einem guten Allgemeinzustand."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassungen in der Medikation wurden vorgenommen, um die Symptome zu lindern.", "result": "Die Medikationsumstellung erfolgte, um die Behandlungseffizienz zu verbessern. Der Patient wird auf mögliche Nebenwirkungen hingewiesen und sollte Veränderungen im Befinden mitteilen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es sind weitere diagnostische Tests erforderlich, um die Ursache der Beschwerden zu identifizieren.", "result": "Zusätzliche Untersuchungen wurden angeordnet, um detaillierte Informationen über den Gesundheitszustand des Patienten zu erhalten. Die Ergebnisse werden zur weiteren Behandlungsplanung genutzt."}
|
||||||
|
{"category": "Entlassung", "description": "Nach erfolgreicher Behandlung wurde der Patient entlassen.", "result": "Der Patient wurde in einem stabilen Zustand entlassen. Er erhielt schriftliche Empfehlungen für die poststationäre Betreuung und wird regelmäßig nachkontrolliert."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind genetische Tests geplant, um mögliche genetische Ursachen auszuschließen.", "result": "Genetische Tests wurden empfohlen, um mögliche genetische Ursachen von Beschwerden zu identifizieren. Der Patient wird über den Ablauf der Tests informiert und um Zustimmung gebeten."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde auf neurologische Symptome untersucht.", "result": "Die klinische Visite konzentrierte sich auf die Überprüfung von neurologischen Funktionen. Bisher wurden keine Auffälligkeiten festgestellt. Der Patient wird weiterhin sorgfältig überwacht."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassungen in der Medikation wurden vorgenommen, um die Wirksamkeit zu steigern.", "result": "Die Medikationsumstellung erfolgte nach sorgfältiger Abwägung. Der Patient wird über mögliche Veränderungen in den nächsten Tagen informiert. Bei auftretenden Problemen sollte sofort Kontakt aufgenommen werden."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurden Blutproben entnommen, um die aktuellen Blutwerte zu überprüfen.", "result": "Die Blutuntersuchung ergab normale Werte in den meisten Parametern. Einige Werte werden weiter überwacht. Der Patient wird über die Ergebnisse informiert und weitere Schritte werden besprochen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Routinemäßige klinische Untersuchung zur Überwachung des Patientenzustands.", "result": "Vitalparameter wurden überprüft, und es wurden keine signifikanten Veränderungen festgestellt. Der Patient zeigt eine positive Resonanz auf die laufende Behandlung."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Medikation aufgrund von Nebenwirkungen.", "result": "Die Medikamentendosis wurde angepasst, um unerwünschte Nebenwirkungen zu minimieren. Der Patient wird weiterhin überwacht, um die Wirksamkeit der Änderungen zu bewerten."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutentnahme zur Überprüfung der Leberfunktion.", "result": "Die Blutprobe wurde entnommen, um Leberenzyme zu überprüfen. Die Ergebnisse werden in den nächsten Tagen erwartet."}
|
||||||
|
{"category": "Untersuchungen", "description": "Empfohlene bildgebende Untersuchung zur genaueren Diagnose.", "result": "Die bildgebende Untersuchung wurde durchgeführt, um detaillierte Informationen über den Zustand des betroffenen Organs zu erhalten. Die Ergebnisse werden mit dem Patienten besprochen."}
|
||||||
|
{"category": "Sonstiges", "description": "Besprechung von Lebensstiländerungen zur Verbesserung der Gesundheit.", "result": "Der Patient wurde über notwendige Lebensstiländerungen informiert, um die Gesundheit zu fördern. Ein individueller Plan wurde erstellt und wird aktiv umgesetzt."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überprüfung der postoperativen Genesung.", "result": "Nach einer kürzlich durchgeführten Operation wurde der Patient klinisch untersucht. Der Heilungsprozess verläuft zufriedenstellend, und es wurden keine Komplikationen festgestellt."}
|
||||||
|
{"category": "Entlassung", "description": "Abschluss der stationären Behandlung und Entlassungsplanung.", "result": "Der Patient wurde nach erfolgreicher Behandlung entlassen. Ein umfassender Entlassungsplan wurde erstellt, der die notwendige Nachsorge und Medikation umfasst."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutentnahme zur Überprüfung des Cholesterinspiegels.", "result": "Die Blutprobe wurde entnommen, um den Cholesterinspiegel zu überprüfen. Die Ergebnisse werden in Kürze verfügbar sein."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Medikation aufgrund von Therapieerfolgen.", "result": "Die Medikation wurde angepasst, da positive Fortschritte in der Behandlung erkennbar sind. Der Patient zeigt eine verbesserte klinische Verfassung."}
|
||||||
|
{"category": "Sonstiges", "description": "Beratung zu gesundheitsfördernden Maßnahmen.", "result": "Der Patient erhielt eine umfassende Beratung zu gesundheitsfördernden Maßnahmen, einschließlich Ernährung, Bewegung und Stressmanagement."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überprüfung von Symptomen und Anpassung der Therapie.", "result": "Bei der klinischen Visite wurden aktuelle Symptome besprochen, und die Therapie wurde entsprechend angepasst. Der Patient wird weiterhin überwacht."}
|
||||||
|
{"category": "Untersuchungen", "description": "Durchführung einer speziellen diagnostischen Untersuchung.", "result": "Die spezielle diagnostische Untersuchung wurde erfolgreich durchgeführt, um genauere Informationen über den Zustand des Patienten zu erhalten. Die Ergebnisse werden analysiert."}
|
||||||
|
{"category": "Entlassung", "description": "Vorbereitung auf die Entlassung und Abschlussgespräch.", "result": "Der Patient wurde auf die Entlassung vorbereitet, und ein Abschlussgespräch wurde geführt. Der Patient wurde über die wichtigsten Nachsorgemaßnahmen informiert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutentnahme zur Überprüfung der Schilddrüsenfunktion.", "result": "Die Blutprobe wurde entnommen, um die Schilddrüsenfunktion zu überprüfen. Die Ergebnisse werden in den nächsten Tagen erwartet."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Medikation aufgrund von Unverträglichkeiten.", "result": "Die Medikation wurde angepasst, um unerwünschte Nebenwirkungen zu minimieren. Der Patient wird auf mögliche allergische Reaktionen überwacht."}
|
||||||
|
{"category": "Klinische Visite", "description": "Routinemäßige klinische Untersuchung zur Überwachung des Therapieverlaufs.", "result": "Vitalparameter und Symptome wurden überprüft, und der Patient zeigt eine positive Reaktion auf die laufende Therapie."}
|
||||||
|
{"category": "Untersuchungen", "description": "Empfohlene gastrointestinale Untersuchung zur weiteren Diagnose.", "result": "Die gastrointestinale Untersuchung wurde durchgeführt, um genaue Informationen über den Zustand des Verdauungssystems zu erhalten. Die Ergebnisse werden mit dem Patienten besprochen."}
|
||||||
|
{"category": "Sonstiges", "description": "Beratung zur Krankheitsprävention und Gesundheitsförderung.", "result": "Der Patient erhielt eine umfassende Beratung zur Krankheitsprävention und Förderung der allgemeinen Gesundheit. Maßnahmen zur Risikoreduktion wurden besprochen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überprüfung der postoperativen Wundheilung.", "result": "Nach einer kürzlich durchgeführten Operation wurde die Wundheilung überprüft. Die Wunde verheilt zufriedenstellend, und es wurden keine Anzeichen von Infektionen festgestellt."}
|
||||||
|
{"category": "Entlassung", "description": "Abschluss der stationären Behandlung und Entlassungsplanung.", "result": "Der Patient wurde nach erfolgreicher Behandlung entlassen. Ein detaillierter Entlassungsplan wurde erstellt, der die Nachsorge und Medikation umfasst."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutentnahme zur Überprüfung der Nierenfunktion.", "result": "Die Blutprobe wurde entnommen, um die Nierenfunktion zu überprüfen. Die Ergebnisse werden in Kürze verfügbar sein."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Medikation aufgrund von Therapieerfolgen.", "result": "Die Medikation wurde angepasst, da positive Fortschritte in der Behandlung erkennbar sind. Der Patient zeigt eine verbesserte klinische Verfassung."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurden Änderungen in der Medikation vorgenommen, um die Therapie anzupassen.", "result": "Die Medikamentendosis wurde angepasst, um eine optimale Wirkung zu erzielen. Der Patient wird auf mögliche Nebenwirkungen überwacht."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine umfassende klinische Untersuchung wurde durchgeführt, um den Gesundheitszustand zu überprüfen.", "result": "Während der klinischen Visite wurden alle relevanten Gesundheitsparameter überprüft. Der Patient zeigt positive Fortschritte und es wurden keine Anzeichen von Komplikationen festgestellt."}
|
||||||
|
{"category": "Untersuchungen", "description": "Eine Blutuntersuchung wurde angeordnet, um spezifische Laborwerte zu überprüfen.", "result": "Die Blutuntersuchung wurde durchgeführt, um spezifische Laborwerte zu überprüfen. Die Ergebnisse werden dem behandelnden Arzt für weitere Bewertungen vorgelegt."}
|
||||||
|
{"category": "Sonstiges", "description": "Zusätzliche diagnostische Maßnahmen sind erforderlich, um eine genaue Diagnose zu stellen.", "result": "Aufgrund unklarer Symptome wurden zusätzliche diagnostische Maßnahmen eingeleitet, um die genaue Ursache zu identifizieren. Der Patient wird über den weiteren Ablauf informiert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Eine routinemäßige Blutabnahme wurde durchgeführt, um die allgemeinen Gesundheitswerte zu überprüfen.", "result": "Die routinemäßige Blutabnahme ergab normale Werte, die auf eine stabile Gesundheit hinweisen. Der Patient wird weiterhin überwacht."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung aus der Klinik entlassen.", "result": "Nach Abschluss der Behandlung wurde der Patient in einem guten Zustand entlassen. Er erhielt Anweisungen für die Nachsorge und die Einnahme von Medikamenten."}
|
||||||
|
{"category": "Klinische Visite", "description": "Die regelmäßige klinische Visite wurde durchgeführt, um den Therapieverlauf zu bewerten.", "result": "Bei der klinischen Visite wurden Fortschritte im Therapieverlauf festgestellt. Der Patient zeigt eine positive Resonanz auf die aktuelle Behandlung."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurden Anpassungen in der Medikation vorgenommen, um Nebenwirkungen zu minimieren.", "result": "Die Medikamentendosis wurde angepasst, um mögliche Nebenwirkungen zu minimieren. Der Patient wird auf Veränderungen im Gesundheitszustand überwacht."}
|
||||||
|
{"category": "Sonstiges", "description": "Weitere diagnostische Tests wurden angeordnet, um spezifische Symptome zu klären.", "result": "Aufgrund von spezifischen Symptomen wurden zusätzliche diagnostische Tests angeordnet. Die Ergebnisse werden für eine genauere Diagnose ausgewertet."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine bildgebende Untersuchung durchgeführt, um innere Organe zu überprüfen.", "result": "Die bildgebende Untersuchung ergab keine Anomalien in den inneren Organen. Der behandelnde Arzt wird die Ergebnisse mit dem Patienten besprechen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutproben wurden genommen, um die Wirksamkeit der laufenden Behandlung zu überwachen.", "result": "Die Blutproben wurden genommen, um die Wirksamkeit der laufenden Behandlung zu überprüfen. Die Ergebnisse werden für die weitere Therapieplanung berücksichtigt."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Genesung aus der stationären Behandlung entlassen.", "result": "Der Patient hat sich vollständig erholt und wurde in einem stabilen Zustand entlassen. Die Einhaltung der empfohlenen Nachsorgemaßnahmen wird empfohlen."}
|
||||||
|
{"category": "Sonstiges", "description": "Weitere Spezialuntersuchungen wurden empfohlen, um bestimmte Gesundheitsfragen zu klären.", "result": "Aufgrund spezifischer Gesundheitsfragen wurden weitere Spezialuntersuchungen empfohlen. Der Patient wird über die Notwendigkeit und den Ablauf informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Die regelmäßige klinische Visite wurde durchgeführt, um den Therapieverlauf zu überwachen.", "result": "Bei der klinischen Visite wurden keine Auffälligkeiten festgestellt. Der Patient zeigt eine stabile Gesundheitslage und setzt die Therapie erfolgreich fort."}
|
||||||
|
{"category": "Untersuchungen", "description": "Eine Ultraschalluntersuchung wurde durchgeführt, um strukturelle Veränderungen zu erkennen.", "result": "Die Ultraschalluntersuchung zeigte keine strukturellen Veränderungen. Der Befund deutet auf eine normale Organstruktur hin."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutproben wurden entnommen, um spezifische Werte im Zusammenhang mit der Erkrankung zu überprüfen.", "result": "Die Blutproben wurden entnommen und zur Analyse geschickt. Die Ergebnisse werden für eine individualisierte Behandlungsplanung berücksichtigt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurde eine Anpassung der Medikation vorgenommen, um die Symptomkontrolle zu verbessern.", "result": "Die Anpassung der Medikation führte zu einer verbesserten Symptomkontrolle. Der Patient berichtet über eine subjektive Besserung seines Befindens."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung und Stabilisierung aus der Klinik entlassen.", "result": "Nach erfolgreicher Behandlung und Stabilisierung wurde der Patient aus der Klinik entlassen. Er wurde über die Bedeutung der Nachsorge informiert."}
|
||||||
|
{"category": "Sonstiges", "description": "Weitere diagnostische Maßnahmen wurden eingeleitet, um unklare Beschwerden zu klären.", "result": "Zusätzliche diagnostische Maßnahmen wurden eingeleitet, um die Ursache der unklaren Beschwerden zu identifizieren. Der Patient wird über die geplanten Untersuchungen informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine umfassende klinische Untersuchung wurde durchgeführt, um den Therapieverlauf zu bewerten.", "result": "Die klinische Untersuchung ergab keine Auffälligkeiten. Der Patient zeigt positive Fortschritte im Therapieverlauf."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine spezielle Laboruntersuchung angeordnet, um auf bestimmte Krankheitsmarker zu testen.", "result": "Die spezielle Laboruntersuchung wurde durchgeführt, um auf bestimmte Krankheitsmarker zu testen. Die Ergebnisse werden zur weiteren Diagnose herangezogen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutproben wurden entnommen, um die Wirkung der aktuellen Therapie zu überwachen.", "result": "Die Blutproben wurden entnommen und werden auf die Wirkung der aktuellen Therapie überprüft. Anpassungen werden bei Bedarf vorgenommen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurden Änderungen in der Medikation vorgenommen, um Nebenwirkungen zu minimieren.", "result": "Die Medikamentendosis wurde angepasst, um mögliche Nebenwirkungen zu minimieren. Der Patient wird auf Veränderungen im Gesundheitszustand überwacht."}
|
||||||
|
{"category": "Sonstiges", "description": "Weitere diagnostische Tests wurden angeordnet, um spezifische Symptome zu klären.", "result": "Aufgrund von spezifischen Symptomen wurden weitere diagnostische Tests angeordnet. Die Ergebnisse werden für eine genauere Diagnose ausgewertet."}
|
||||||
|
{"category": "Klinische Visite", "description": "Die regelmäßige klinische Visite wurde durchgeführt, um den Therapieverlauf zu überwachen.", "result": "Bei der klinischen Visite wurden keine Auffälligkeiten festgestellt. Der Patient zeigt eine stabile Gesundheitslage und setzt die Therapie erfolgreich fort."}
|
||||||
|
{"category": "Untersuchungen", "description": "Eine Ultraschalluntersuchung wurde durchgeführt, um strukturelle Veränderungen zu erkennen.", "result": "Die Ultraschalluntersuchung zeigte keine strukturellen Veränderungen. Der Befund deutet auf eine normale Organstruktur hin."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutproben wurden entnommen, um spezifische Werte im Zusammenhang mit der Erkrankung zu überprüfen.", "result": "Die Blutproben wurden entnommen und zur Analyse geschickt. Die Ergebnisse werden für eine individualisierte Behandlungsplanung berücksichtigt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurde eine Anpassung der Medikation vorgenommen, um die Symptomkontrolle zu verbessern.", "result": "Die Anpassung der Medikation führte zu einer verbesserten Symptomkontrolle. Der Patient berichtet über eine subjektive Besserung seines Befindens."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung und Stabilisierung aus der Klinik entlassen.", "result": "Nach erfolgreicher Behandlung und Stabilisierung wurde der Patient aus der Klinik entlassen. Er wurde über die Bedeutung der Nachsorge informiert."}
|
||||||
|
{"category": "Sonstiges", "description": "Weitere diagnostische Maßnahmen wurden eingeleitet, um unklare Beschwerden zu klären.", "result": "Zusätzliche diagnostische Maßnahmen wurden eingeleitet, um die Ursache der unklaren Beschwerden zu identifizieren. Der Patient wird über die geplanten Untersuchungen informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Eine umfassende klinische Untersuchung wurde durchgeführt, um den Therapieverlauf zu bewerten.", "result": "Die klinische Untersuchung ergab keine Auffälligkeiten. Der Patient zeigt positive Fortschritte im Therapieverlauf."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine spezielle Laboruntersuchung angeordnet, um auf bestimmte Krankheitsmarker zu testen.", "result": "Die spezielle Laboruntersuchung wurde durchgeführt, um auf bestimmte Krankheitsmarker zu testen. Die Ergebnisse werden zur weiteren Diagnose herangezogen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutproben wurden entnommen, um die Wirkung der aktuellen Therapie zu überwachen.", "result": "Die Blutproben wurden entnommen und werden auf die Wirkung der aktuellen Therapie überprüft. Anpassungen werden bei Bedarf vorgenommen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurden Änderungen in der Medikation vorgenommen, um Nebenwirkungen zu minimieren.", "result": "Die Medikamentendosis wurde angepasst, um mögliche Nebenwirkungen zu minimieren. Der Patient wird auf Veränderungen im Gesundheitszustand überwacht."}
|
||||||
|
{"category": "Sonstiges", "description": "Weitere diagnostische Tests wurden angeordnet, um spezifische Symptome zu klären.", "result": "Aufgrund von spezifischen Symptomen wurden weitere diagnostische Tests angeordnet. Die Ergebnisse werden für eine genauere Diagnose ausgewertet."}
|
||||||
|
{"category": "Klinische Visite", "description": "Die regelmäßige klinische Visite wurde durchgeführt, um den Therapieverlauf zu überwachen.", "result": "Bei der klinischen Visite wurden keine Auffälligkeiten festgestellt. Der Patient zeigt eine stabile Gesundheitslage und setzt die Therapie erfolgreich fort."}
|
||||||
|
{"category": "Untersuchungen", "description": "Eine Ultraschalluntersuchung wurde durchgeführt, um strukturelle Veränderungen zu erkennen.", "result": "Die Ultraschalluntersuchung zeigte keine strukturellen Veränderungen. Der Befund deutet auf eine normale Organstruktur hin."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es ist eine Ultraschalluntersuchung des Bauchraums notwendig.", "result": "Die Ultraschalluntersuchung wurde durchgeführt, um die inneren Organe im Bauchraum zu überprüfen. Es wurden keine Auffälligkeiten festgestellt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Dosierung eines Blutdruckmedikaments.", "result": "Die Dosierung des Blutdruckmedikaments wurde angepasst, um eine optimale Blutdruckkontrolle zu erreichen. Der Patient wird regelmäßig überwacht, um eventuelle Nebenwirkungen zu erfassen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Routinekontrolle des postoperativen Zustands.", "result": "Die klinische Visite nach einer Operation ergab, dass der Patient eine normale postoperative Erholung zeigt. Wundheilung und vitale Parameter sind im normalen Bereich."}
|
||||||
|
{"category": "Laborabnahme", "description": "Bestimmung der Nierenfunktion durch Blutuntersuchung.", "result": "Die Blutabnahme zur Bestimmung der Nierenfunktion wurde durchgeführt. Die Laborergebnisse werden ausgewertet und mit dem Patienten besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wird nach erfolgreicher Therapie aus der Klinik entlassen.", "result": "Nach Abschluss der geplanten Therapie wurde der Patient in einem stabilen Zustand entlassen. Empfehlungen für die Nachsorge wurden dem Patienten mitgeteilt."}
|
||||||
|
{"category": "Sonstiges", "description": "Notwendigkeit einer weiteren neurologischen Untersuchung.", "result": "Aufgrund spezifischer Symptome wird eine vertiefende neurologische Untersuchung empfohlen. Die genauen Untersuchungen werden mit dem Patienten besprochen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überwachung der vitalen Parameter bei akuten Beschwerden.", "result": "Die klinische Visite erfolgte aufgrund akuter Beschwerden. Die vitalen Parameter wurden überwacht, und entsprechende Maßnahmen wurden eingeleitet, um den Zustand zu stabilisieren."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Änderung der Medikation aufgrund neuer Laborergebnisse.", "result": "Die Medikation wurde aufgrund aktueller Laborergebnisse angepasst. Der Patient wird auf mögliche Veränderungen im Behandlungsverlauf überwacht."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutuntersuchung zur Überprüfung der Schilddrüsenfunktion.", "result": "Die Blutuntersuchung zur Überprüfung der Schilddrüsenfunktion wurde durchgeführt. Die Ergebnisse werden analysiert, um die weitere Behandlungsstrategie festzulegen."}
|
||||||
|
{"category": "Untersuchungen", "description": "MRT-Untersuchung zur detaillierten Darstellung des Rückenmarks.", "result": "Die MRT-Untersuchung des Rückenmarks liefert detaillierte Bilder für die genaue Beurteilung. Die Ergebnisse werden mit dem behandelnden Arzt besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Patient wird nach erfolgreicher Therapie aus der Rehabilitationsklinik entlassen.", "result": "Der Patient hat die Rehabilitationsmaßnahmen erfolgreich abgeschlossen und wird in einem verbesserten Zustand entlassen. Empfehlungen für die weitere Gesundheitspflege wurden mitgeteilt."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung für physiotherapeutische Maßnahmen bei muskulären Beschwerden.", "result": "Aufgrund von muskulären Beschwerden wird dem Patienten eine physiotherapeutische Behandlung empfohlen. Der Therapieplan wird individuell angepasst."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überwachung der postoperativen Wundheilung.", "result": "Die klinische Visite konzentrierte sich auf die Überwachung der postoperativen Wundheilung. Es wurden keine Anzeichen von Infektionen oder Komplikationen festgestellt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Umstellung der Schmerzmedikation aufgrund vermehrter Nebenwirkungen.", "result": "Die Schmerzmedikation wurde aufgrund vermehrter Nebenwirkungen umgestellt. Der Patient wird engmaschig überwacht, um die Verträglichkeit der neuen Medikamente zu überprüfen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutprobe zur Bestimmung des Vitamin-D-Spiegels.", "result": "Die Blutprobe zur Bestimmung des Vitamin-D-Spiegels wurde entnommen. Die Ergebnisse werden genutzt, um eine angemessene Supplementierung zu planen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Durchführung einer Endoskopie zur Abklärung von Magenbeschwerden.", "result": "Die Endoskopie ermöglichte eine genaue Untersuchung des Magens. Es wurden keine ernsthaften Anomalien festgestellt, und die Beschwerden werden weiter beobachtet."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wird nach Abschluss der Therapie aus der psychiatrischen Station entlassen.", "result": "Der Patient hat die psychiatrische Therapie erfolgreich abgeschlossen und wird in einem stabilen Zustand entlassen. Empfehlungen für die Nachsorge wurden übermittelt."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung für eine Ernährungsberatung aufgrund von Gewichtsproblemen.", "result": "Aufgrund von Gewichtsproblemen wird dem Patienten eine Ernährungsberatung empfohlen. Die Beratung zielt darauf ab, eine gesunde und ausgewogene Ernährung zu fördern."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überprüfung der Medikamentenverträglichkeit bei langfristiger Therapie.", "result": "Die klinische Visite diente der Überprüfung der Medikamentenverträglichkeit bei einer langfristigen Therapie. Der Patient zeigt keine Anzeichen von Nebenwirkungen, und die Therapie wird fortgesetzt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Dosierung eines Antidiabetikums aufgrund von Blutzuckerwerten.", "result": "Die Dosierung des Antidiabetikums wurde angepasst, um die Blutzuckerwerte zu stabilisieren. Der Patient wird regelmäßig überwacht, um die Effektivität der Therapie zu überprüfen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutuntersuchung zur Überprüfung der Leberfunktion.", "result": "Die Blutuntersuchung zur Überprüfung der Leberfunktion wurde durchgeführt. Die Ergebnisse werden analysiert, um die weitere Vorgehensweise in der Behandlung zu bestimmen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Durchführung eines EEGs zur Abklärung von neurologischen Symptomen.", "result": "Das EEG lieferte wichtige Informationen zur Abklärung der neurologischen Symptome. Die Ergebnisse werden mit einem Neurologen besprochen, um die Diagnose zu vervollständigen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wird nach erfolgreicher Behandlung aus der pädiatrischen Abteilung entlassen.", "result": "Der kleine Patient hat die Behandlung erfolgreich abgeschlossen und wird in einem verbesserten Zustand entlassen. Empfehlungen für die elterliche Nachsorge wurden mitgeteilt."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung für eine psychologische Beratung aufgrund von Stresssymptomen.", "result": "Aufgrund von Stresssymptomen wird dem Patienten eine psychologische Beratung empfohlen. Die Sitzungen werden darauf abzielen, stressbewältigende Strategien zu entwickeln."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überwachung der Atmung und Sauerstoffsättigung bei Atembeschwerden.", "result": "Die klinische Visite konzentrierte sich auf die Überwachung der Atmung und Sauerstoffsättigung bei Atembeschwerden. Entsprechende Maßnahmen wurden eingeleitet, um die Atemfunktion zu unterstützen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Schmerzmedikation aufgrund veränderter Schmerzsymptomatik.", "result": "Die Schmerzmedikation wurde aufgrund veränderter Schmerzsymptomatik angepasst. Der Patient wird über mögliche Nebenwirkungen informiert und engmaschig überwacht."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutprobe zur Bestimmung des Cholesterinspiegels.", "result": "Die Blutprobe zur Bestimmung des Cholesterinspiegels wurde entnommen. Die Ergebnisse werden genutzt, um das Risiko von Herz-Kreislauf-Erkrankungen zu bewerten."}
|
||||||
|
{"category": "Untersuchungen", "description": "Durchführung einer Röntgenaufnahme zur Beurteilung von Gelenkproblemen.", "result": "Die Röntgenaufnahme ermöglichte eine detaillierte Beurteilung von Gelenkproblemen. Die Bilder werden mit einem Orthopäden besprochen, um eine geeignete Behandlungsstrategie festzulegen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wird nach erfolgreicher Chemotherapie aus der Onkologie entlassen.", "result": "Der Patient hat die Chemotherapie erfolgreich abgeschlossen und wird in einem verbesserten Zustand entlassen. Empfehlungen für die langfristige Nachsorge wurden mitgeteilt."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung für eine Ernährungsanpassung aufgrund von Magen-Darm-Beschwerden.", "result": "Aufgrund von Magen-Darm-Beschwerden wird dem Patienten eine Ernährungsanpassung empfohlen. Ein Ernährungsplan wird in Absprache mit einem Ernährungsspezialisten erstellt."}
|
||||||
|
{"category": "Klinische Visite", "description": "Überprüfung der Wundheilung nach einer Hautoperation.", "result": "Die klinische Visite konzentrierte sich auf die Überprüfung der Wundheilung nach einer Hautoperation. Die Wunde zeigt eine normale Heilung, und der Verband wird entsprechend angepasst."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Anpassung der Antidepressiva-Dosierung aufgrund von Stimmungsschwankungen.", "result": "Die Dosierung der Antidepressiva wurde angepasst, um auf aktuelle Stimmungsschwankungen des Patienten zu reagieren. Eine engmaschige Betreuung wird sicherstellen, dass die Anpassung gut vertragen wird."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutuntersuchung zur Überprüfung der Schilddrüsenhormone.", "result": "Die Blutuntersuchung zur Überprüfung der Schilddrüsenhormone wurde durchgeführt. Die Ergebnisse werden genutzt, um die Schilddrüsenfunktion zu bewerten und die Behandlung anzupassen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Durchführung einer Spirometrie zur Beurteilung der Lungenfunktion.", "result": "Die Spirometrie lieferte detaillierte Informationen zur Beurteilung der Lungenfunktion. Die Ergebnisse werden mit einem Lungenfacharzt besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wird nach erfolgreicher Physiotherapie aus der orthopädischen Abteilung entlassen.", "result": "Der Patient hat die physiotherapeutischen Maßnahmen erfolgreich abgeschlossen und wird in einem verbesserten Zustand entlassen. Übungen für die Heimtherapie wurden erläutert."}
|
||||||
|
{"category": "Sonstiges", "description": "Empfehlung für eine Schlafstudie aufgrund von Schlafstörungen.", "result": "Aufgrund von Schlafstörungen wird dem Patienten eine Schlafstudie empfohlen. Die Ergebnisse werden mit einem Schlafspezialisten besprochen, um die Ursache der Schlafprobleme zu klären."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Dosierung eines Medikaments wurde angepasst, um Nebenwirkungen zu minimieren.", "result": "Die Medikationsanpassung wurde vorgenommen, und der Patient wird auf mögliche Reaktionen überwacht. Bisher gibt es keine ungewöhnlichen Symptome."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde aufgrund von Fieber und Husten klinisch untersucht.", "result": "Die klinische Visite ergab erhöhte Körpertemperatur und Atemprobleme. Es wurde eine geeignete Behandlung eingeleitet, und der Patient wird intensiv betreut."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutprobe entnommen, um den Hämoglobinspiegel zu überprüfen.", "result": "Die Blutabnahme wurde erfolgreich durchgeführt, und die Ergebnisse werden in Kürze erwartet. Dies dient der Überwachung der Hämoglobinkonzentration im Blut."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es ist eine Ultraschalluntersuchung des Bauchraums notwendig.", "result": "Die Ultraschalluntersuchung lieferte detaillierte Bilder des Bauchraums. Es wurden keine pathologischen Veränderungen festgestellt. Die Ergebnisse werden mit dem behandelnden Arzt besprochen."}
|
||||||
|
{"category": "Sonstiges", "description": "Der Patient berichtet über Schlafstörungen und Unruhezustände.", "result": "Weitere Anamnese und Untersuchungen sind erforderlich, um die genaue Ursache der Schlafstörungen zu ermitteln. Ein Schlafprotokoll wird angelegt, um weitere Informationen zu sammeln."}
|
||||||
|
{"category": "Entlassung", "description": "Nach erfolgreicher Therapie wurde der Patient aus der stationären Behandlung entlassen.", "result": "Die Therapie war erfolgreich, und der Patient befindet sich in einem guten Zustand. Er wurde über die Fortsetzung der Behandlung zu Hause informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Routinekontrolle zur Überwachung des Gesundheitszustands des Patienten.", "result": "Die klinische Visite zeigte keine Auffälligkeiten. Der Patient ist in stabilem Zustand, und die nächsten Kontrolltermine werden vereinbart."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Umstellung der Schmerzmedikation aufgrund unzureichender Wirkung.", "result": "Die neue Schmerzmedikation wurde eingeführt. Der Patient wird auf mögliche Nebenwirkungen überwacht, und die Wirksamkeit wird regelmäßig evaluiert."}
|
||||||
|
{"category": "Laborabnahme", "description": "Routine-Blutuntersuchung zur Überprüfung der allgemeinen Gesundheit.", "result": "Die Blutprobe wurde entnommen und zur Untersuchung ins Labor geschickt. Die Ergebnisse werden genutzt, um den Gesundheitszustand des Patienten zu bewerten."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Röntgenaufnahme der Lunge durchgeführt.", "result": "Die Röntgenuntersuchung ergab keine Anzeichen von Auffälligkeiten oder Infektionen. Die Lungenfunktion des Patienten scheint normal zu sein."}
|
||||||
|
{"category": "Sonstiges", "description": "Der Patient beklagt sich über Magenbeschwerden und Verdauungsprobleme.", "result": "Es wurden weitere Untersuchungen eingeleitet, darunter eine gastrointestinale Untersuchung, um die Ursache der Magenbeschwerden zu klären. Der Patient wird entsprechend behandelt."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung der vitalen Parameter wurde der Patient in einem stabilen Zustand entlassen. Er erhielt Anweisungen zur weiteren Nachsorge."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient berichtet über Kopfschmerzen und Schwindel.", "result": "Bei der klinischen Visite wurden neurologische Tests durchgeführt. Es wurden keine schwerwiegenden Auffälligkeiten festgestellt. Der Patient wird weiterhin überwacht, um mögliche Ursachen zu identifizieren."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Aufgrund von Nebenwirkungen wurde die Medikation angepasst.", "result": "Die Medikationsumstellung wurde vorgenommen, um unerwünschte Nebenwirkungen zu minimieren. Der Patient wird auf Veränderungen in seinem Gesundheitszustand überwacht."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde Blut abgenommen, um den Cholesterinspiegel zu überprüfen.", "result": "Die Blutprobe wurde entnommen, und die Laborergebnisse deuten auf einen erhöhten Cholesterinspiegel hin. Eine Ernährungsberatung wird eingeleitet."}
|
||||||
|
{"category": "Untersuchungen", "description": "Der Patient hat Beschwerden im Bewegungsapparat; eine orthopädische Untersuchung ist notwendig.", "result": "Die orthopädische Untersuchung zeigte leichte Abnutzungserscheinungen. Der Patient wird physiotherapeutisch behandelt, um die Beschwerden zu lindern."}
|
||||||
|
{"category": "Sonstiges", "description": "Der Patient benötigt eine spezialisierte Konsultation aufgrund von unklaren Symptomen.", "result": "Eine spezialisierte Konsultation wurde eingeleitet, um die unklaren Symptome des Patienten genauer zu untersuchen. Weitere Untersuchungen werden in Absprache mit den Fachärzten durchgeführt."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Therapie und Stabilisierung entlassen.", "result": "Die Therapie war erfolgreich, und der Patient zeigt eine verbesserte Stabilität. Er wurde umfassend über die Maßnahmen zur weiteren Genesung informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Routinemäßige Überprüfung der Vitalparameter und allgemeinen Gesundheit.", "result": "Die klinische Visite ergab keine besorgniserregenden Veränderungen. Der Patient befindet sich in gutem Zustand, und die medizinische Betreuung wird entsprechend angepasst."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurde eine Anpassung der Medikation aufgrund von Unverträglichkeiten vorgenommen.", "result": "Die Medikationsanpassung wurde durchgeführt, um unerwünschte Reaktionen zu vermeiden. Der Patient wird über mögliche alternative Medikamente aufgeklärt."}
|
||||||
|
{"category": "Laborabnahme", "description": "Routine-Blutuntersuchung zur Überprüfung der Leberfunktion.", "result": "Die Blutprobe wurde entnommen, und die Laborergebnisse deuten auf eine normale Leberfunktion hin. Der Patient wird über gesunde Lebensgewohnheiten beraten."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine MRT-Untersuchung des Kopfes durchgeführt.", "result": "Die MRT-Untersuchung zeigte keine strukturellen Veränderungen im Gehirn. Der Patient wird weiterhin neurologisch betreut, um mögliche Ursachen für seine Symptome zu klären."}
|
||||||
|
{"category": "Sonstiges", "description": "Der Patient berichtet über Hautausschläge und Juckreiz.", "result": "Eine dermatologische Untersuchung wurde eingeleitet, um die Ursache der Hautprobleme zu klären. Die notwendigen Maßnahmen zur Behandlung werden ergriffen."}
|
||||||
|
{"category": "Entlassung", "description": "Nach erfolgreicher Therapie und Stabilisierung wurde der Patient entlassen.", "result": "Der Patient zeigt eine deutliche Besserung. Nach Abschluss der Therapie wurde er in einem stabilen Zustand entlassen und erhält Anweisungen zur Nachsorge."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient kommt zur Nachsorgeuntersuchung nach einer vorangegangenen Operation.", "result": "Die klinische Visite ergab keine postoperativen Komplikationen. Die Wundheilung verläuft zufriedenstellend, und der Patient wird für die weitere Rehabilitation empfohlen."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Aufgrund von Nebenwirkungen wurde die Medikation angepasst.", "result": "Die Medikationsumstellung erfolgte, um Nebenwirkungen zu minimieren. Der Patient wird auf Veränderungen in seinem Gesundheitszustand überwacht."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutprobe entnommen, um den Vitamin-D-Spiegel zu überprüfen.", "result": "Die Blutabnahme wurde erfolgreich durchgeführt, und die Laborergebnisse weisen auf einen niedrigen Vitamin-D-Spiegel hin. Eine Supplementierung wird empfohlen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Endoskopie des Magen-Darm-Trakts durchgeführt.", "result": "Die Endoskopie lieferte klare Bilder des Magen-Darm-Trakts. Es wurden keine pathologischen Veränderungen festgestellt. Der Patient wird über die Ergebnisse informiert."}
|
||||||
|
{"category": "Sonstiges", "description": "Der Patient hat Schlafprobleme und wird zur weiteren Abklärung überwiesen.", "result": "Weitere diagnostische Maßnahmen, einschließlich eines Schlaflabors, wurden empfohlen, um die Ursachen der Schlafprobleme zu identifizieren. Der Patient wird zur weiteren Abklärung überwiesen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach Abschluss der Behandlung erfolgreich entlassen.", "result": "Nach erfolgreicher Behandlung und Überprüfung der vitalen Parameter wurde der Patient entlassen. Er erhielt klare Anweisungen für die Nachsorge und mögliche Kontrolltermine."}
|
||||||
|
{"category": "Klinische Visite", "description": "Routinemäßige Überprüfung des Gesundheitszustands und der vitalen Parameter.", "result": "Die klinische Visite zeigte keine signifikanten Veränderungen. Der Patient befindet sich in gutem Zustand, und die medizinische Betreuung wird entsprechend angepasst."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Dosierung eines blutdrucksenkenden Medikaments wurde angepasst.", "result": "Die Dosieranpassung wurde vorgenommen, um den Blutdruck optimal zu regulieren. Der Patient wird regelmäßig überwacht, um die Wirksamkeit der Therapie zu überprüfen."}
|
||||||
|
{"category": "Laborabnahme", "description": "Routine-Blutuntersuchung zur Überprüfung der Schilddrüsenfunktion.", "result": "Die Blutprobe wurde entnommen, und die Laborergebnisse deuten auf eine normale Schilddrüsenfunktion hin. Der Patient wird über die Bedeutung regelmäßiger Kontrollen informiert."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es wurde eine Spirometrie zur Überprüfung der Lungenfunktion durchgeführt.", "result": "Die Spirometrie lieferte normale Werte der Lungenfunktion. Es gibt keine Anzeichen von Atemwegsproblemen. Der Patient wird weiterhin pneumologisch betreut."}
|
||||||
|
{"category": "Sonstiges", "description": "Der Patient klagt über Sehstörungen, eine augenärztliche Untersuchung ist notwendig.", "result": "Die augenärztliche Untersuchung ergab leichte Sehstörungen, die wahrscheinlich auf eine refraktive Anpassung zurückzuführen sind. Eine Brille wird empfohlen, und der Patient wird entsprechend beraten."}
|
||||||
|
{"category": "Entlassung", "description": "Nach erfolgreicher Therapie und Stabilisierung wurde der Patient entlassen.", "result": "Der Patient zeigt eine deutliche Verbesserung. Nach Abschluss der Therapie wurde er in einem stabilen Zustand entlassen und erhält Anweisungen zur weiteren Nachsorge."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde zur Überwachung der postoperativen Wundheilung klinisch untersucht.", "result": "Die postoperative Untersuchung ergab eine zufriedenstellende Wundheilung. Der Patient wird für die weitere Rehabilitation und Nachsorge empfohlen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde heute für die regelmäßige klinische Visite vorgestellt.", "result": "Während der Visite wurden die vitalen Parameter überprüft, und es wurden keine auffälligen Veränderungen festgestellt. Der Patient berichtet über eine stabile gesundheitliche Verfassung."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es ist eine umfassende Blutuntersuchung erforderlich, um spezifische Laborwerte zu überprüfen.", "result": "Die Blutentnahme wurde durchgeführt, und die Proben wurden zur Analyse ins Labor geschickt. Die Ergebnisse werden zeitnah erwartet."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um mögliche Nebenwirkungen zu minimieren.", "result": "Die Anpassung der Medikation erfolgte entsprechend den aktuellen Gesundheitsparametern des Patienten. Die Reaktion wird aufmerksam überwacht, und weitere Anpassungen können bei Bedarf vorgenommen werden."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es ist eine Ultraschalluntersuchung des Bauchraums geplant.", "result": "Die Ultraschalluntersuchung wurde erfolgreich durchgeführt, um den Bauchraum zu überprüfen. Es wurden keine pathologischen Befunde festgestellt."}
|
||||||
|
{"category": "Sonstiges", "description": "Zusätzliche Informationen werden benötigt, um eine genaue Diagnose zu stellen.", "result": "Der Patient wird zu weiteren Untersuchungen überwiesen, um zusätzliche Informationen zu sammeln und eine umfassende Diagnose zu erstellen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient zeigt leichte Symptome, daher wurde eine zusätzliche klinische Visite anberaumt.", "result": "Während der klinischen Visite wurden die aktuellen Symptome des Patienten besprochen. Es wurden vorläufige Maßnahmen ergriffen, und der Patient wird weiterhin engmaschig überwacht."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient hat die stationäre Behandlung erfolgreich abgeschlossen und wird entlassen.", "result": "Nach einer positiven Beurteilung des Gesundheitszustands und einer abschließenden ärztlichen Überprüfung wird der Patient in gutem Zustand entlassen. Er erhält klare Anweisungen für die Nachsorge."}
|
||||||
|
{"category": "Laborabnahme", "description": "Blutproben wurden genommen, um die Wirksamkeit der laufenden Therapie zu überprüfen.", "result": "Die Blutproben wurden entnommen und zur Überprüfung der Therapieeffektivität analysiert. Die vorläufigen Ergebnisse deuten auf eine positive Entwicklung hin."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde aufgrund von Unverträglichkeiten angepasst.", "result": "Aufgrund von Unverträglichkeiten wurde die Medikation angepasst. Der Patient wird auf mögliche Verbesserungen überwacht, und gegebenenfalls werden weitere Anpassungen vorgenommen."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es sind weiterführende bildgebende Untersuchungen zur Klärung von Symptomen geplant.", "result": "Aufgrund unklarer Symptome werden zusätzliche bildgebende Untersuchungen durchgeführt. Die Ergebnisse werden mit dem Patienten besprochen, um eine geeignete Behandlungsstrategie zu planen."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient berichtet über eine Verschlechterung der Symptome, daher wurde eine dringende klinische Visite angeordnet.", "result": "Während der Visite wurden die aktuellen Symptome bewertet. Sofortmaßnahmen wurden ergriffen, und der Patient wird intensiver überwacht, um weitere Komplikationen zu verhindern."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind psychologische Beratungsgespräche zur Unterstützung des Patienten geplant.", "result": "Zur Unterstützung des Patienten werden psychologische Beratungsgespräche geplant. Der Fokus liegt darauf, die psychische Gesundheit zu stabilisieren und das Wohlbefinden zu fördern."}
|
||||||
|
{"category": "Laborabnahme", "description": "Spezifische Blutwerte müssen für die Anpassung der Behandlung überprüft werden.", "result": "Die Blutabnahme erfolgte, um spezifische Werte für die Anpassung der laufenden Behandlung zu erhalten. Die Ergebnisse werden zur weiteren Therapieplanung genutzt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Aufgrund von Nebenwirkungen wurde eine Umstellung der Medikation empfohlen.", "result": "Die Medikationsumstellung wurde durchgeführt, um mögliche Nebenwirkungen zu minimieren. Der Patient wird auf Veränderungen in seinem Befinden überwacht."}
|
||||||
|
{"category": "Klinische Visite", "description": "Die regelmäßige klinische Visite zeigt weiterhin stabile Gesundheitswerte des Patienten.", "result": "Die klinische Visite bestätigt, dass der Patient in einem stabilen Gesundheitszustand ist. Es wurden keine neuen Symptome oder Probleme festgestellt."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es sind genetische Untersuchungen zur Klärung von erblichen Faktoren geplant.", "result": "Genetische Untersuchungen wurden eingeleitet, um mögliche erbliche Faktoren zu identifizieren. Die Ergebnisse werden mit dem Patienten und gegebenenfalls mit einem Genetiker besprochen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde nach erfolgreicher Behandlung aus der stationären Aufnahme entlassen.", "result": "Nach Abschluss der erfolgreichen Therapie und Überprüfung der vitalen Parameter wurde der Patient in einem stabilen Zustand entlassen. Er erhält klare Anweisungen für die Nachsorge."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind weiterführende Beratungsgespräche mit dem Patienten geplant.", "result": "Zur umfassenden Betreuung des Patienten sind weiterführende Beratungsgespräche geplant. Der Fokus liegt auf der Erklärung der aktuellen Situation und der Unterstützung des Patienten."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient zeigt eine Verbesserung der Symptome, daher wird die klinische Visite in regelmäßigen Abständen fortgesetzt.", "result": "Die regelmäßige klinische Visite bestätigt eine kontinuierliche Verbesserung der Symptome. Die Behandlung wird entsprechend angepasst, um den Heilungsprozess zu fördern."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurden Blutproben entnommen, um die Auswirkungen der neuen Medikation zu überprüfen.", "result": "Die Blutproben wurden entnommen, um die Auswirkungen der kürzlich durchgeführten Medikationsumstellung zu überprüfen. Die vorläufigen Ergebnisse deuten auf eine positive Verträglichkeit hin."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um auf aktuelle Laborergebnisse zu reagieren.", "result": "Aufgrund neuer Laborergebnisse wurde die Medikation angepasst, um auf spezifische Gesundheitsparameter zu reagieren. Der Patient wird auf mögliche Veränderungen in seinem Befinden überwacht."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient berichtet über eine Verschlechterung der Schlafqualität, daher wurde eine klinische Visite angeordnet.", "result": "Während der klinischen Visite wurden Schlafmuster und mögliche Ursachen für die Schlafprobleme besprochen. Empfehlungen zur Verbesserung der Schlafqualität wurden gegeben."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es sind weiterführende neurologische Untersuchungen zur Klärung von Symptomen geplant.", "result": "Neurologische Untersuchungen wurden eingeleitet, um die Ursachen bestimmter Symptome zu klären. Die Ergebnisse werden mit dem Neurologen besprochen, um eine geeignete Behandlungsstrategie zu entwickeln."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient hat die stationäre Behandlung erfolgreich abgeschlossen und wird entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung der vitalen Parameter wird der Patient in einem stabilen Zustand entlassen. Er erhält klare Anweisungen für die Nachsorge."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind ergänzende physiotherapeutische Maßnahmen zur Unterstützung der Rehabilitation geplant.", "result": "Zur Förderung der Rehabilitation werden ergänzende physiotherapeutische Maßnahmen geplant. Der Fokus liegt auf der Wiederherstellung der körperlichen Funktionen und der Steigerung der Lebensqualität."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurden Blutproben entnommen, um die Wirksamkeit der laufenden Therapie zu überprüfen.", "result": "Die Blutproben wurden entnommen und zur Überprüfung der Therapieeffektivität analysiert. Die vorläufigen Ergebnisse zeigen eine positive Entwicklung."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um auf aktuelle Laborergebnisse zu reagieren.", "result": "Aufgrund neuer Laborergebnisse wurde die Medikation angepasst, um auf spezifische Gesundheitsparameter zu reagieren. Der Patient wird auf mögliche Veränderungen in seinem Befinden überwacht."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient berichtet über anhaltende Beschwerden, daher wurde eine dringende klinische Visite angeordnet.", "result": "Während der klinischen Visite wurden die aktuellen Beschwerden des Patienten bewertet. Sofortmaßnahmen wurden ergriffen, und der Patient wird intensiver überwacht, um weitere Komplikationen zu verhindern."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es sind weiterführende bildgebende Untersuchungen zur Klärung von Symptomen geplant.", "result": "Aufgrund unklarer Symptome werden zusätzliche bildgebende Untersuchungen durchgeführt. Die Ergebnisse werden mit dem Patienten besprochen, um eine geeignete Behandlungsstrategie zu planen."}
|
||||||
|
{"category": "Entlassung", "description": "Der Patient wurde erfolgreich aus der stationären Behandlung entlassen.", "result": "Nach Abschluss der Therapie und Überprüfung der vitalen Parameter wurde der Patient in einem stabilen Zustand entlassen. Er erhält klare Anweisungen für die Nachsorge."}
|
||||||
|
{"category": "Sonstiges", "description": "Es sind zusätzliche Maßnahmen erforderlich, um die Ursache der Beschwerden zu klären.", "result": "Es wurden weitere diagnostische Maßnahmen eingeleitet, um die genaue Ursache der Beschwerden zu identifizieren. Der Patient wird über die geplanten Untersuchungen informiert."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde heute für die regelmäßige klinische Visite vorgestellt.", "result": "Während der Visite wurden die vitalen Parameter überprüft, und es wurden keine auffälligen Veränderungen festgestellt. Der Patient berichtet über eine stabile gesundheitliche Verfassung."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es ist eine umfassende Blutuntersuchung erforderlich, um spezifische Laborwerte zu überprüfen.", "result": "Die Blutentnahme wurde durchgeführt, und die Proben wurden zur Analyse ins Labor geschickt. Die Ergebnisse werden zeitnah erwartet."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Die Medikation wurde angepasst, um mögliche Nebenwirkungen zu minimieren.", "result": "Die Anpassung der Medikation erfolgte entsprechend den aktuellen Gesundheitsparametern des Patienten. Die Reaktion wird aufmerksam überwacht, und weitere Anpassungen können bei Bedarf vorgenommen werden."}
|
||||||
|
{"category": "Untersuchungen", "description": "Es ist eine Ultraschalluntersuchung des Bauchraums geplant.", "result": "Die Ultraschalluntersuchung wurde erfolgreich durchgeführt, um den Bauchraum zu überprüfen. Es wurden keine pathologischen Befunde festgestellt."}
|
||||||
|
{"category": "Medikationsumstellung", "description": "Es wurde eine Anpassung der Medikation vorgenommen, um die Therapieeffizienz zu steigern.", "result": "Die Medikationsanpassung wurde erfolgreich umgesetzt. Der Patient wird auf mögliche Nebenwirkungen überwacht, und entsprechende Maßnahmen werden ergriffen, um eventuelle Komplikationen zu verhindern."}
|
||||||
|
{"category": "Klinische Visite", "description": "Der Patient wurde aufgrund akuter Beschwerden klinisch untersucht.", "result": "Bei der klinischen Visite wurden spezifische Symptome des Patienten eingehend untersucht. Der Arzt hat eine vorläufige Diagnose gestellt und weitere diagnostische Maßnahmen veranlasst."}
|
||||||
|
{"category": "Laborabnahme", "description": "Es wurde eine Blutuntersuchung angeordnet, um spezifische Laborwerte zu überprüfen.", "result": "Die Blutabnahme wurde durchgeführt, und die Proben werden für verschiedene Laboranalysen vorbereitet. Die Ergebnisse werden dem Patienten in Kürze mitgeteilt."}
|
|
@ -1,7 +1,5 @@
|
||||||
import { PrismaClient } from "@prisma/client";
|
import { prisma } from "$lib/server/prisma";
|
||||||
import { CATEGORIES } from "./testdata";
|
import { CATEGORIES, STATIONS } from "./testdata";
|
||||||
|
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
export default async () => {
|
export default async () => {
|
||||||
await prisma.$transaction([
|
await prisma.$transaction([
|
||||||
|
@ -21,33 +19,32 @@ export default async () => {
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
prisma.category.createMany({ data: CATEGORIES }),
|
prisma.category.createMany({ data: CATEGORIES }),
|
||||||
prisma.station.createMany({
|
prisma.station.createMany({ data: STATIONS }),
|
||||||
data: [
|
|
||||||
{ id: 1, name: "S1" },
|
|
||||||
{ id: 2, name: "S2" },
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
prisma.room.createMany({
|
prisma.room.createMany({
|
||||||
data: [
|
data: [
|
||||||
{ id: 1, name: "R1.1", stationId: 1 },
|
{ id: 1, name: "R1.1", station_id: 1 },
|
||||||
{ id: 2, name: "R1.2", stationId: 1 },
|
{ id: 2, name: "R1.2", station_id: 1 },
|
||||||
{ id: 3, name: "R2.1", stationId: 2 },
|
{ id: 3, name: "R2.1", station_id: 2 },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
prisma.patient.createMany({
|
prisma.patient.createMany({
|
||||||
data: [
|
data: [
|
||||||
{ id: 1, firstName: "Andreas", lastName: "Bergmann", age: 22, roomId: 1 },
|
{ id: 1, first_name: "Andreas", last_name: "Bergmann", age: 22, room_id: 1 },
|
||||||
{ id: 2, firstName: "Manuela", lastName: "Kortig", age: 41, roomId: 2 },
|
{ id: 2, first_name: "Manuela", last_name: "Kortig", age: 41, room_id: 2 },
|
||||||
{ id: 3, firstName: "Markus", lastName: "Schuster", age: 50, roomId: 3 },
|
{ id: 3, first_name: "Markus", last_name: "Schuster", age: 50, room_id: 3 },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
prisma.$executeRaw`alter sequence users_id_seq restart with 3`,
|
prisma.$executeRaw`alter sequence users_id_seq restart with 3`,
|
||||||
prisma.$executeRaw`alter sequence categories_id_seq restart with 7`,
|
prisma.$executeRawUnsafe(
|
||||||
prisma.$executeRaw`alter sequence stations_id_seq restart with 3`,
|
`alter sequence categories_id_seq restart with ${CATEGORIES.length + 1}`
|
||||||
prisma.$executeRaw`alter sequence rooms_id_seq restart with 4`,
|
),
|
||||||
prisma.$executeRaw`alter sequence patients_id_seq restart with 4`,
|
prisma.$executeRawUnsafe(
|
||||||
prisma.$executeRaw`alter sequence entry_execution_id_seq restart with 1`,
|
`alter sequence stations_id_seq restart with ${STATIONS.length + 1}`
|
||||||
prisma.$executeRaw`alter sequence entry_versions_id_seq restart with 1`,
|
),
|
||||||
prisma.$executeRaw`alter sequence entries_id_seq restart with 1`,
|
prisma.$executeRawUnsafe(`alter sequence rooms_id_seq restart with 4`),
|
||||||
|
prisma.$executeRawUnsafe(`alter sequence patients_id_seq restart with 4`),
|
||||||
|
prisma.$executeRawUnsafe(`alter sequence entry_executions_id_seq restart with 1`),
|
||||||
|
prisma.$executeRawUnsafe(`alter sequence entry_versions_id_seq restart with 1`),
|
||||||
|
prisma.$executeRawUnsafe(`alter sequence entries_id_seq restart with 1`),
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,6 +3,8 @@ import type { Category, Station } from "$lib/shared/model";
|
||||||
export const S1: Station = { id: 1, name: "S1" };
|
export const S1: Station = { id: 1, name: "S1" };
|
||||||
export const S2: Station = { id: 2, name: "S2" };
|
export const S2: Station = { id: 2, name: "S2" };
|
||||||
|
|
||||||
|
export const STATIONS: Station[] = [S1, S2];
|
||||||
|
|
||||||
export const CATEGORIES: Category[] = [
|
export const CATEGORIES: Category[] = [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
|
|
|
@ -5,10 +5,11 @@ import {
|
||||||
newEntryExecution,
|
newEntryExecution,
|
||||||
newEntryVersion,
|
newEntryVersion,
|
||||||
} from "$lib/server/query";
|
} from "$lib/server/query";
|
||||||
|
import { ErrorConflict } from "$lib/shared/util/error";
|
||||||
import { expect, test } from "vitest";
|
import { expect, test } from "vitest";
|
||||||
|
|
||||||
const TEST_VERSION = {
|
const TEST_VERSION = {
|
||||||
categoryId: 1,
|
category_id: 1,
|
||||||
text: "10ml Blut abnehmen",
|
text: "10ml Blut abnehmen",
|
||||||
date: new Date(2024, 1, 1),
|
date: new Date(2024, 1, 1),
|
||||||
priority: false,
|
priority: false,
|
||||||
|
@ -16,7 +17,7 @@ const TEST_VERSION = {
|
||||||
|
|
||||||
test("create entry", async () => {
|
test("create entry", async () => {
|
||||||
const eId = await newEntry(1, {
|
const eId = await newEntry(1, {
|
||||||
patientId: 1,
|
patient_id: 1,
|
||||||
version: TEST_VERSION,
|
version: TEST_VERSION,
|
||||||
});
|
});
|
||||||
expect(eId).gt(0);
|
expect(eId).gt(0);
|
||||||
|
@ -24,72 +25,140 @@ test("create entry", async () => {
|
||||||
const entry = await getEntry(eId);
|
const entry = await getEntry(eId);
|
||||||
expect(entry.patient.id).toBe(1);
|
expect(entry.patient.id).toBe(1);
|
||||||
expect(entry.execution).toBeNull();
|
expect(entry.execution).toBeNull();
|
||||||
expect(entry.currentVersion.id).gt(0);
|
expect(entry.current_version.id).gt(0);
|
||||||
expect(entry.currentVersion.category?.id).toBe(TEST_VERSION.categoryId);
|
expect(entry.current_version.category?.id).toBe(TEST_VERSION.category_id);
|
||||||
expect(entry.currentVersion.category?.name).toBe("Laborabnahme");
|
expect(entry.current_version.category?.name).toBe("Laborabnahme");
|
||||||
expect(entry.currentVersion.text).toBe(TEST_VERSION.text);
|
expect(entry.current_version.text).toBe(TEST_VERSION.text);
|
||||||
expect(entry.currentVersion.date).toStrictEqual(TEST_VERSION.date);
|
expect(entry.current_version.date).toStrictEqual(TEST_VERSION.date);
|
||||||
expect(entry.currentVersion.priority).toBe(TEST_VERSION.priority);
|
expect(entry.current_version.priority).toBe(TEST_VERSION.priority);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("create extry version", async () => {
|
test("create entry version", async () => {
|
||||||
const eId = await newEntry(1, {
|
const eId = await newEntry(1, {
|
||||||
patientId: 1,
|
patient_id: 1,
|
||||||
version: TEST_VERSION,
|
version: TEST_VERSION,
|
||||||
});
|
});
|
||||||
const text = "10ml Blut abnehmen\n\nPS: Nadel nicht vergessen";
|
const text = "10ml Blut abnehmen\n\nPS: Nadel nicht vergessen";
|
||||||
|
const date = new Date(2024, 1, 2);
|
||||||
|
|
||||||
await newEntryVersion(1, eId, {
|
await newEntryVersion(1, eId, {
|
||||||
...TEST_VERSION,
|
date,
|
||||||
|
text,
|
||||||
|
category_id: 2,
|
||||||
|
priority: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const entry = await getEntry(eId);
|
||||||
|
expect(entry.current_version).toMatchObject({
|
||||||
|
author: { id: 1 },
|
||||||
|
date,
|
||||||
|
text,
|
||||||
|
category: { id: 2 },
|
||||||
|
priority: true,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("create entry version (partial)", async () => {
|
||||||
|
const eId = await newEntry(1, {
|
||||||
|
patient_id: 1,
|
||||||
|
version: TEST_VERSION,
|
||||||
|
});
|
||||||
|
const oldEntry = await getEntry(eId);
|
||||||
|
const text = "10ml Blut abnehmen\n\nPS: Nadel nicht vergessen";
|
||||||
|
|
||||||
|
await newEntryVersion(2, eId, {
|
||||||
|
old_version: oldEntry.current_version.id,
|
||||||
text,
|
text,
|
||||||
});
|
});
|
||||||
|
|
||||||
const entry = await getEntry(eId);
|
const entry = await getEntry(eId);
|
||||||
expect(entry.currentVersion.text).toBe(text);
|
expect(entry.current_version).toMatchObject({
|
||||||
|
author: { id: 2 },
|
||||||
|
date: oldEntry.current_version.date,
|
||||||
|
text,
|
||||||
|
category: oldEntry.current_version.category,
|
||||||
|
priority: oldEntry.current_version.priority,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test("create extry execution", async () => {
|
test("create entry version (wrong old vid)", async () => {
|
||||||
const eId = await newEntry(1, {
|
const eId = await newEntry(1, {
|
||||||
patientId: 1,
|
patient_id: 1,
|
||||||
|
version: TEST_VERSION,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("create entry execution", async () => {
|
||||||
|
const eId = await newEntry(1, {
|
||||||
|
patient_id: 1,
|
||||||
version: TEST_VERSION,
|
version: TEST_VERSION,
|
||||||
});
|
});
|
||||||
const text = "Blutabnahme erledigt.";
|
const text = "Blutabnahme erledigt.";
|
||||||
|
|
||||||
await newEntryExecution(1, eId, { text });
|
const xId = await newEntryExecution(1, eId, { old_execution: null, text });
|
||||||
|
|
||||||
const entry = await getEntry(eId);
|
const entry = await getEntry(eId);
|
||||||
|
expect(entry.execution?.id).toBe(xId);
|
||||||
expect(entry.execution?.author.id).toBe(1);
|
expect(entry.execution?.author.id).toBe(1);
|
||||||
expect(entry.execution?.text).toBe(text);
|
expect(entry.execution?.text).toBe(text);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("create entry execution (update)", async () => {
|
||||||
|
const eId = await newEntry(1, {
|
||||||
|
patient_id: 1,
|
||||||
|
version: TEST_VERSION,
|
||||||
|
});
|
||||||
|
|
||||||
|
const x1 = await newEntryExecution(1, eId, { old_execution: null, text: "x1" });
|
||||||
|
const x2 = await newEntryExecution(2, eId, { old_execution: x1, text: "x2" });
|
||||||
|
|
||||||
|
const entry = await getEntry(eId);
|
||||||
|
expect(entry.execution?.id).toBe(x2);
|
||||||
|
expect(entry.execution?.text).toBe("x2");
|
||||||
|
expect(entry.execution?.author.id).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("create entry execution (wrong old xid)", async () => {
|
||||||
|
const eId = await newEntry(1, {
|
||||||
|
patient_id: 1,
|
||||||
|
version: TEST_VERSION,
|
||||||
|
});
|
||||||
|
const x1 = await newEntryExecution(1, eId, { old_execution: null, text: "x1" });
|
||||||
|
|
||||||
|
expect(async () =>
|
||||||
|
newEntryExecution(1, eId, { old_execution: x1 + 1, text: "x2" })
|
||||||
|
).rejects.toThrowError(new ErrorConflict("old execution id does not match"));
|
||||||
|
});
|
||||||
|
|
||||||
async function insertTestEntries() {
|
async function insertTestEntries() {
|
||||||
// Create some entries
|
// Create some entries
|
||||||
const eId1 = await newEntry(1, {
|
const eId1 = await newEntry(1, {
|
||||||
patientId: 1,
|
patient_id: 1,
|
||||||
version: TEST_VERSION,
|
version: TEST_VERSION,
|
||||||
});
|
});
|
||||||
const eId2 = await newEntry(1, {
|
const eId2 = await newEntry(1, {
|
||||||
patientId: 2,
|
patient_id: 2,
|
||||||
version: {
|
version: {
|
||||||
text: "Carrot cake jelly-o bonbon toffee chocolate.",
|
text: "Carrot cake jelly-o bonbon toffee chocolate.",
|
||||||
date: new Date(2024, 1, 5),
|
date: new Date(2024, 1, 5),
|
||||||
priority: false,
|
priority: false,
|
||||||
categoryId: null,
|
category_id: null,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const eId3 = await newEntry(1, {
|
const eId3 = await newEntry(1, {
|
||||||
patientId: 1,
|
patient_id: 1,
|
||||||
version: {
|
version: {
|
||||||
text: "Cheesecake danish donut oat cake caramels.",
|
text: "Cheesecake danish donut oat cake caramels.",
|
||||||
date: new Date(2024, 1, 6),
|
date: new Date(2024, 1, 6),
|
||||||
priority: false,
|
priority: false,
|
||||||
categoryId: null,
|
category_id: null,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update an entry
|
// Update an entry
|
||||||
await newEntryVersion(2, eId1, {
|
await newEntryVersion(2, eId1, {
|
||||||
categoryId: 3,
|
category_id: 3,
|
||||||
text: "Hello World",
|
text: TEST_VERSION.text + "\n\n> Hello World",
|
||||||
date: new Date(2024, 1, 1),
|
date: new Date(2024, 1, 1),
|
||||||
priority: true,
|
priority: true,
|
||||||
});
|
});
|
||||||
|
@ -159,4 +228,10 @@ test("get entries", async () => {
|
||||||
expect(entriesPrio.items).length(1);
|
expect(entriesPrio.items).length(1);
|
||||||
expect(entriesPrio.total).toBe(1);
|
expect(entriesPrio.total).toBe(1);
|
||||||
expect(entriesPrio.items[0].id).toBe(eId1);
|
expect(entriesPrio.items[0].id).toBe(eId1);
|
||||||
|
|
||||||
|
// Search
|
||||||
|
const entriesSearch = await getEntries({ filter: { search: "Blu" } });
|
||||||
|
expect(entriesSearch.items).length(1);
|
||||||
|
expect(entriesSearch.total).toBe(1);
|
||||||
|
expect(entriesSearch.items[0].id).toBe(eId1);
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,16 +5,16 @@ import { S1, S2 } from "../../helpers/testdata";
|
||||||
|
|
||||||
test("create patient", async () => {
|
test("create patient", async () => {
|
||||||
const pId = await newPatient({
|
const pId = await newPatient({
|
||||||
firstName: "Max",
|
first_name: "Max",
|
||||||
lastName: "Müller",
|
last_name: "Müller",
|
||||||
age: 31,
|
age: 31,
|
||||||
roomId: 1,
|
room_id: 1,
|
||||||
});
|
});
|
||||||
const patient = await getPatient(pId);
|
const patient = await getPatient(pId);
|
||||||
expect(patient).toMatchObject({
|
expect(patient).toMatchObject({
|
||||||
id: pId,
|
id: pId,
|
||||||
firstName: "Max",
|
first_name: "Max",
|
||||||
lastName: "Müller",
|
last_name: "Müller",
|
||||||
age: 31,
|
age: 31,
|
||||||
room: { id: 1, name: "R1.1", station: S1 },
|
room: { id: 1, name: "R1.1", station: S1 },
|
||||||
});
|
});
|
||||||
|
@ -26,22 +26,22 @@ test("get patients", async () => {
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
firstName: "Andreas",
|
first_name: "Andreas",
|
||||||
lastName: "Bergmann",
|
last_name: "Bergmann",
|
||||||
age: 22,
|
age: 22,
|
||||||
room: { id: 1, name: "R1.1", station: S1 },
|
room: { id: 1, name: "R1.1", station: S1 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
firstName: "Manuela",
|
first_name: "Manuela",
|
||||||
lastName: "Kortig",
|
last_name: "Kortig",
|
||||||
age: 41,
|
age: 41,
|
||||||
room: { id: 2, name: "R1.2", station: S1 },
|
room: { id: 2, name: "R1.2", station: S1 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
firstName: "Markus",
|
first_name: "Markus",
|
||||||
lastName: "Schuster",
|
last_name: "Schuster",
|
||||||
age: 50,
|
age: 50,
|
||||||
room: { id: 3, name: "R2.1", station: S2 },
|
room: { id: 3, name: "R2.1", station: S2 },
|
||||||
},
|
},
|
||||||
|
|
|
@ -23,7 +23,7 @@ test("get stations", async () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("create room", async () => {
|
test("create room", async () => {
|
||||||
const rId = await newRoom({ name: "A1", stationId: 1 });
|
const rId = await newRoom({ name: "A1", station_id: 1 });
|
||||||
const room = await getRoom(rId);
|
const room = await getRoom(rId);
|
||||||
expect(room).toStrictEqual({
|
expect(room).toStrictEqual({
|
||||||
id: rId,
|
id: rId,
|
||||||
|
|
Loading…
Reference in a new issue