import Link from 'next/link' import { Building, HeartPulse, Pencil, ScrollText } from 'lucide-react' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Leerzustand, SeitenKopf } from '@/components/seiten-kopf' import { Datenzeile } from '@/components/substanz-formular' import { AbwesenheitKarte } from '@/components/pflege/abwesenheit-karte' import { Impfstatus } from '@/components/pflege/impfstatus' import { LeistungszuschlagKarte } from '@/components/pflege/leistungszuschlag-karte' import { PflegegradKarte } from '@/components/pflege/pflegegrad-karte' import { aktiveBetreute, erfordereBenutzer, erfordereZugang } from '@/lib/auth/sitzung' import { centZuZahl, db, nichtGeloescht } from '@/lib/db' import { oeffnen } from '@/lib/crypto/feld' import { alsIsoTag, heuteAlsTag, plusMonate } from '@/lib/fristen/datum' import { abwesenheitstageGesamt, abwesenheitstageJeJahr } from '@/lib/pflege/abwesenheit' import { impfstatusBerechnen } from '@/lib/pflege/impfungen' import { leistungszuschlagBerechnen } from '@/lib/pflege/leistungszuschlag' import { HOEHERSTUFUNG_ABSTAND_MONATE } from '@/lib/pflege/konstanten' import { verlaufAuswerten, verschlechterungErkannt } from '@/lib/pflege/verlauf' import { formatCent, formatDatum } from '@/lib/utils' export const dynamic = 'force-dynamic' export default async function PflegeUebersicht() { const benutzer = await erfordereBenutzer('/pflege') const aktive = await aktiveBetreute(benutzer) if (!aktive) return null const { darfSchreiben } = await erfordereZugang(aktive.id, 'GESUNDHEIT', 'lesen') const schreiben = darfSchreiben('GESUNDHEIT') const [heimvertrag, ereignisse, pruefFrist] = await Promise.all([ db.heimvertrag.findUnique({ where: { betreuteId: aktive.id } }), db.gesundheitsereignis.findMany({ where: { betreuteId: aktive.id, ...nichtGeloescht }, orderBy: { datum: 'desc' }, }), db.frist.findUnique({ where: { betreuteId_systemSchluessel: { betreuteId: aktive.id, systemSchluessel: 'pflegegrad-pruefung', }, }, }), ]) const heute = heuteAlsTag() const zuschlag = leistungszuschlagBerechnen({ einzugAm: heimvertrag?.einzugAm ?? aktive.heimEinzugAm, eigenanteilCent: heimvertrag?.pflegeEigenanteilCent ?? null, pflegegrad: aktive.pflegegrad, stichtag: heute, }) const abwesend = abwesenheitstageJeJahr( ereignisse.map((e) => ({ datum: e.datum, bisDatum: e.bisDatum, abwesenheitstage: e.abwesenheitstage, art: e.art, })), ) const jahre = verlaufAuswerten( ereignisse.map((e) => ({ datum: e.datum, bisDatum: e.bisDatum, art: e.art, abwesenheitstage: e.abwesenheitstage, })), ) const befund = verschlechterungErkannt(jahre, heute.getUTCFullYear()) const impfungen = impfstatusBerechnen( ereignisse.filter((e) => e.art === 'IMPFUNG').map((e) => ({ datum: e.datum, titel: e.titel })), heute, ) const offenHeim = heimvertrag ? oeffnen('Heimvertrag', heimvertrag) : null const gesamtCent = (heimvertrag?.pflegeEigenanteilCent ?? 0n) + (heimvertrag?.unterkunftVerpflegungCent ?? 0n) + (heimvertrag?.investitionskostenCent ?? 0n) + (heimvertrag?.ausbildungsumlageCent ?? 0n) return (
{offenHeim.notizen}