1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
| // 模拟捐献进程数据
| const mockDonationProcessData = {
| caseInfo: {
| id: '202512001',
| caseNo: 'C202512001',
| hospitalNo: 'D202512001',
| donorName: '张三',
| gender: '0',
| age: 45,
| bloodType: 'A',
| diagnosis: '脑外伤',
| status: 'in_progress',
| createTime: '2025-12-01 08:00:00',
| registrant: '李协调员',
| currentStage: 'organ_allocation',
| // 新增基本信息
| height: 175,
| weight: 70,
| bloodPressure: '120/80',
| contactPerson: '张父',
| contactPhone: '13800138000',
| hospital: '青岛大学附属医院',
| department: '神经外科',
| attendingDoctor: '王主任'
| },
| processStages: [
| {
| key: 'donor_maintenance',
| name: '供者维护',
| status: 'completed',
| completeTime: '2025-12-01 10:00:00',
| updateTime: '2025-12-01 10:00:00',
| operator: '张医生',
| details: {
| maintenanceRecords: 5,
| lastCheckup: '2025-12-01 09:30:00',
| vitalSigns: {
| heartRate: 75,
| bloodPressure: '118/76',
| temperature: 36.5,
| oxygenSaturation: 98
| },
| medications: [
| { name: '多巴胺', dosage: '5μg/kg/min', time: '2025-12-01 08:00:00' },
| { name: '甘露醇', dosage: '125ml', time: '2025-12-01 09:00:00' }
| ],
| labResults: {
| wbc: 8.5,
| hgb: 12.5,
| plt: 250,
| na: 140,
| k: 4.0
| }
| }
| },
| {
| key: 'medical_assessment',
| name: '医学评估',
| status: 'completed',
| completeTime: '2025-12-02 14:30:00',
| updateTime: '2025-12-02 14:30:00',
| operator: '李主任',
| details: {
| assessmentItems: [
| { name: '神经系统评估', result: '脑死亡确认', status: 'completed' },
| { name: '心血管系统评估', result: '功能正常', status: 'completed' },
| { name: '呼吸系统评估', result: '呼吸机维持', status: 'completed' },
| { name: '肝肾功能评估', result: '功能良好', status: 'completed' },
| { name: '感染性疾病筛查', result: '阴性', status: 'completed' }
| ],
| imagingResults: {
| ctBrain: '脑水肿,脑干反射消失',
| chestXRay: '双肺清晰',
| abdominalUS: '肝胆胰脾未见异常'
| },
| conclusion: '符合器官捐献医学标准',
| contraindications: '无绝对禁忌症'
| }
| },
| {
| key: 'death_judgment',
| name: '死亡判定',
| status: 'completed',
| completeTime: '2025-12-03 09:15:00',
| updateTime: '2025-12-03 09:15:00',
| operator: '王医生',
| details: {
| judgmentType: '脑死亡判定',
| judgmentTime: '2025-12-03 09:00:00',
| doctors: ['张主任', '王医生'],
| testResults: [
| { test: '自主呼吸测试', result: '无自主呼吸', time: '2025-12-03 08:30:00' },
| { test: '瞳孔对光反射', result: '反射消失', time: '2025-12-03 08:45:00' },
| { test: '脑干听觉诱发电位', result: '脑干功能丧失', time: '2025-12-03 09:00:00' }
| ],
| certificateNo: 'SW20251203001',
| legalDocuments: ['死亡证明书', '脑死亡判定书']
| }
| },
| {
| key: 'donation_confirm',
| name: '捐献确认',
| status: 'completed',
| completeTime: '2025-12-03 11:00:00',
| updateTime: '2025-12-03 11:00:00',
| operator: '赵协调员',
| details: {
| familyConsent: {
| mainRelative: '张父',
| relationship: '父子',
| consentTime: '2025-12-03 10:45:00',
| consentForm: '已签署',
| witness: '李护士'
| },
| donationType: '多器官捐献',
| organs: ['肝脏', '肾脏', '心脏', '角膜'],
| legalDocuments: [
| '器官捐献同意书',
| '家属关系证明',
| '医疗免责声明'
| ],
| coordinator: '赵协调员',
| confirmationTime: '2025-12-03 11:00:00'
| }
| },
| {
| key: 'ethical_review',
| name: '伦理审查',
| status: 'in_progress',
| completeTime: '2025-12-03 15:20:00',
| updateTime: '2025-12-03 15:20:00',
| operator: '伦理委员会',
| details: {
| committee: '医院伦理审查委员会',
| meetingTime: '2025-12-03 14:00:00',
| members: ['张教授', '李主任', '王医生', '赵委员', '钱专家'],
| reviewItems: [
| { item: '捐献意愿真实性', result: '确认真实', vote: '全票通过' },
| { item: '医学评估准确性', result: '确认准确', vote: '全票通过' },
| { item: '法律文件完整性', result: '确认完整', vote: '全票通过' }
| ],
| conclusion: '符合伦理要求,同意进行器官捐献',
| resolutionNo: 'LL20251203001'
| }
| },
| {
| key: 'organ_allocation',
| name: '器官分配',
| status: 'pending',
| updateTime: '2025-12-04 10:00:00',
| operator: '分配系统',
| details: {
| allocationStartTime: '2025-12-04 09:00:00',
| allocationSystem: '中国人体器官分配与共享计算机系统',
| organs: [
| {
| organ: '肝脏',
| status: '分配中',
| matchScore: 95,
| recommendedRecipient: '王先生',
| recipientAge: 45,
| recipientBloodType: 'A',
| hospital: '青岛大学附属医院',
| urgency: '紧急'
| },
| {
| organ: '肾脏',
| status: '匹配完成',
| matchScore: 92,
| recommendedRecipient: '李女士',
| recipientAge: 38,
| recipientBloodType: 'A',
| hospital: '青岛市市立医院',
| urgency: '高'
| },
| {
| organ: '心脏',
| status: '待分配',
| matchScore: 88,
| recommendedRecipient: '陈先生',
| recipientAge: 52,
| recipientBloodType: 'O',
| hospital: '山东大学齐鲁医院',
| urgency: '紧急'
| }
| ],
| allocationFactors: [
| { factor: '病情危重程度', weight: 35 },
| { factor: '组织配型匹配', weight: 25 },
| { factor: '等待时间', weight: 15 },
| { factor: '地理因素', weight: 10 },
| { factor: '年龄因素', weight: 15 }
| ]
| }
| },
| {
| key: 'organ_procurement',
| name: '器官获取',
| status: 'pending',
| updateTime: '2025-12-03 16:00:00',
| operator: '待分配',
| details: {
| scheduledTime: '2025-12-04 14:00:00',
| operationRoom: '手术室一号',
| surgicalTeam: {
| surgeon: '待分配',
| assistant: '待分配',
| anesthesiologist: '待分配',
| nurse: '待分配'
| },
| preservationPlan: {
| method: '低温机械灌注',
| solution: 'UW保存液',
| temperature: '4°C'
| },
| organs: [
| {
| organ: '肝脏',
| planned: true,
| preservation: '待准备',
| estimatedTime: '4小时'
| },
| {
| organ: '肾脏',
| planned: true,
| preservation: '待准备',
| estimatedTime: '3小时'
| },
| {
| organ: '心脏',
| planned: true,
| preservation: '待准备',
| estimatedTime: '5小时'
| }
| ]
| }
| },
| {
| key: 'organ_utilization',
| name: '器官利用',
| status: 'pending',
| updateTime: '2025-12-03 16:00:00',
| operator: '待分配',
| details: {
| transplantCenters: [
| {
| hospital: '青岛大学附属医院',
| organ: '肝脏',
| recipient: '王先生',
| scheduledTime: '2025-12-04 18:00:00',
| surgicalTeam: '待确认'
| },
| {
| hospital: '青岛市市立医院',
| organ: '肾脏',
| recipient: '李女士',
| scheduledTime: '2025-12-04 19:00:00',
| surgicalTeam: '待确认'
| }
| ],
| followupPlan: {
| frequency: '术后1个月、3个月、6个月、1年',
| items: ['肝功能检查', '免疫抑制剂浓度', '影像学检查'],
| coordinator: '待分配'
| },
| qualityMetrics: {
| expectedSurvivalRate: 92,
| complicationRisk: '中等',
| successRate: 95
| }
| }
| }
| ],
| // 新增时间线事件
| timelineEvents: [
| {
| time: '2025-12-01 08:00:00',
| event: '案例登记',
| operator: '李协调员',
| description: '捐献案例正式登记启动'
| },
| {
| time: '2025-12-01 10:00:00',
| event: '供者维护完成',
| operator: '张医生',
| description: '完成供者生命体征维护和医疗管理'
| },
| {
| time: '2025-12-02 14:30:00',
| event: '医学评估完成',
| operator: '李主任',
| description: '全面医学评估确认符合捐献标准'
| },
| {
| time: '2025-12-03 09:15:00',
| event: '死亡判定完成',
| operator: '王医生',
| description: '脑死亡判定程序完成'
| },
| {
| time: '2025-12-03 11:00:00',
| event: '捐献确认完成',
| operator: '赵协调员',
| description: '家属签署捐献同意书'
| },
| {
| time: '2025-12-03 15:20:00',
| event: '伦理审查通过',
| operator: '伦理委员会',
| description: '伦理审查委员会全票通过'
| }
| ],
| // 新增统计信息
| statistics: {
| totalStages: 8,
| completedStages: 5,
| completionRate: 62.5,
| timeElapsed: '2天6小时',
| estimatedCompletion: '2025-12-04 20:00:00',
| organsToDonate: 4,
| potentialRecipients: 3
| }
| };
|
| // 获取捐献进程详情
| export const getDonationProcessDetail = async (caseId) => {
| await new Promise(resolve => setTimeout(resolve, 500));
|
| // 模拟根据caseId返回不同数据
| const data = JSON.parse(JSON.stringify(mockDonationProcessData));
| data.caseInfo.id = caseId;
|
| return {
| code: 200,
| message: 'success',
| data: data
| };
| };
|
| // 更新阶段状态
| export const updateStageStatus = async (caseId, stageKey, status) => {
| await new Promise(resolve => setTimeout(resolve, 300));
|
| // 模拟更新逻辑
| const stage = mockDonationProcessData.processStages.find(s => s.key === stageKey);
| if (stage) {
| stage.status = status;
| stage.updateTime = new Date().toISOString().replace('T', ' ').substring(0, 19);
|
| if (status === 'completed') {
| stage.completeTime = stage.updateTime;
| }
| }
|
| return {
| code: 200,
| message: '阶段状态更新成功',
| data: {
| caseId,
| stageKey,
| status,
| updateTime: stage.updateTime
| }
| };
| };
|
| // 获取阶段详情
| export const getStageDetail = async (caseId, stageKey) => {
| await new Promise(resolve => setTimeout(resolve, 200));
|
| const stage = mockDonationProcessData.processStages.find(s => s.key === stageKey);
| if (!stage) {
| return {
| code: 404,
| message: '阶段不存在',
| data: null
| };
| }
|
| return {
| code: 200,
| message: 'success',
| data: stage
| };
| };
|
| // 获取时间线事件
| export const getTimelineEvents = async (caseId) => {
| await new Promise(resolve => setTimeout(resolve, 150));
|
| return {
| code: 200,
| message: 'success',
| data: mockDonationProcessData.timelineEvents
| };
| };
|
| // 获取案例统计信息
| export const getCaseStatistics = async (caseId) => {
| await new Promise(resolve => setTimeout(resolve, 100));
|
| return {
| code: 200,
| message: 'success',
| data: mockDonationProcessData.statistics
| };
| };
|
| // 提交阶段审核
| export const submitStageReview = async (caseId, stageKey, reviewData) => {
| await new Promise(resolve => setTimeout(resolve, 400));
|
| return {
| code: 200,
| message: '审核提交成功',
| data: {
| caseId,
| stageKey,
| reviewId: `REV${Date.now()}`,
| submitTime: new Date().toISOString().replace('T', ' ').substring(0, 19),
| ...reviewData
| }
| };
| };
|
| // 上传阶段文件
| export const uploadStageFile = async (caseId, stageKey, fileInfo) => {
| await new Promise(resolve => setTimeout(resolve, 500));
|
| return {
| code: 200,
| message: '文件上传成功',
| data: {
| caseId,
| stageKey,
| fileId: `FILE${Date.now()}`,
| fileName: fileInfo.name,
| fileSize: fileInfo.size,
| uploadTime: new Date().toISOString().replace('T', ' ').substring(0, 19),
| url: `/files/${caseId}/${stageKey}/${fileInfo.name}`
| }
| };
| };
|
| export default {
| getDonationProcessDetail,
| updateStageStatus,
| getStageDetail,
| getTimelineEvents,
| getCaseStatistics,
| submitStageReview,
| uploadStageFile
| };
|
|