// 模拟捐献进程数据 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 };