schema.md 5.1 KB

时序图

@startuml
title AI问诊服务时序图

actor User as U
participant AIDoctor as AD
participant Department as D
participant Consultation as C
participant Prescription as P

U -> U: 决定选择或创建AI医生
alt 选择已有医生
    U -> AD: 选择现有AI医生
else 创建新医生
    U -> AD: 输入医生属性信息创建新AI医生
end
U -> AD: 发起问诊,提供信息
AD -> AD: 接收用户信息
AD -> AD: 与用户对话
AD -> P: 生成处方
AD -> U: 返回对话结果及处方
U -> C: 创建问诊记录实例,关联相关对象(自身、医生、科室等)
C -> D: 获取科室信息(若需要完整记录科室情况)
D -> C: 返回科室信息
C -> C: 整合问诊信息(包含处方等)
C -> C: 保存到数据库
U -> C: 查询问诊记录(可按需指定查询条件)
C -> U: 返回相应问诊记录
@enduml

类图

@startuml
class User {
    - userId : int
    + selectExistingDoctor() : AIDoctor
    + createCustomDoctor(doctorInfo : Map<String, String>) : AIDoctor
    + startConsultation(doctor : AIDoctor) : void
    + viewConsultationRecords() : List<Consultation>
}

class AIDoctor {
    - objectid : int
    - avator : String
    - name : String
    - gender : String
    - age : int
    - title : String
    - qualications : String
    - desc : String
    - depart : String
    - specialty : String
    - scrid : int
    + haveConversation(userInfo : String) : String
    + generatePrescription() : Prescription
}

class Department {
    - objectid : int
    - desc : String
    - name : String
    - srcid : int
}

class Consultation {
    - objectid : int
    - user : User
    - content : String
    - doctor : AIDoctor
    - department : Department
    - title : String
    + saveToDatabase() : void
    + queryFromDatabase(queryParams : Map<String, String>) : Consultation
}

class Prescription {
    - prescriptionId : int
    - medicineList : List<String>
    - usageInstructions : String
}

User "1" --> "0..*" AIDoctor : selects/ creates
User "1" --> "0..*" Consultation : initiates/ views
AIDoctor "1" --> "1" Prescription : generates
Consultation "1" --> "1" Prescription : contains
Consultation "1" --> "1" Department : belongs to
@enduml

状态图

@startuml
[*] --> Initiated
state Initiated {
    [*] --> SelectingDoctor
    SelectingDoctor : 用户决定选择已有或创建新AI医生
    SelectingDoctor --> DoctorSelected : 完成医生选择
}
state DoctorSelected {
    [*] --> ProvidingInfo
    ProvidingInfo : 用户向选定医生提供问诊信息
    ProvidingInfo --> ConversationInProgress : 医生开始对话交流
}
state ConversationInProgress {
    [*] --> PrescriptionGenerated
    PrescriptionGenerated : AI医生生成处方
    PrescriptionGenerated --> ConversationFinished : 对话结束
}
state ConversationFinished {
    [*] --> CreatingRecord
    CreatingRecord : 创建问诊记录实例
    CreatingRecord --> SavingRecord : 整合记录信息
    SavingRecord --> RecordSaved : 保存到数据库
    RecordSaved --> [*]
}
@enduml
  • 在这个状态图中: [] 表示初始状态和最终状态(即整个流程开始前的状态和流程完整结束后的状态)。 从 Initiated 开始,代表问诊流程启动,首先进入 SelectingDoctor 状态,意味着用户要进行选择 AI 医生的操作,完成选择后进入 DoctorSelected 状态。 在 DoctorSelected 状态下,用户接着要提供问诊信息,进入 ProvidingInfo 状态,随后 AI 医生开始与之对话,进入 ConversationInProgress 状态。 当 AI 医生生成处方后,进入 PrescriptionGenerated 状态,对话结束后到达 ConversationFinished 状态。 最后在 ConversationFinished 状态下依次进行创建问诊记录、整合信息并保存记录的操作,最终达到 RecordSaved 状态,表示整个问诊记录成功保存到数据库,流程结束返回初始的结束状态 [] 。

活动图

@startuml
start
:用户发起问诊;
if (选择已有AI医生?) then (是)
    :选择已有的AI医生;
else (否)
    :输入信息创建新的AI医生;
endif
:用户提供问诊信息;
:AI医生接收信息并对话;
:AI医生生成处方;
:结束对话;
:创建问诊记录实例;
:关联用户、医生、科室等信息;
:整合问诊记录内容(包含处方);
:保存问诊记录到数据库;
:用户查询问诊记录;
stop
@enduml

在这个活动图中: 首先通过 “用户发起问诊” 活动开始整个流程。 接着通过一个条件判断分支来决定是选择已有 AI 医生还是创建新的 AI 医生,根据用户的选择执行相应的活动。 然后用户提供问诊信息后,AI 医生依次进行接收信息并对话、生成处方以及结束对话等活动。 后续开展创建问诊记录实例,并关联相关的用户、医生、科室等重要信息,再整合包含处方在内的问诊记录内容,接着将其保存到数据库中。 最后用户可以进行查询问诊记录的活动,整个流程结束。 此活动图从比较宏观的角度展示了 AI 问诊服务中主要的活动以及它们之间的先后顺序和逻辑关系,