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