|
@ -1,9 +1,23 @@ |
|
|
```mermaid |
|
|
```mermaid |
|
|
classDiagram |
|
|
classDiagram |
|
|
class A8kConsumableContainer |
|
|
|
|
|
class TipContainer |
|
|
|
|
|
class ReactionPlateContainer |
|
|
|
|
|
class LittBottleContainer |
|
|
|
|
|
|
|
|
%% 全局耗材容器 |
|
|
|
|
|
class A8kConsumableContainer |
|
|
|
|
|
class TipContainer { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
class ReactionPlateContainer { |
|
|
|
|
|
} |
|
|
|
|
|
class LittBottleContainer { |
|
|
|
|
|
public Integer projId; //项目ID |
|
|
|
|
|
public String projName; //项目名称 |
|
|
|
|
|
public String projShortName;//项目缩写名称 |
|
|
|
|
|
public LittleBottleConsumableType type; |
|
|
|
|
|
public String lotId = ""; //批次号 |
|
|
|
|
|
public String color = ""; //颜色 |
|
|
|
|
|
public Integer num = 0; |
|
|
|
|
|
public Integer reserveNum = 0; |
|
|
|
|
|
public Boolean isInstall = false; |
|
|
|
|
|
} |
|
|
class LarBottleContainer |
|
|
class LarBottleContainer |
|
|
|
|
|
|
|
|
A8kConsumableContainer "1" --> "3" TipContainer |
|
|
A8kConsumableContainer "1" --> "3" TipContainer |
|
@ -12,7 +26,11 @@ classDiagram |
|
|
A8kConsumableContainer "1" --> "6" LarBottleContainer |
|
|
A8kConsumableContainer "1" --> "6" LarBottleContainer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ConsumablesMgrService |
|
|
|
|
|
|
|
|
class ConsumablesMgrService { |
|
|
|
|
|
+ unInstallConsumable() // 卸载耗材 |
|
|
|
|
|
+ useReserveConsumable() // 使用耗材 |
|
|
|
|
|
+ reserveConsumable() // 预留耗材 |
|
|
|
|
|
} |
|
|
ConsumablesMgrService --> A8kConsumableContainer |
|
|
ConsumablesMgrService --> A8kConsumableContainer |
|
|
|
|
|
|
|
|
class ConsumableInfo { |
|
|
class ConsumableInfo { |
|
@ -21,12 +39,249 @@ classDiagram |
|
|
public Integer pos; // 当前耗材信息属于哪个耗材组 |
|
|
public Integer pos; // 当前耗材信息属于哪个耗材组 |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
```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 |
|
|
|
|
|
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 { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
```mermaid |
|
|
```mermaid |
|
|
--- |
|
|
--- |
|
|
title: 耗材状态更新机制 |
|
|
|
|
|
|
|
|
title: 一次检测时序图 |
|
|
--- |
|
|
--- |
|
|
|
|
|
|
|
|
sequenceDiagram |
|
|
sequenceDiagram |
|
|