qrcode.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  2. * 二维码相关类型定义
  3. */
  4. /**
  5. * 二维码数据格式
  6. * 用于定义二维码中包含的患者和检查信息
  7. */
  8. export interface QRCodeData {
  9. // 基础患者信息(必填)
  10. patient_id: string; // 患者ID
  11. patient_name: string; // 患者姓名
  12. patient_sex: string; // 性别: 'M', 'F', 'O'
  13. // 年龄信息(可选,如果提供则会覆盖 patient_dob)
  14. patient_age?: {
  15. number: number; // 数值
  16. unit: 'D' | 'M' | 'Y'; // 单位:天/月/年
  17. };
  18. // 出生日期(可选,如果提供 patient_age 则优先使用 age)
  19. patient_dob?: string; // ISO 8601 格式
  20. // 扩展信息(可选)
  21. accession_number?: string; // 检查号
  22. patient_size?: string; // 患者尺寸: 'Small', 'Medium', 'Large'
  23. weight?: number; // 体重(kg)
  24. thickness?: number; // 厚度(cm)
  25. length?: number; // 身高(cm)
  26. ref_physician?: string; // 医师
  27. operator_id?: string; // 操作员
  28. comment?: string; // 备注
  29. // 宠物专用字段(可选)
  30. owner_name?: string; // 宠物主人
  31. variety?: string; // 品种
  32. chip_number?: string; // 芯片号
  33. sex_neutered?: 'ALTERED' | 'UNALTERED'; // 绝育状态
  34. // 人医专用字段(可选)
  35. pregnancy_status?: 'NOT_PREGNANT' | 'POSSIBLY_PREGNANT' | 'DEFINITELY_PREGNANT' | 'UNKNOWN';
  36. // 体位信息(可选,如果存在则自动进入检查)
  37. views?: Array<{
  38. view_id: string; // 体位ID
  39. procedure_id: string; // 协议ID
  40. }>;
  41. }
  42. /**
  43. * 二维码扫描状态
  44. * 用于 Redux 状态管理
  45. */
  46. export interface QRCodeScanState {
  47. isScanning: boolean; // 是否正在扫描
  48. isProcessing: boolean; // 是否正在处理数据
  49. error: string | null; // 错误信息
  50. lastScanData: QRCodeData | null; // 最后扫描的数据
  51. autoRegisterPending: boolean; // 是否等待自动注册
  52. }
  53. /**
  54. * 数据验证结果
  55. */
  56. export interface ValidationResult {
  57. success: boolean; // 验证是否成功
  58. errors: string[]; // 错误列表
  59. warnings: string[]; // 警告列表
  60. }