erDiagram
hospital ||--o{ department : contains
hospital ||--o{ device : owns
hospital ||--o{ contract : signs
hospital ||--o{ settlement : settles
department ||--o{ device : houses
department ||--o{ work_order : reports
device ||--o{ work_order : triggers
device ||--o{ maintenance_plan : scheduled
device ||--o{ inspection_record : inspected
device }o--|| device_category : classified
device }o--|| supplier : supplied_by
work_order ||--o{ work_order_log : logs
work_order ||--o{ parts_requisition : requires
work_order }o--|| engineer : assigned_to
work_order ||--o| satisfaction : rated
work_order ||--o{ settlement_item : billed
engineer ||--o{ work_order : handles
engineer ||--o{ engineer_track : tracked
engineer ||--o{ inspection_record : performs
parts ||--o{ parts_inventory : stocked
parts }o--|| parts_category : categorized
parts }o--|| supplier : provided_by
parts_inventory }o--|| parts_warehouse : stored_in
parts_warehouse }o--o| hospital : located_at
parts_requisition ||--o{ parts_requisition_item : includes
parts_requisition_item }o--|| parts : references
supplier ||--o{ parts : supplies
supplier ||--o{ contract : contracted
supplier ||--o{ settlement : settles_with
contract ||--o{ maintenance_plan : schedules
settlement ||--o{ settlement_item : details
region ||--o{ hospital : covers
inspection_plan ||--o{ inspection_record : generates
hospital {
int id PK
string name
string code
string level
int regionId FK
string address
string contactPerson
string contactPhone
int status
}
department {
int id PK
int hospitalId FK
string name
string floor
string building
string contactPerson
int status
}
device {
int id PK
int hospitalId FK
int departmentId FK
int categoryId FK
int supplierId FK
string name
string model
string brand
string serialNumber
string assetCode
string qrCode
date purchaseDate
date warrantyExpireDate
int status
string photoUrl
}
device_category {
int id PK
string name
string code
int parentId
int level
int orderNum
int status
}
work_order {
int id PK
string orderNo UK
int hospitalId FK
int departmentId FK
int deviceId FK
int reportUserId FK
int assignedEngineerId FK
int faultType
string faultDescription
json faultImages
int urgency
int status
int source
decimal estimatedCost
decimal actualCost
}
work_order_log {
int id PK
int workOrderId FK
int action
string operator
string remark
json images
datetime createTime
}
engineer {
int id PK
int userId FK
string name
string phone
int type
json skills
json certifications
decimal rating
int totalOrders
int status
}
engineer_track {
int id PK
int engineerId FK
decimal longitude
decimal latitude
string address
datetime reportTime
}
parts {
int id PK
string name
string partNo
string brand
int categoryId FK
int supplierId FK
decimal price
int status
}
parts_category {
int id PK
string name
string code
int parentId
int orderNum
int status
}
parts_inventory {
int id PK
int partsId FK
int warehouseId FK
int quantity
int safetyStock
datetime lastInDate
}
parts_warehouse {
int id PK
string name
int hospitalId FK
string address
string manager
string phone
int status
}
parts_requisition {
int id PK
string requisitionNo
int workOrderId FK
int engineerId FK
int warehouseId FK
int status
datetime applyTime
datetime approveTime
}
parts_requisition_item {
int id PK
int requisitionId FK
int partsId FK
int quantity
decimal unitPrice
string returnStatus
}
supplier {
int id PK
string name
string code
int type
string contactPerson
string contactPhone
decimal rating
int status
}
contract {
int id PK
string contractNo
int hospitalId FK
int supplierId FK
json deviceIds
int type
date startDate
date endDate
decimal amount
int status
}
maintenance_plan {
int id PK
int deviceId FK
int contractId FK
string planName
int cycleType
int cycleDays
date nextDate
int status
}
settlement {
int id PK
string settlementNo
int type
int targetId
string period
decimal totalAmount
int orderCount
int status
}
settlement_item {
int id PK
int settlementId FK
int workOrderId FK
decimal laborFee
decimal partsFee
decimal travelFee
decimal totalFee
}
notification {
int id PK
int workOrderId FK
string targetRole
string targetUserId
string title
string content
int isRead
datetime createTime
}
region {
int id PK
string name
string code
int parentId
int level
}
inspection_plan {
int id PK
string name
int hospitalId FK
json deviceIds
int frequency
int engineerId FK
int status
}
inspection_record {
int id PK
int planId FK
int deviceId FK
int engineerId FK
int result
string remark
json images
datetime inspectTime
}
satisfaction {
int id PK
int orderId FK
int userId FK
int responseSpeed
int technicalAbility
int serviceAttitude
int repairEffect
int overall
string comment
}
knowledge {
int id PK
string title
int categoryId
string content
json tags
int viewCount
int status
}