为HIS数据模块增加同步任务管理前端菜单,支持:
SyncEngine.cls 已实现:
IncrementalSync - 增量同步(回溯N天)FullSync - 全量同步(指定日期范围)GetLastSyncTime / UpdateLastSyncTime - 同步时间管理SaveSyncLog - 同步日志保存Interface.cls 已有接口:
02010067 - 获取HIS住院患者数据02010075 - 查询已同步患者02010076 - 查询患者详情02010077 - 查询同步日志DataSync.tsx - 数据同步监控(基础的手动同步)SyncedPatients.tsx - 已同步患者查询SyncLog.tsx - 同步日志查询Interface.cls)| 接口码 | 方法名 | 说明 |
|---|---|---|
| 02010078 | ExecuteSyncTask |
手动执行同步任务(增量/全量) |
| 02010079 | GetSyncConfig |
查询同步配置 |
| 02010080 | SaveSyncConfig |
保存同步配置(频率、类型等) |
| 02010081 | GetSyncStatus |
查询同步状态(最后同步时间、是否正在同步) |
SyncTaskService.cls)Class src.DRG.HISData.SyncTaskService Extends (%RegisteredObject, %XML.Adaptor)
{
/// 执行同步任务(接口02010078)
/// pParams: {"syncType":"incremental|full", "startDate":"", "endDate":""}
ClassMethod ExecuteSyncTask(jsonObj) As %Library.DynamicObject
/// 查询同步配置(接口02010079)
ClassMethod GetSyncConfig(jsonObj) As %Library.DynamicObject
/// 保存同步配置(接口02010080)
ClassMethod SaveSyncConfig(jsonObj) As %Library.DynamicObject
/// 查询同步状态(接口02010081)
ClassMethod GetSyncStatus(jsonObj) As %Library.DynamicObject
}
BSHISSyncConfig)Class User.BSHISSyncConfig Extends (%Persistent)
{
Property HospID As %String; // 医院ID
Property SyncType As %String; // 同步类型:incremental/full
Property Frequency As %String; // 频率:manual/hourly/daily/weekly
Property ScheduledTime As %String; // 定时时间(daily: "00:00", weekly: "1,00:00")
Property LookbackDays As %Integer; // 增量同步回溯天数
Property Enabled As %Boolean; // 是否启用
Property LastSyncTime As %TimeStamp; // 最后同步时间
Property Status As %String; // 状态:idle/running/error
}
DataSync.tsx - 数据同步监控页面现有功能:手动选择日期范围,调用02010067同步数据
扩展功能:
SyncTaskConfig.tsx - 同步任务配置页面功能:
SyncLog.tsx - 同步日志查询(已存在,无需修改)在 App.tsx 的"HIS数据"菜单下添加:
HIS数据
├── 数据同步监控 (已有)
├── 同步任务配置 (新增)
├── 已同步患者查询 (已有)
└── 同步日志查询 (已有)
User.BSHISSyncConfig 类src.DRG.HISData.SyncTaskService 类ExecuteSyncTask 方法(调用SyncEngine)GetSyncConfig / SaveSyncConfig 方法GetSyncStatus 方法src.DRG.HISData.Interface 类DataSync.tsx 扩展同步功能SyncTaskConfig.tsx 同步任务配置页面hisData.tsApp.tsx 添加菜单项src/src/User/BSHISSyncConfig.cls - 同步配置表类src/src/DRG/HISData/SyncTaskService.cls - 同步任务服务类frontend/src/pages/HIS/SyncTaskConfig.tsx - 同步任务配置页面frontend/src/api/hisData.ts - 添加新接口API定义(修改)src/src/DRG/HISData/Interface.cls - 添加4个新接口方法frontend/src/pages/HIS/DataSync.tsx - 扩展同步功能frontend/src/App.tsx - 添加菜单和路由请求:
{
"code": "02010078",
"params": [{
"syncType": "incremental",
"lookbackDays": 3,
"startDate": "",
"endDate": ""
}],
"session": [{"hospID": "13"}]
}
响应:
{
"errorCode": "0",
"errorMessage": "同步完成",
"result": {
"successCount": 10,
"failedCount": 0,
"totalCount": 10,
"startTime": "2026-06-15 00:00:00",
"endTime": "2026-06-16 11:58:00"
}
}
请求:
{
"code": "02010079",
"params": [{"hospID": "13"}],
"session": [{"hospID": "13"}]
}
响应:
{
"errorCode": "0",
"errorMessage": "",
"result": {
"id": "1",
"hospID": "13",
"syncType": "incremental",
"frequency": "daily",
"scheduledTime": "00:00",
"lookbackDays": 3,
"enabled": true
}
}
请求:
{
"code": "02010080",
"params": [{
"id": "",
"syncType": "incremental",
"frequency": "daily",
"scheduledTime": "00:00",
"lookbackDays": 3,
"enabled": true
}],
"session": [{"userID": "158", "hospID": "13"}]
}
请求:
{
"code": "02010081",
"params": [{"hospID": "13"}],
"session": [{"hospID": "13"}]
}
响应:
{
"errorCode": "0",
"errorMessage": "",
"result": {
"status": "idle",
"lastSyncTime": "2026-06-15 00:00:00",
"lastSyncStatus": "success",
"nextSyncTime": "2026-06-17 00:00:00"
}
}
布局:
┌─────────────────────────────────────────────────────┐
│ 数据同步监控 │
├─────────────────────────────────────────────────────┤
│ [同步类型] 增量同步 ○ 全量同步 ○ │
│ [增量选项] 回溯天数:[3] 天 │
│ [全量选项] 开始日期:____ 结束日期:____ │
│ [操作按钮] [立即同步] [刷新状态] │
│ [状态显示] 最后同步:2026-06-15 00:00:00 │
│ 当前状态:空闲 │
│ [进度显示] █████████████░░ 80% │
│ [结果表格] 患者列表(调用02010067返回) │
└─────────────────────────────────────────────────────┘
布局:
┌─────────────────────────────────────────────────────┐
│ 同步任务配置 │
├─────────────────────────────────────────────────────┤
│ 同步类型配置: │
│ □ 增量同步 │
│ 回溯天数:[3] 天 │
│ □ 全量同步 │
│ 开始日期:____ 结束日期:____ │
│ │
│ 同步频率配置: │
│ ○ 手动执行 │
│ ○ 每小时 │
│ ○ 每天 [00:00 ▼] │
│ ○ 每周 [周一 ▼] [00:00 ▼] │
│ ○ 自定义Cron:[输入框] │
│ │
│ □ 启用同步任务 │
│ │
│ [保存配置] [重置] │
│ │
│ 当前配置: │
│ 类型:增量同步 | 频率:每天0点 | 状态:已启用│
└─────────────────────────────────────────────────────┘
| 字段名 | 类型 | 说明 |
|---|---|---|
| ID | %String | 主键 |
| HospID | %String | 医院ID |
| SyncType | %String | 同步类型:incremental/full |
| Frequency | %String | 频率:manual/hourly/daily/weekly/custom |
| ScheduledTime | %String | 定时时间 |
| LookbackDays | %Integer | 增量同步回溯天数 |
| StartDate | %Date | 全量同步开始日期 |
| EndDate | %Date | 全量同步结束日期 |
| Enabled | %Boolean | 是否启用 |
| LastSyncTime | %TimeStamp | 最后同步时间 |
| Status | %String | 状态:idle/running/error |
| ErrorMessage | %String | 错误信息 |
| CreateUserDr | %String | 创建用户 |
| CreateDate | %Date | 创建日期 |
| UpdateUserDr | %String | 更新用户 |
| UpdateDate | %Date | 更新日期 |