avicenna/service/data-hub/data-connector/prisma/schema.prisma

615 lines
16 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?
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?
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?
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?
updatedAt 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
GRUNDPREIS_ZEIT
PRIVATVERSICHERUNG
}
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
}