2. LIMS核心功能与数据架构

LIMS 的验证与数据迁移,本质上都建立在对系统“功能边界”和“数据骨架”的准确理解之上。如果只把 LIMS 当作一个录数据的软件,验证就会停留在界面点击层面,迁移也会变成表对表的搬运。真正需要先看清的是:样品如何从接收走到报告,方法如何约束结果,仪器数据如何进入系统,审计追踪如何记录每一次变更,权限如何划分职责,以及主数据与事务数据如何分层。这一节围绕这些核心对象,建立一张可支撑后续验证与迁移工作的数据架构图。

样品生命周期:状态驱动的主线

样品生命周期是 LIMS 最核心的事务主线。典型状态包括:已登记(Registered)、已接收(Received)、待检(Pending)、检测中(In Testing)、结果录入(Result Entered)、复核中(In Review)、已批准(Approved)、已报告(Reported)、已归档(Archived),以及异常分支如拒收(Rejected)、留样(Retained)和销毁(Disposed)。状态不是装饰性标签,而是控制数据可见性、可编辑性和操作权限的开关。例如,样品进入“已批准”后,结果字段通常应锁定,任何修改必须走变更控制并留下审计记录。

状态迁移必须由明确事件触发,而不是任意跳转。常见触发条件包括:样品接收确认、任务分派、仪器结果回传、分析员提交、复核人批准、报告签发。验证时应重点测试非法迁移是否被阻止,例如未复核直接批准、已报告样品重新录入结果等。这些边界条件往往比正常路径更能暴露配置缺陷。

测试方法、结果与报告:从约束到输出

测试方法是结果的数据约束源。一个方法通常绑定:方法编号与版本、适用样品类型、检测项目、单位、有效数字或修约规则、检出限/定量限、规格限、计算公式、允差以及所需仪器类型。方法版本必须与结果记录关联,否则历史结果无法解释。例如,某方法版本将铅的限值从 2.0 mg/kg 调整为 1.5 mg/kg,若结果记录不保存方法版本,就无法判断当时判定依据。

结果数据分为原始结果、计算 result、判定结论和报告文本。原始结果来自仪器或手工录入,计算 result 由公式生成,判定结论依据规格限自动或人工给出,报告文本则是面向客户的输出。报告模块通常需要支持模板、版本、签发人、签发时间和分发记录。验证时要关注:结果修约是否一致、单位换算是否正确、超标结果是否触发复检或 OOS 流程、报告重打是否保留原报告标识。

仪器接口与审计追踪:数据进入与变更留痕

仪器接口是 LIMS 与外部数据源之间的信号链。常见方式包括:文件解析(CSV、TXT、PDF)、中间表、串口/RS232、HL7、ASTM、SiLA 或厂商 API。接口的关键不是“能传进来”,而是“传进来的数据可追溯、可校验、可重放”。一个稳健的接口应记录:仪器标识、采集时间、原始文件哈希或路径、解析版本、目标样品/任务、传输状态和错误信息。

审计追踪则回答“谁、何时、改了什么、为什么改”。合规场景下,审计追踪应覆盖:登录/登出、数据创建、修改、删除、审批、报告签发、权限变更和方法版本切换。审计记录本身不可编辑,且应包含旧值、新值、操作人、时间戳和原因。验证时要测试审计追踪是否覆盖关键表、是否可被普通用户关闭、时间戳是否与系统时钟一致。

用户权限与主数据/事务数据划分

用户权限通常按角色划分:系统管理员、实验室经理、分析员、复核人、报告签发人、审计员和只读用户。权限控制应落到“对象+操作+状态”三个维度,例如分析员只能在“检测中”状态下录入结果,复核人只能在“结果录入”后执行复核。权限矩阵是验证的重要输入。

数据架构上,LIMS 数据可分为主数据与事务数据。主数据是相对稳定、被事务引用的基础对象,如样品类型、检测项目、方法、仪器、单位、规格限、客户、供应商、用户和角色。事务数据是随业务发生而增长的数据,如样品记录、任务、结果、报告、审计追踪和接口日志。迁移时,主数据必须先迁且保持编码一致,事务数据再按时间或业务批次迁移,否则外键关系会断裂。

LIMS 核心功能与数据架构关系 主数据层(稳定、被引用) 样品类型 SampleType 检测项目 TestItem 测试方法 Method + Version 仪器 Instrument 规格限/单位 Spec / Unit 用户/角色/客户 User / Role / Client 事务数据层(随业务增长) 登记/接收 任务分派 检测中 结果录入 复核/批准 报告签发 归档/销毁 原始结果 / 计算 result 判定结论 / OOS 复检 报告模板 / 签发记录 仪器接口信号链 仪器 → 文件/中间表/API 解析 → 校验 → 绑定样品/任务 记录:仪器ID、时间、哈希、状态 审计追踪 谁 / 何时 / 改了什么 / 为什么 旧值 → 新值,不可编辑 覆盖:数据、审批、权限、方法版本 用户权限矩阵 角色:分析员 / 复核人 / 签发人 控制维度:对象 + 操作 + 状态 示例:仅“检测中”可录入结果 方法/仪器/规格限被事务引用 迁移顺序:主数据(编码一致)→ 事务数据(按批次/时间)→ 审计追踪与接口日志(保持关联) 验证重点:状态非法迁移、方法版本绑定、接口可追溯、审计不可关闭、权限与状态联动

典型 LIMS 数据模型:从对象到关系

一个可落地的 LIMS 数据模型通常围绕以下核心表展开:Sample(样品)、SampleType(样品类型)、TestOrder(检测任务)、TestItem(检测项目)、Method(方法)、MethodVersion(方法版本)、Instrument(仪器)、Result(结果)、Report(报告)、AuditTrail(审计追踪)、User(用户)、Role(角色)、Permission(权限)、InterfaceLog(接口日志)。关系上,Sample 与 TestOrder 是一对多,TestOrder 与 Result 是一对多,Result 关联 MethodVersion 和 Instrument,Report 关联 Sample 和签发人,AuditTrail 通过对象类型和对象 ID 关联任意实体。

迁移时,建议先冻结主数据编码,再按“样品→任务→结果→报告→审计”的顺序迁移,并在每批迁移后执行行数核对、外键检查和抽样比对。抽样比对不能只看总数,应覆盖:有复检的样品、有 OOS 的结果、有方法版本切换的批次、有仪器接口回传的记录。只有这些边界数据一致,迁移才算真正完成。

验证与迁移不是两个独立任务。数据模型中的每一个外键、状态字段和审计字段,都应在验证用例中有对应的检查点;迁移脚本中的每一次映射,都应在验证报告中留下可追溯的证据。