62 lines
3.4 KiB
Go
62 lines
3.4 KiB
Go
|
|
package entity
|
|||
|
|
|
|||
|
|
import "time"
|
|||
|
|
|
|||
|
|
// EMR 电子病历实体(对应数据库表 emr)
|
|||
|
|
type EMR struct {
|
|||
|
|
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
|||
|
|
PatientID string `json:"patient_id" gorm:"index;not null"`
|
|||
|
|
DoctorID string `json:"doctor_id" gorm:"index"`
|
|||
|
|
Draft string `json:"draft" gorm:"type:text"` // 病历全文
|
|||
|
|
Structured string `json:"structured" gorm:"type:json"` // 结构化字段(JSON)
|
|||
|
|
Status string `json:"status" gorm:"index"` // success/need_revision/draft
|
|||
|
|
SessionID string `json:"session_id" gorm:"index"` // Agent会话ID
|
|||
|
|
IsFinal bool `json:"is_final" gorm:"default:false"` // 是否为最终版
|
|||
|
|
CreatedAt time.Time `json:"created_at"`
|
|||
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Prescription 处方实体(对应数据库表 prescription)
|
|||
|
|
type Prescription struct {
|
|||
|
|
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
|||
|
|
PatientID string `json:"patient_id" gorm:"index;not null"`
|
|||
|
|
DoctorID string `json:"doctor_id" gorm:"index"`
|
|||
|
|
SessionID string `json:"session_id" gorm:"index"`
|
|||
|
|
Draft string `json:"draft" gorm:"type:text"` // 处方全文
|
|||
|
|
FormulaName string `json:"formula_name"` // 方剂名
|
|||
|
|
Herbs string `json:"herbs" gorm:"type:json"` // 药材列表(JSON)
|
|||
|
|
Status string `json:"status" gorm:"index"` // success/blocked/need_review
|
|||
|
|
Blocked bool `json:"blocked" gorm:"default:false"` // 是否被规则拦截
|
|||
|
|
Warnings string `json:"warnings" gorm:"type:json"` // 警告列表(JSON)
|
|||
|
|
Approved bool `json:"approved" gorm:"default:false"` // 医生是否已审核
|
|||
|
|
ApprovedBy string `json:"approved_by"` // 审核医生ID
|
|||
|
|
CreatedAt time.Time `json:"created_at"`
|
|||
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// AuditLog 审计日志实体(对应数据库表 audit_log)
|
|||
|
|
// 记录所有关键操作,满足医疗合规要求
|
|||
|
|
type AuditLog struct {
|
|||
|
|
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
|||
|
|
Action string `json:"action" gorm:"index"` // emr_create/emr_update/rx_generate/rx_approve
|
|||
|
|
UserID string `json:"user_id" gorm:"index"` // 操作人
|
|||
|
|
TargetType string `json:"target_type"` // emr/prescription
|
|||
|
|
TargetID string `json:"target_id" gorm:"index"` // 目标ID
|
|||
|
|
Detail string `json:"detail" gorm:"type:text"` // 操作详情
|
|||
|
|
IPAddress string `json:"ip_address"` // 操作IP
|
|||
|
|
CreatedAt time.Time `json:"created_at"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// KnowledgeDoc 知识库文档实体(对应数据库表 knowledge_doc)
|
|||
|
|
type KnowledgeDoc struct {
|
|||
|
|
ID int64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
|||
|
|
Title string `json:"title" gorm:"index"`
|
|||
|
|
Category string `json:"category" gorm:"index"` // 方剂/药典/指南/病历模板
|
|||
|
|
Content string `json:"content" gorm:"type:longtext"`
|
|||
|
|
Source string `json:"source"` // 来源
|
|||
|
|
MaxKBID string `json:"maxkb_id"` // MaxKB中的文档ID
|
|||
|
|
Status string `json:"status" gorm:"default:pending"` // pending/vectorized/failed
|
|||
|
|
CreatedAt time.Time `json:"created_at"`
|
|||
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|||
|
|
}
|