/** * 演示数据目录:文书 / 科室 / 院区。 * * 为什么单独抽一份:签署记录查询与报表分析都要按「文书 → 科室 / 类别」、 * 「科室 → 院区」做归类统计。两处各写一份目录,改一个文书名就会让记录页与 * 报表页的口径对不上 —— 这种漂移不会报错,只会让数字悄悄对不齐。所以目录 * 只在这里维护一份,两边都从这里取。 * * 记录与报表引用的是「签署当时那一版」文书,可能与当前文库不同(模板停用、 * 改版、归档都会让历史指向一份现在查不到的文书),因此目录自带文书名与类别, * 不靠当前文库反查。 */ import type { WorkbenchCampus } from './types' export interface MockDocumentDef { id: string name: string category: string department: string /** 该文书的风险告知条款(演示正文用) */ items: string[] } export const mockDocumentCatalog: MockDocumentDef[] = [ { id: 'mock-doc-cardiac', name: '心脏介入手术知情同意书', category: '知情同意书', department: '心内科', items: [ '术中、术后可能发生心律失常、心肌缺血甚至心肌梗死。', '穿刺部位可能出现血肿、假性动脉瘤或动静脉瘘。', '可能发生造影剂过敏反应,严重者可出现过敏性休克。', '存在麻醉意外、血管破裂、血栓形成与栓塞等风险。', '术后需按医嘱卧床、服药并按时复诊,擅自停药可能危及生命。', ], }, { id: 'mock-doc-mri', name: 'MRI 磁共振检查知情同意书', category: '知情同意书', department: '医学影像科', items: [ '体内有心脏起搏器、金属植入物、动脉瘤夹者不得进入检查室。', '检查中机器噪声较大,请配合佩戴耳塞并保持体位不动。', '使用对比剂时可能出现恶心、皮疹等不良反应,极少数可发生严重过敏。', '危重患者、不能配合者可能无法完成检查或需改期。', '检查结果由诊断医师出具,最终以正式报告为准。', ], }, { id: 'mock-doc-endoscopy', name: '内镜检查知情同意书', category: '知情同意书', department: '消化内科', items: [ '检查过程中可能出现咽喉不适、恶心、腹胀或轻度腹痛。', '极少数情况下可能发生出血、穿孔等并发症,需进一步处理。', '麻醉或镇静下检查存在呼吸抑制、误吸等风险。', '检查中可能根据所见情况取活检或行息肉切除。', '若检查前准备不充分,可能影响观察效果或需要重新检查。', ], }, { id: 'mock-doc-narcotic', name: '麻醉药品、精神药品知情同意书', category: '知情同意书', department: '麻醉科·精神科', items: [ '麻精药品具有成瘾性(依赖性)风险,须严格按照医嘱使用。', '不得套开、转借或转售麻精药品,转售涉嫌毒品犯罪。', '需按医嘱定期复诊,长期使用者至少每 3 个月复诊一次。', '过期、未使用的药品及废贴、空安瓿应交回医疗机构销毁。', '可能出现恶心、呕吐、便秘、头晕、嗜睡、呼吸抑制等不良反应。', ], }, { id: 'mock-doc-surgery', name: '手术麻醉风险告知书', category: '风险告知书', department: '普外科', items: [ '麻醉过程中可能出现呼吸循环波动、药物过敏或困难气道。', '术中可能因病情变化扩大手术范围或改变手术方式。', '术后可能发生出血、感染、切口愈合不良或深静脉血栓。', '合并基础疾病者发生并发症的风险相应升高。', '术后需配合镇痛、早期活动与康复训练。', ], }, { id: 'mock-doc-blood', name: '输血治疗风险告知书', category: '风险告知书', department: '血液科', items: [ '可能出现发热、寒战、皮疹等输血反应。', '极少数情况下可能发生溶血反应或输血相关急性肺损伤。', '虽经严格筛查,仍存在窗口期病原体传播的极小概率。', '大量输血可能引起凝血功能异常、电解质紊乱。', '输血过程中请勿擅自离开病区,出现不适请立即告知医护人员。', ], }, { id: 'mock-doc-admission', name: '住院须知及告知书', category: '入院告知', department: '医务处', items: [ '住院期间请遵守病区管理要求,不得擅自离院或外宿。', '请如实告知既往病史、过敏史与用药情况。', '贵重物品请自行妥善保管,避免带入大量现金。', '医疗费用按医保政策与医院规定结算,欠费可能影响治疗安排。', '诊疗方案可能根据病情变化调整,调整前会与患者或家属沟通。', ], }, { id: 'mock-doc-emergency', name: '入院告知书(急诊留观)', category: '入院告知', department: '急诊科', items: [ '留观期间病情可能随时变化,需配合医护人员密切观察。', '留观不等同于住院,如需住院将另行办理手续。', '部分检查结果出具需要时间,请耐心等待并保持联系方式畅通。', '如病情加重需转入抢救室或重症监护病房,将另行告知。', '离院需经医师评估同意,擅自离院可能延误诊治。', ], }, ] /** 科室所属院区:演示数据按科室归属派生院区,不必逐条重复写一遍 */ export const mockDepartmentCampus: Record = { 心内科: '本部院区', 消化内科: '本部院区', '麻醉科·精神科': '本部院区', 医务处: '本部院区', 医学影像科: '东院区', 急诊科: '东院区', 普外科: '西院区', 血液科: '西院区', } export const mockDocumentById = new Map( mockDocumentCatalog.map((document) => [document.id, document]), ) /** 演示科室清单(筛选下拉用):只列演示数据里出现过的科室,选了必定有结果 */ export const mockCatalogDepartments: string[] = [ ...new Set(mockDocumentCatalog.map((document) => document.department)), ] /** 演示文档类别清单(筛选下拉用) */ export const mockCatalogCategories: string[] = [ ...new Set(mockDocumentCatalog.map((document) => document.category)), ] /** * 按科室取院区。 * 演示数据按科室归属派生院区,不必逐条重复写一遍;取不到时回落到本部院区, * 免得漏配一条映射就让某个科室在报表里变成「无院区」。 */ export function campusOfDepartment(department: string): WorkbenchCampus { return mockDepartmentCampus[department] ?? '本部院区' }