700 lines
18 KiB
Plaintext
700 lines
18 KiB
Plaintext
// 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 = "../src/core/database"
|
|
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'
|
|
lastUpdate 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?
|
|
stammVersNr 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
|
|
|
|
overRTW String?
|
|
companyName String?
|
|
schwerlast String?
|
|
}
|
|
|
|
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
|
|
contract_type_name 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?
|
|
stammVersNr 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?
|
|
insuranceNo 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)
|
|
|
|
overRTW Boolean @default(false)
|
|
companyName String?
|
|
schwerlast Boolean @default(false)
|
|
|
|
createdAt DateTime?
|
|
updatedAt 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?
|
|
insuranceNo 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
|
|
personnelNumber String? @default("")
|
|
}
|
|
|
|
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?
|
|
pause Int
|
|
duration Int
|
|
}
|
|
|
|
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
|
|
pause Int
|
|
duration Int
|
|
}
|
|
|
|
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
|
|
contractTypeName String?
|
|
}
|
|
|
|
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?
|
|
insuranceNo 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)
|
|
|
|
overRTW Boolean @default(false)
|
|
companyName String?
|
|
schwerlast Boolean @default(false)
|
|
|
|
createdAt DateTime?
|
|
updatedAt DateTime?
|
|
deletedAt DateTime?
|
|
Ticket Ticket? @relation(fields: [ticketId], references: [id])
|
|
ticketId String? @db.Uuid
|
|
}
|
|
|
|
model TourFile {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
tourId String
|
|
ticketId String
|
|
|
|
storagePath String
|
|
originalFilename String
|
|
mimeType String
|
|
fileSizeBytes Int
|
|
|
|
dlUploadStatus String @default("pending")
|
|
|
|
createdAt DateTime? @default(now())
|
|
|
|
@@unique([tourId, ticketId])
|
|
}
|
|
|
|
model Patient {
|
|
id String @id
|
|
surname String?
|
|
name String?
|
|
street String?
|
|
zip String?
|
|
city String?
|
|
|
|
birthday DateTime?
|
|
healthinsuranceId String?
|
|
healthinsurance String?
|
|
insuranceNo 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 @db.Uuid
|
|
patientId String? @db.Uuid
|
|
stage String
|
|
|
|
approvalRequirement String
|
|
approvalStatus String
|
|
approvalRequestedAt DateTime?
|
|
approvalLastInteractionAt DateTime?
|
|
approvalReminderCount Int @default(0)
|
|
approvalRecipient String?
|
|
approvalPreInquiryMessageId String?
|
|
approvalFullRequestMessageId String?
|
|
approvalIsOverriden Boolean @default(false)
|
|
|
|
hasPhysicalTransportDocument Boolean @default(false)
|
|
hasDigitalTransportDocument Boolean @default(false)
|
|
|
|
updatedAt DateTime? @updatedAt
|
|
createdAt DateTime @default(now())
|
|
|
|
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\": \"\"}")
|
|
}
|
|
|
|
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 {
|
|
internalId String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
id Int
|
|
firstname String
|
|
surname String
|
|
contractStart DateTime
|
|
contractEnd DateTime?
|
|
contractDaysWeek Int @default(0)
|
|
contractHoursWeek Float
|
|
contractSalaryHour Float
|
|
contractTypeName String?
|
|
}
|
|
|
|
model Sickdays {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
start DateTime
|
|
end DateTime
|
|
hours Float
|
|
days Int
|
|
note String?
|
|
locked Boolean
|
|
|
|
employeeId Int
|
|
}
|
|
|
|
model Holiday {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
date DateTime
|
|
locked Boolean
|
|
excludedFromPayroll Boolean
|
|
|
|
employeeId Int
|
|
}
|
|
|
|
enum CostTypeVariant {
|
|
NACHTZUSCHLAG
|
|
WOCHENENDZUSCHLAG
|
|
FEIERTAGSZUSCHLAG
|
|
DESINFEKTIONSZUSCHLAG
|
|
KILOMETERZUSCHLAG
|
|
FAHRZEUGZUSCHLAG
|
|
TSWDIFFERENZIERUNG
|
|
GRUNDPREIS
|
|
GRUNDPREIS_ZEIT
|
|
PRIVATVERSICHERUNG
|
|
TRAGEHILFE
|
|
}
|
|
|
|
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
|
|
associatedEntities Json? @default("{}")
|
|
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
|
|
}
|