/** * 二维码相关类型定义 */ /** * 二维码数据格式 * 用于定义二维码中包含的患者和检查信息 */ export interface QRCodeData { // 基础患者信息(必填) patient_id: string; // 患者ID patient_name: string; // 患者姓名 patient_sex: string; // 性别: 'M', 'F', 'O' // 年龄信息(可选,如果提供则会覆盖 patient_dob) patient_age?: { number: number; // 数值 unit: 'D' | 'M' | 'Y'; // 单位:天/月/年 }; // 出生日期(可选,如果提供 patient_age 则优先使用 age) patient_dob?: string; // ISO 8601 格式 // 扩展信息(可选) accession_number?: string; // 检查号 patient_size?: string; // 患者尺寸: 'Small', 'Medium', 'Large' weight?: number; // 体重(kg) thickness?: number; // 厚度(cm) length?: number; // 身高(cm) ref_physician?: string; // 医师 operator_id?: string; // 操作员 comment?: string; // 备注 // 宠物专用字段(可选) owner_name?: string; // 宠物主人 variety?: string; // 品种 chip_number?: string; // 芯片号 sex_neutered?: 'ALTERED' | 'UNALTERED'; // 绝育状态 // 人医专用字段(可选) pregnancy_status?: 'NOT_PREGNANT' | 'POSSIBLY_PREGNANT' | 'DEFINITELY_PREGNANT' | 'UNKNOWN'; // 体位信息(可选,如果存在则自动进入检查) views?: Array<{ view_id: string; // 体位ID procedure_id: string; // 协议ID }>; } /** * 二维码扫描状态 * 用于 Redux 状态管理 */ export interface QRCodeScanState { isScanning: boolean; // 是否正在扫描 isProcessing: boolean; // 是否正在处理数据 error: string | null; // 错误信息 lastScanData: QRCodeData | null; // 最后扫描的数据 autoRegisterPending: boolean; // 是否等待自动注册 } /** * 数据验证结果 */ export interface ValidationResult { success: boolean; // 验证是否成功 errors: string[]; // 错误列表 warnings: string[]; // 警告列表 }