// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { provider = "prisma-client-js" previewFeatures = ["postgresqlExtensions"] } generator kysely { provider = "prisma-kysely" previewFeatures = ["postgresqlExtensions"] output = "../libs/api/data-access-database/src/lib" fileName = "types.ts" } datasource db { provider = "postgresql" url = env("DATABASE_URL") extensions = [pgcrypto] } model TourSource { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid insertedAt DateTime @default(now()) jobId String id String? check String? createTime String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' empfangenVonId String? endgen String? // yyyy-MM-dd serienId String? serienKategorName String? serienKategorie String? zadStatus String? abrDate String? // yyyy-MM-dd abrNum String? abrTime String? // HH:mm ausrueckZeit String? // HH:mm 'Europe/Berlin' startTime String? // HH:mm 'Europe/Berlin' (is after ausrueckZeit) startDate String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' date String? // yyyy-MM-dd date_iso String? // ISO 8601 String dauergenehmigung String? direction String? distanceValue String? // meters (probably int) besetztKm String? // kilometers (float) gefahren String? // Boolean as number gesamtPreis String? // float infektion String? // Boolean as number itDesc String? itKrz String? itName String? kkId String? krankenkasse String? patId String? patName String? patSurname String? patStreet String? patZip String? patCity String? startInstitution String? startStreet String? startZip String? startCity String? targetInstitution String? targetStreet String? targetZip String? targetCity String? transportKrz String? transportName String? transportart String? // ID verordnungsId String? verordnungsName String? type String? startBegin String? // HH:mm 'Europe/Berlin' startEnd String? // HH:mm 'Europe/Berlin' frei String? // HH:mm 'Europe/Berlin' ziel String? // HH:mm 'Europe/Berlin' zielBegin String? // HH:mm 'Europe/Berlin' endTime String? // HH:mm 'Europe/Berlin' endDate String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' einsatzNummer String? carName String? carNo String? // ID beifahrerName String? beifahrer String? // ID fahrerName String? fahrer String? // ID color String? // Hex rgb } model EmployeeDispoLiveSource { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid insertedAt DateTime @default(now()) jobId String id String? pScheinAblaufDatum String? // yyyy-MM-dd name String? surname String? persId String? importPersId String? // Personal ID aus Dyflexis qualifikation String? // ID } model AttendanceRegistrationSource { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid insertedAt DateTime @default(now()) jobId String attendanceRegistrationId String? employeeId String? personnelNumber String? dateTime String? // ISO 8601 String with timezone event String? } model PlannedTimeSource { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid insertedAt DateTime @default(now()) jobId String id String? user_id String? firstname String? surname String? department_id String? department_name String? start_date String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' end_date String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' pauze String? duration String? deleted String? mark String? } model WorkTimeSource { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid insertedAt DateTime @default(now()) jobId String id String? user_id String? firstname String? surname String? department_id String? department_name String? start_date String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' end_date String? // yyyy-MM-dd HH:mm:ss 'Europe/Berlin' pauze String? duration String? } model EmployeeDyflexisSource { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid insertedAt DateTime @default(now()) jobId String id String? firstname String? surname String? contract_id String? contract_start String? // yyyy-MM-dd contract_end String? // yyyy-MM-dd contract_hours_week String? // Float string contract_salary_hour String? // Float string } model PatientSource { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid insertedAt DateTime @default(now()) jobId String id String? surname String? name String? street String? zip String? city String? birthday String? kkId String? krankenkasse String? pflegestufe String? behinderung1 String? behinderung2 String? } model TourStaging { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid id String? done Boolean? direction String? carName String? operationId String? driverId String? driverName String? codriverId String? codriverName String? patientId String? patientName String? patientSurname String? patientStreet String? patientZip String? patientCity String? healthInsurance String? healthInsuranceNumber String? type String? category String? transportType String? ordinanceType String? rangeEndDate DateTime? startInstitution String? startStreet String? startZip String? startCity String? targetInstitution String? targetStreet String? targetZip String? targetCity String? startDate DateTime? check Int @default(0) occupiedKm Float? totalKm Float? startBegin String? startEnd String? target String? targetBegin String? empty String? hasInfection Boolean @default(false) infectionName String? revenueDispoLive Float? billDate DateTime? billNumber String? revenue Float @default(0) revenueDeviation Float @default(0) consumptionCosts Float @default(0) createdAt DateTime? } model PatientStaging { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid id String? surname String? name String? street String? zip String? city String? birthday DateTime? healthinsuranceId String? healthinsurance String? careDegree String? disabilityMark1 String? disabilityMark2 String? } model AttendanceRegistrationStaging { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid attendanceRegistrationId Int employeeId Int dateTime DateTime event String } model PlannedTimeStaging { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid id Int employeeId Int firstname String? surname String? departmentName String? startDate DateTime endDate DateTime deleted Boolean mark String? } model WorkTimeStaging { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid id Int employeeId Int firstname String surname String departmentName String? startDate DateTime endDate DateTime } model EmployeeDyflexisStaging { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid id Int firstname String surname String contractStart DateTime contractEnd DateTime contractHoursWeek Float contractSalaryHour Float } model EmployeeDispoLiveStaging { internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid id String name String? surname String? personnelNumber String? // Personal ID aus Dyflexis qualification String? // ID personTransportCertificate DateTime? // yyyy-MM-dd } model Tour { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid done Boolean direction String carName String? operationId String @unique driverId String? driverName String? codriverId String? codriverName String? patientId String? patientName String? patientSurname String? patientStreet String? patientZip String? patientCity String? healthInsurance String? healthInsuranceNumber String? type String? category String? transportType String? ordinanceType String? rangeEndDate DateTime? startInstitution String? startStreet String? startZip String? startCity String? targetInstitution String? targetStreet String? targetZip String? targetCity String? startDate DateTime check Int @default(0) occupiedKm Float? totalKm Float? startBegin String? startEnd String? target String? targetBegin String? empty String? hasInfection Boolean @default(false) infectionName String? revenueDispoLive Float? billDate DateTime? billNumber String? revenue Float @default(0) consumptionCosts Float @default(0) revenueDeviation Float @default(0) createdAt DateTime? deletedAt DateTime? Ticket Ticket? @relation(fields: [ticketId], references: [id]) ticketId String? @db.Uuid } model Patient { id String @id surname String? name String? street String? zip String? city String? birthday DateTime? healthinsuranceId String? healthinsurance String? careDegree String? disabilityMark1 String? disabilityMark2 String? } enum TicketState { CREATED APPROVAL_REQUIRED READY DONE BILLABLE ARCHIVED } enum TicketValidationState { CREATED USER_INTERACTION_REQUIRED TD_UNCERTAIN DOCUMENTS_MISSING ARCHIVED } enum ApprovalState { UNKNOWN FREE REQUIRED REQUESTED APPROVED } model Ticket { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid tours Tour[] state TicketStateHistory[] currentState TicketValidationState notes String[] errors String[] isUrgent Boolean @default(false) urgency DateTime @default("2099-12-31T23:59:59.999Z") approvalState ApprovalState? documentInfo Json? @default("{\"approval\": {\"isNeeded\": null, \"whoRequested\": \"\",\"answeredFrom\": \"\"},\"tdLocation\": \"\"}") createdAt DateTime @default(now()) } model TicketStateHistory { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid state TicketValidationState createdAt DateTime @default(now()) Ticket Ticket @relation(fields: [ticketId], references: [id]) ticketId String @db.Uuid } model AttendanceRegistration { attendanceRegistrationId Int @id employeeId Int personnelNumber String dateTime DateTime event String } model WorkTime { id String @id userId String firstname String surname String startDate DateTime? endDate DateTime? department String? pause Int duration Int } model PlannedTime { id String @id userId String firstname String? surname String? startDate DateTime? endDate DateTime? department String? pause Int duration Int note String? } model Employee { id String @id name String surname String personnelNumber String? mobile String? qualification String? occuptationalHealthExamination DateTime? personTransportCertificate DateTime? } model DyflexisEmployee { id Int @id firstname String surname String contractStart DateTime contractEnd DateTime? contractHoursWeek Float contractSalaryHour Int } enum CostTypeVariant { NACHTZUSCHLAG WOCHENENDZUSCHLAG FEIERTAGSZUSCHLAG DESINFEKTIONSZUSCHLAG KILOMETERZUSCHLAG FAHRZEUGZUSCHLAG TSWDIFFERENZIERUNG GRUNDPREIS } model AvicennaTenant { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid healthInsuranceNumber String name String tariffGroups TariffGroup[] } model TariffGroup { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid description String ordinanceType String tenants AvicennaTenant[] tariffs Tariff[] } model Tariff { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid validFrom DateTime? validTo DateTime? costTypes CostType[] tariffGroup TariffGroup? @relation(fields: [tariffGroupId], references: [id]) tariffGroupId String? @db.Uuid } model CostType { id String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid description String variant CostTypeVariant costAmount Int timeRange String? kmInclusive Int? excludeCarNames String[] infectionType String? tariff Tariff? @relation(fields: [tariffId], references: [id]) tariffId String? @db.Uuid } model Trace { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid type String entityKey String createdAt DateTime @default(now()) } model Anomaly { id String @id type String description String groupKey String groupDescription String workedOnBy String sleepTimer Int sleepSince DateTime? solution SolutionTarget[] @relation() resolvedAt DateTime? manuallyResolved Boolean @default(false) createdAt DateTime @default(now()) } model SolutionTarget { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid name String steps SolutionTargetStep[] @relation() anomaly Anomaly? @relation(fields: [anomalyId], references: [id]) anomalyId String? } model SolutionTargetStep { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid description String solutionTarget SolutionTarget? @relation(fields: [solutionTargetId], references: [id]) solutionTargetId String? @db.Uuid }