4 changed files with 270 additions and 234 deletions
-
64doc/孵育盘管理.md
-
257doc/耗材管理.md
-
183doc/试管及试管架管理.md
-
0doc/项目上下文管理.md
@ -0,0 +1,64 @@ |
|||
```mermaid |
|||
classDiagram |
|||
|
|||
%% 孵育盘状态管理器 |
|||
class IncubationPlateStateMgrService { |
|||
+ IncubationSubTank getOneExpiredPlate() // 获取一个孵育完成的插槽 |
|||
+ IncubatorPos takeOneIncubationIDLEPos() // 获取空闲的插槽位置 |
|||
} |
|||
|
|||
%% 孵育盘 |
|||
class IncubationPlate { |
|||
|
|||
} |
|||
|
|||
%% 孵育盘反应板插槽 |
|||
class IncubationSubTank { |
|||
|
|||
} |
|||
|
|||
%% 插槽位置 |
|||
class IncubatorPos { |
|||
|
|||
} |
|||
|
|||
%% 插槽状态 |
|||
class IncubationSubTankState { |
|||
EMPTY,//空 |
|||
RESERVED,//预定 |
|||
WAITING_FOR_DROP,//等待滴液 |
|||
INCUBATING, //孵育中 |
|||
INCUBATION_COMPLETE, //孵育完成 |
|||
ERROR,//错误 |
|||
} |
|||
<<enumeration>> IncubationSubTankState |
|||
|
|||
IncubationSubTank "1" --> "1" IncubatorPos |
|||
IncubationSubTank "1" --> "1" IncubationSubTankState |
|||
IncubationPlate "1" --> "20" IncubationSubTank |
|||
IncubationPlateStateMgrService --> IncubationPlate |
|||
``` |
|||
|
|||
```mermaid |
|||
--- |
|||
title: 孵育盘槽位状态变更图 |
|||
--- |
|||
stateDiagram-v2 |
|||
[*] --> EMPTY |
|||
RESERVED --> INCUBATING: startIncubating |
|||
INCUBATING --> INCUBATION_COMPLETE: scheduled_timeout[remainTimeSec < 0] |
|||
%% 当找到一个空闲的槽位时将其状态置为预留 |
|||
EMPTY --> RESERVED: takeOneIncubationIDLEPos |
|||
INCUBATION_COMPLETE --> EMPTY: reset |
|||
RESERVED --> EMPTY: reset |
|||
INCUBATING --> EMPTY: reset |
|||
``` |
|||
|
|||
```mermaid |
|||
classDiagram |
|||
|
|||
%% 项目上下文管理器 |
|||
class ProjectContextMgrService { |
|||
|
|||
} |
|||
``` |
@ -0,0 +1,183 @@ |
|||
|
|||
```mermaid |
|||
classDiagram |
|||
%% 试管状态管理器 |
|||
class TubeStateMgrService { |
|||
|
|||
} |
|||
|
|||
%% 试管设置 |
|||
class TubeSetting { |
|||
public int tubeIndex; // 试管位置索引 |
|||
|
|||
public String userid = ""; //用户输入的样本ID,不做逻辑,只做展示 |
|||
public String sampleBarcode = ""; //用于请求用户信息的条码ID |
|||
public List<Integer> projId = new ArrayList<>(); //项目编码,标明需要做的项目 |
|||
public BloodType bloodType = BloodType.WHOLE_BLOOD; |
|||
} |
|||
|
|||
%% 试管架设置管理器 |
|||
class TubeHolderSettingMgrService { |
|||
|
|||
} |
|||
|
|||
%% 试管架设置 |
|||
class TubeHolderSetting { |
|||
public String uuid = UUID.randomUUID().toString(); //唯一标识 |
|||
public Boolean active = false;//是否激活对应前端页面的☑️ |
|||
public TubeSetting[] tubeSettings = new TubeSetting[10]; // 试管设置 |
|||
public Boolean lock = false;//如果后台已经使用,前端不允许修改 |
|||
} |
|||
|
|||
TubeHolderSettingMgrService --> TubeHolderSetting |
|||
TubeHolderSetting "1" --> "10" TubeSetting |
|||
|
|||
%% 试管架设置状态 |
|||
class TubeHolderSettingState { |
|||
INACTIVE, |
|||
ACTIVE, |
|||
LOCKED |
|||
} |
|||
<<enumeration>> TubeHolderSettingState |
|||
|
|||
%% 试管架 |
|||
class TubeHolder { |
|||
|
|||
} |
|||
|
|||
%% 试管架状态 |
|||
class TubeHolderState { |
|||
IDLE, //没有试管架 |
|||
PROCESSING, //正在处理试管架 |
|||
} |
|||
<<enumeration>> TubeHolderState |
|||
|
|||
%% 试管架类型 |
|||
class A8kTubeHolderType { |
|||
BloodTube("0000"), //全血试管 |
|||
// MiniTube("1111"), //迷你试管 |
|||
MiniBlood("2222"), //阳普管 |
|||
BulletTube1P5("5555"),//子弹头试管1.5mL |
|||
BulletTube0P5("4444"), //子弹头试管0.5mL |
|||
StoolTestTube("8888"); //粪便试管 |
|||
} |
|||
<<enumeration>> A8kTubeHolderType |
|||
|
|||
TubeHolder --> TubeHolderState |
|||
TubeHolder "1" --> "10" Tube |
|||
TubeHolder --> A8kTubeHolderType |
|||
``` |
|||
|
|||
|
|||
```mermaid |
|||
--- |
|||
title: 新增试管架配置时序图 |
|||
--- |
|||
sequenceDiagram |
|||
actor user |
|||
participant TubeHolderSettingMgrControler |
|||
participant TubeHolderSettingMgrService |
|||
participant AppEventBusService |
|||
|
|||
user->>+TubeHolderSettingMgrControler: 添加试管架 |
|||
TubeHolderSettingMgrControler->>+TubeHolderSettingMgrService: newTubeHolderSetting() |
|||
TubeHolderSettingMgrService ->>-TubeHolderSettingMgrControler: 试管架配置 |
|||
TubeHolderSettingMgrService -->> AppEventBusService: 发送试管架配置更新消息 |
|||
TubeHolderSettingMgrControler ->>-user: 操作成功 |
|||
``` |
|||
|
|||
```mermaid |
|||
--- |
|||
title: 激活试管架时序图 |
|||
--- |
|||
sequenceDiagram |
|||
actor user |
|||
participant TubeHolderSettingMgrControler |
|||
participant TubeHolderSettingMgrService |
|||
|
|||
user ->>+ TubeHolderSettingMgrControler: 激活试管架 |
|||
TubeHolderSettingMgrControler ->>+ TubeHolderSettingMgrService: updateActiveState(String uuid, Boolean active) |
|||
TubeHolderSettingMgrService ->>- TubeHolderSettingMgrControler: void |
|||
TubeHolderSettingMgrControler ->>- user: 操作成功 |
|||
|
|||
``` |
|||
|
|||
```mermaid |
|||
--- |
|||
tilte: 扫描试管架任务时序图 |
|||
--- |
|||
sequenceDiagram |
|||
actor a8k |
|||
participant AC30ScanTubeHolderTask |
|||
participant TubeHolderSettingMgrService |
|||
participant AppEventBusService |
|||
|
|||
a8k->>+AC30ScanTubeHolderTask:doAction |
|||
AC30ScanTubeHolderTask->>+TubeHolderSettingMgrService:getThelastActiveTubeHolderSetting |
|||
TubeHolderSettingMgrService->>-AC30ScanTubeHolderTask:TubeHolderSetting |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:priDoAction(tubeSetting) |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEnterTubeHolder推入试管架 |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:推入结果 |
|||
alt 推入失败 |
|||
AC30ScanTubeHolderTask-->>AppEventBusService:发送推入试管架失败消息 |
|||
else 推入成功 |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doScanHolder |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:TubeHolderScanResult |
|||
end |
|||
|
|||
alt 扫描结果为空 |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEjectHodler |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
|||
else 扫描结果不为空 |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:parseScanResult(scanResult, tubeHolderSetting) |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:TubeHolder |
|||
end |
|||
|
|||
alt 试管扫描结果解析失败 |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEjectHodler |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
|||
else 扫描结果解析成功 |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:newTubeHolder(tubeholder) |
|||
AC30ScanTubeHolderTask->>+ConsumableStateAnalyzerService: analyze |
|||
ConsumableStateAnalyzerService->>-AC30ScanTubeHolderTask: 耗材状态信息(项目还有多少耗材,当前试管架需要多少项目多少耗材) |
|||
AC30ScanTubeHolderTask->>+ConsumableStateAnalyzerService: isEnough |
|||
alt 耗材不够 |
|||
ConsumableStateAnalyzerService->>-AC30ScanTubeHolderTask: 耗材不足错误 |
|||
end |
|||
AC30ScanTubeHolderTask->>+ConsumableStateAnalyzerService: isHasEnoughTip |
|||
alt Tip不足 |
|||
ConsumableStateAnalyzerService->>-AC30ScanTubeHolderTask: Tip头不足错误 |
|||
end |
|||
|
|||
|
|||
loop 试管个数 |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask: newSample(生成一条检验记录) |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask: 检验记录id |
|||
loop 项目个数 |
|||
AC30ScanTubeHolderTask->>+ProjectContextMgrService: newCxt(生产项目上下文) |
|||
ProjectContextMgrService->>-AC30ScanTubeHolderTask: void |
|||
end |
|||
end |
|||
|
|||
AC30ScanTubeHolderTask->>+TubeHolder: setState(TubeHolderState.PROCESSING) |
|||
TubeHolder->>-AC30ScanTubeHolderTask: void |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:AppError |
|||
end |
|||
|
|||
alt 存在系统错误 |
|||
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEjectHodler |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
|||
end |
|||
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
|||
AC30ScanTubeHolderTask->>-a8k: void |
|||
``` |
|||
|
|||
```mermaid |
|||
--- |
|||
title: 一次检测时序图 |
|||
--- |
|||
|
|||
sequenceDiagram |
|||
|
|||
|
|||
``` |
Write
Preview
Loading…
Cancel
Save
Reference in new issue