Chapter 8

Chapter 8: Validation, Conformance, Certification and the Future

How to prove that a biosensor and a WIA-BIO-011 implementation do what they claim: analytical validation studies, the glucose accuracy criteria of ISO 15197, the regulatory routes to market, the shape of conformance evidence, the errata a v1.0 implementer must handle, and where the field is heading.

Chapters 3 to 6 showed how to compute performance metrics, store them in WIA records, produce them with the SDK and keep them valid through calibration and quality control. None of that is yet proof. A regulator, a hospital laboratory or a buyer of a field monitor will ask a different question: how do you know? The answer is a validation file, a set of studies with defined designs, predefined acceptance criteria and traceable raw data, followed by a conformity assessment under the rules of the market where the device is sold. This chapter walks through that final stage.

Three kinds of source are involved, and the text keeps them apart. The first is WIA-BIO-011 itself. Spec §6–§7 sets targets and acceptance criteria, §9 lists regulations and guidelines, and the reference SDK offers validateSensor. The second is external standards and guidelines (CLSI, ISO, and the FDA and EU frameworks). The book describes them from their published scope and cites them by their real numbers, but the current edition of each document remains the authority. The third is the non-normative annexes of the PHASE documents, which suggest how conformance evidence could be packaged. The chapter uses them only as a recommended shape, and labels book commentary as such.

8.1 An Analytical Validation Plan Built on CLSI Guidelines

8.1.1 From metrics to studies

A metric such as CV or LOD is a number. A validation study is the experiment that produces that number under conditions that make it credible. The difference lies in the design: how many days, runs, reagent or electrode lots, operators and instruments are included, which sample matrix is used, and which acceptance limit was fixed before the data were seen. The Clinical and Laboratory Standards Institute (CLSI) publishes the evaluation protocols (EP documents) that clinical laboratories and IVD manufacturers most often use for this purpose. Spec §9.2.3 names five of them: EP05, EP06, EP07, EP09 and EP15. The book adds a sixth, EP17, because the standard reports LOD and LOQ but names no guideline for establishing them.

8.1.2 The validation matrix

The table below turns these guidelines into a WIA-BIO-011 validation plan. The design column shows example designs of the kind the guidelines describe. Before using any of them in a regulatory file, check the current edition. The acceptance column quotes the spec value where one exists, and the last column states where the result lands in the WIA data model or why it cannot land there.

StudyGuidelineExample designAcceptance (source)WIA/SDK field
PrecisionCLSI EP052–3 levels; 20 days × 2 runs × 2 replicatesCV < 5 % (spec §6.8); RSD < 5 % per calibration level, n ≥ 3 (§7.2.2)validateSensor → precision.cv; PerformanceMetrics.precision
LinearityCLSI EP065–9 levels from admixed pools, 2–3 replicates eachR² > 0.99, target 0.995; random residuals (§7.2.1)validateSensor → linearity.rSquared; residuals from CalibrationData.qualityControl
Trueness / recoveryCLSI EP15 (trueness part); spike recoverySpikes at low, mid, high levels in the real matrixRecovery 90–110 % (§7.2.3); relative error ±5 % (§6.7)validateSensor → accuracy.recovery (mean only)
Interference / selectivityCLSI EP07Paired samples with and without each interferent at a high physiological levelKij > 100 (§6.5), as a ratio of sensitivitiesvalidateSensor → selectivity.coefficients (raw signal ratio)
Method comparisonCLSI EP09Dozens to over a hundred samples across the interval, one comparative methodAllowable bias set by intended use; not defined in v1.0None; use BatchMeasurement plus an external analysis
Detection capabilityCLSI EP17 (book addition)Blank and low-level samples over several days and lotsLoD, LoQ claims; LOQ = 10σ/S (Ch3)calculateLOD → LODResult; PerformanceMetrics.lod/loq
StabilityNo CLSI EP named in the spec (real-time and accelerated studies)Stored units tested at fixed intervals; operational use to end of lifeShelf life 3–12 months at 2–8 °C; 100–1000 measurements; drift < 5 %/month (§6.9)ValidationParameters.stability is accepted but never evaluated
Response timeNo guideline namedStep change in concentration, signal logged at high rateNo normative limit (the CLI prints "≤ 60 s")updatePerformanceMetrics(…, responseTime), caller-supplied

8.1.3 Detection capability the EP17 way

Chapter 3 derived LOD = 3.3σ/S and LOQ = 10σ/S from a calibration. EP17 frames detection capability in terms of two error rates. The limit of blank is the highest result expected from a blank with a given probability. The limit of detection is the lowest concentration that yields a result above LoB with a given probability. With 5 % false positives and 5 % false negatives and roughly Gaussian data, the parametric form is:

LoB = mean(blank) + 1.645 × SD(blank)
LoD = LoB + 1.645 × SD(low-level sample)

Applying this to the Appendix A.1 blanks gives a useful cross-check. The blank SD is 0.0070 µA, and the recomputed slope from Appendix A.2 is about 1.1585 µA/mM, so the LoB lies 1.645 × 0.0070 / 1.1585 ≈ 0.0099 mM above the blank mean. Suppose, as an example, that a low glucose sample measured over several days has an SD of 0.009 µA. The LoD is then 0.0099 + 1.645 × 0.009 / 1.1585 ≈ 0.023 mM. This is close to the 0.020 mM that the 3.3σ/S rule gives, but it rests on a stated error model and on low-level samples rather than on blanks alone. EP17 also applies a small-sample correction to the multiplier and asks for data across lots, and both details are omitted here. The LoQ is then the lowest level whose total error or CV meets a goal set by the manufacturer. For a WIA record, store the LoD and LoQ claims in PerformanceMetrics and record the method in the validation report. The LODResult.method enum has no value for EP17, so do not force the result into 'iupac' or 'epa'.

8.1.4 Method comparison: Bland–Altman and Deming

A correlation coefficient is the wrong tool for method comparison. Two methods can correlate almost perfectly and still differ by a constant 10 %. Two analyses answer the right question. A Bland–Altman plot places the difference (or percentage difference) of each pair against the mean of the pair. It reports the mean bias d̄ and the 95 % limits of agreement d̄ ± 1.96 SDd. Whether those limits are acceptable is a clinical decision made before the study. Deming regression fits a line when both methods carry measurement error, which ordinary least squares ignores. Its slope and intercept separate proportional from constant bias. Passing–Bablok regression is a common non-parametric alternative when outliers or non-Gaussian errors are expected. None of this exists in the SDK. The practical route is to collect the pairs as MeasurementResult records inside a BatchMeasurement, export them, and analyse them with a validated statistics package whose version is recorded in the report.

8.1.5 What validateSensor checks, and what it leaves to you

Chapter 5 described the mechanics of validateSensor. From a validation point of view, four gaps matter. Accuracy is judged on the mean recovery, so individual spikes outside 90–110 % can hide behind a good average. Selectivity divides raw signals and ignores the concentrations it asks for. The stability block is never evaluated. And method comparison, interference dose–response and detection capability have no fields at all. A thin wrapper can close the first three gaps without changing the SDK. The helper below is book code, not part of @wia/bio-011.

import { BiosensorSDK, ValidationParameters } from '@wia/bio-011';

// Book helper: stricter checks layered on top of validateSensor.
interface StrictReport {
  sdkValidated: boolean;
  recoveryPerSample: { expected: number; recovery: number; passed: boolean }[];
  selectivityNormalized: Record<string, number>;
  stability?: { retentionPct: number; halfLifeDays: number; driftPctPerMonth: number };
  validated: boolean;
}

export function strictValidate(
  sdk: BiosensorSDK,
  p: ValidationParameters,
  targetConcentration: number,          // concentration behind targetSignal
): StrictReport {
  const base = sdk.validateSensor(p);
  let ok = base.validated;

  // 1. Every spike must recover within the range, not just the mean.
  const [lo, hi] = p.accuracy?.requiredRecovery ?? [90, 110];
  const recoveryPerSample = (p.accuracy?.spikedSamples ?? []).map(s => {
    const recovery = (s.measuredConcentration / s.expectedConcentration) * 100;
    return { expected: s.expectedConcentration, recovery, passed: recovery >= lo && recovery <= hi };
  });
  if (recoveryPerSample.some(r => !r.passed)) ok = false;

  // 2. Selectivity as a ratio of sensitivities (signal per unit concentration).
  const selectivityNormalized: Record<string, number> = {};
  if (p.selectivity) {
    const sTarget = p.selectivity.targetSignal / targetConcentration;
    for (const i of p.selectivity.interferents) {
      const k = sTarget / (i.signal / i.concentration);
      selectivityNormalized[i.name] = k;
      if (k < p.selectivity.requiredSelectivity) ok = false;
    }
  }

  // 3. Stability: first-order decay fitted to ln(signal) versus time (hours).
  let stability: StrictReport['stability'];
  const m = p.stability?.measurements ?? [];
  if (m.length >= 3) {
    const t = m.map(x => x.time), y = m.map(x => Math.log(x.signal));
    const mt = t.reduce((a, b) => a + b) / t.length, my = y.reduce((a, b) => a + b) / y.length;
    const k = -t.reduce((s, ti, j) => s + (ti - mt) * (y[j] - my), 0) /
               t.reduce((s, ti) => s + (ti - mt) ** 2, 0);
    const retentionPct = (m[m.length - 1].signal / m[0].signal) * 100;
    stability = {
      retentionPct,
      halfLifeDays: Math.LN2 / k / 24,
      driftPctPerMonth: (1 - Math.exp(-k * 730)) * 100,   // 730 h ≈ one month
    };
    if (retentionPct < p.stability!.requiredStability) ok = false;
  }

  return { sdkValidated: base.validated, recoveryPerSample, selectivityNormalized, stability, validated: ok };
}

Fed with three example spikes (2 mM measured as 1.78, 10 mM as 10.2 and 20 mM as 21.9), the SDK reports a mean recovery of 100.2 % and passes. The wrapper shows that the 2 mM spike recovered only 89 % and fails the file. Fed with the Appendix A.3 interference data and a target concentration of 5 mM, the wrapper reports K ≈ 39 for fructose, ≈ 1.5 for ascorbate and ≈ 4.9 for urate, so all three fail the §6.5 target of 100, while the SDK's raw ratios (39, 73, 49) also fail but by misleading margins. An example four-week stability series (signal 100, 98.9, 97.6, 96.8 and 95.5 at weekly intervals) gives a retention of 95.5 %, a fitted half-life of about 430 days and a drift of about 4.8 % per month, which is just inside the §6.9 target of 5 %. These are illustrative data, and a real stability claim needs several lots and the full claimed period.

8.2 Glucose Accuracy per ISO 15197:2013

8.2.1 The criteria

ISO 15197:2013 specifies requirements for blood-glucose monitoring systems intended for self-testing. It is the best-known example of an accuracy standard for a biosensor product, and spec §9.2.1 quotes its core system-accuracy criteria. At least 95 % of results must lie within ±15 mg/dL (±0.83 mmol/L) of the reference value when the reference is below 100 mg/dL (5.55 mmol/L). At or above that concentration they must lie within ±15 %. In addition, 99 % of results must fall within zones A and B of the Consensus Error Grid for type 1 diabetes. Spec §9.2.1 names the Clarke Error Grid here, which is an error. The 2013 edition uses the Consensus (Parkes) grid. The system-accuracy study uses capillary samples from at least 100 subjects spread over prescribed concentration bands, measured with three reagent lots in duplicate, for at least 600 results. The standard also contains a user-performance evaluation with lay users, and it covers interference, hematocrit and other influence quantities. The zone boundaries of the error grid are published coordinates. Implement them from the source publication rather than approximating them.

8.2.2 A worked pass/fail example

The twenty pairs below are illustrative only. A real study has at least 600 results, but the arithmetic is the same. For each pair, the rule switches at a reference value of 100 mg/dL: below it, the absolute difference is compared with 15 mg/dL, and at or above it the relative difference is compared with 15 %.

#Reference (mg/dL)Meter (mg/dL)DifferenceWithin limit?
14552+7 mg/dLyes
26270+8 mg/dLyes
37866−12 mg/dLyes
48895+7 mg/dLyes
595112+17 mg/dLno
69990−9 mg/dLyes
7104112+7.7 %yes
8120131+9.2 %yes
9135128−5.2 %yes
10150163+8.7 %yes
11168160−4.8 %yes
12185198+7.0 %yes
13210236+12.4 %yes
14240229−4.6 %yes
15270301+11.5 %yes
16300284−5.3 %yes
17340322−5.3 %yes
18380402+5.8 %yes
19420445+6.0 %yes
20480455−5.2 %yes

Nineteen of twenty results (95 %) are within the limits, so this set meets the first criterion exactly at the boundary. If pair 13 had read 244 mg/dL (+16.2 %) instead of 236, only 18 of 20 (90 %) would remain and the set would fail. Two lessons follow. First, a small study can pass or fail on a single result, which is why the standard fixes a large minimum sample. Second, the ±15 % criterion is a statement about the tails of the error distribution, not about the average bias. The mean difference in this table is small, yet one result decides the outcome. The error-grid criterion is checked separately. Errors of this size lie close to the identity line and would be expected to fall in zone A, but the zone of each point must be assigned from the published grid coordinates. Unit handling matters too. WIA records store glucose in mM by default, and the conversion factor is about 18.0 mg/dL per mmol/L. Convert with the unrounded factor and keep the reference and meter values in the same unit before comparing.

// Book helper: ISO 15197:2013 system-accuracy criterion 1 (mg/dL inputs)
export function iso15197Within(ref: number, meter: number): boolean {
  return ref < 100 ? Math.abs(meter - ref) <= 15
                   : Math.abs(meter - ref) / ref <= 0.15;
}
export function iso15197Criterion1(pairs: [number, number][]): { pct: number; passed: boolean } {
  const ok = pairs.filter(([r, m]) => iso15197Within(r, m)).length;
  const pct = (ok / pairs.length) * 100;
  return { pct, passed: pct >= 95 };
}

8.2.3 Other glucose systems

ISO 15197 applies to self-testing meters. Continuous glucose monitors are evaluated under different frameworks. In the United States, FDA has defined special controls for integrated CGM systems. Their performance is usually summarized by the mean absolute relative difference (MARD) and by the percentage of readings within fixed agreement bands, broken down by glucose range and by time since insertion. Spec §8.1 gives a CGM accuracy figure ("90 % within Zone A") without a source, and this book does not use it. Hospital point-of-care glucose meters, used on critically ill patients, are commonly evaluated against tighter criteria than self-testing meters. The general point for implementers is that the accuracy goal comes from the intended use and the applicable regulation, not from the biosensor standard.

8.3 Regulatory Routes to Market

WIA-BIO-011 is not a regulatory standard. Following it does not clear or certify a device anywhere. What it can do is organize the evidence that regulators ask for. This section outlines the two frameworks that spec §9 names, corrects the examples it gives, and lists the horizontal standards that every IVD manufacturer meets sooner or later. Other jurisdictions, such as Korea's Ministry of Food and Drug Safety (MFDS), run their own classification and approval schemes. They are not covered here, and they need their own review.

8.3.1 United States (FDA)

FDA classifies IVDs, like other medical devices, into Class I, II and III by risk and by the controls needed to assure safety and effectiveness. Class I devices are subject to general controls, and many are exempt from premarket notification. Class II devices usually need a 510(k) premarket notification that shows substantial equivalence to a legally marketed predicate device, together with any special controls for the device type. Class III devices need premarket approval (PMA), supported by valid scientific evidence that usually includes clinical data. A novel device with no predicate but moderate risk can use the De Novo request to create a new Class II classification. Spec §9.1.1 gets the examples wrong. Glucose test systems, including test strips and meters, are Class II, not Class I. Cardiac troponin assays are also regulated as Class II. "Novel cardiac marker equals Class III" is not a rule, because the class follows the device type and its risk, not its novelty. Point-of-care use raises one more US question. Under CLIA, each test is categorized as waived, moderate complexity or high complexity, and this decides which sites may run it. A CLIA waiver, for example for use in a physician's office or a pharmacy, requires its own evidence that untrained users obtain accurate results.

8.3.2 European Union (IVDR)

Regulation (EU) 2017/746 on in vitro diagnostic medical devices (IVDR) sorts devices into classes A to D with the classification rules of its Annex VIII. It also requires performance evaluation, meaning scientific validity, analytical performance and clinical performance. Spec §9.1.2 gives two examples that need correction. Devices for detecting HIV infection belong to Class D, the highest class, because the classification rules place tests for life-threatening transmissible agents with a high risk of propagation, and blood-screening tests, in Class D. They are not Class C. For blood grouping, only some markers are Class D, and others fall into Class C. Self-testing devices are Class C by default. A short list of exceptions, including pregnancy and fertility tests, is Class B. The EU classification guidance (MDCG 2020-16) places blood-glucose self-testing systems in Class C. Specimen receptacles and general laboratory instruments are the typical Class A examples. Except for non-sterile Class A devices, conformity assessment involves a notified body, and the depth of its review grows with the class.

8.3.3 Comparison

Example deviceUS FDAEU IVDRNotes
Blood-glucose meter and strips for self-testingClass II, 510(k)Class C (self-testing; per MDCG 2020-16)ISO 15197 is the usual performance reference in both markets
Integrated CGMClass II with special controls (iCGM)Not an IVD: an in-vivo sensor, regulated under the Medical Devices Regulation (EU) 2017/745Accuracy is judged by MARD and agreement bands, not by ISO 15197
Cardiac troponin assay (professional use)Class II, 510(k)Usually Class C under Rule 3, depending on intended purposeClinical cutoffs are assay-specific (99th percentile of a reference population)
Pregnancy self-test (hCG, lateral flow)Class II (many OTC)Class B (explicit self-test exception)Reader apps can change the regulatory scope when they interpret results
HIV antigen/antibody testRegulated by FDA's biologics centre; often PMA or BLAClass DSpec §9.1.2 wrongly lists "HIV = Class C"
Environmental or food biosensor (non-medical)Not an IVDNot an IVDMethod validation follows sector schemes such as AOAC or national environmental methods

The table gives typical outcomes for orientation. The legal classification of a real product depends on its exact intended purpose and claims, and it has to be confirmed against the current regulation and guidance. It cannot be inferred from this book.

8.3.4 Quality system, risk, software and labelling

Whichever route applies, the same horizontal standards appear. ISO 13485 defines the quality management system: design controls, supplier control, process validation, traceability, and post-market surveillance, as spec §9.3.1 lists. ISO 14971 governs risk management across the life cycle. For a biosensor, typical hazards include a false low glucose result that leads to an insulin overdose, an expired strip read as valid, a wrong unit on an exported value, and an interferent that raises the signal. Many of the WIA quality flags are risk controls in this sense. calibration-expired, sensor-expired and temperature-out-of-range each mitigate a specific hazard, which is why Chapter 5's observation that some of them never block a result matters. Software that computes a clinical value, including an app that runs BiosensorSDK, falls under IEC 62304 for its life cycle and usually under IEC 62366-1 for usability engineering. The ISO 18113 series sets out what the manufacturer must tell the user: intended use, performance characteristics, sample type and volume, storage, expiry and quality-control procedures (spec §9.2.2). Here the WIA records help directly. PerformanceMetrics, Biosensor.lifetime and QualityControlSample already hold most of the numbers that the labelling has to state, so labelling and data can come from a single source. Spec §9.3.2 adds manufacturing practice: cleanroom classification (ISO 14644), equipment qualification (IQ, OQ and PQ), process validation, change control and CAPA.

8.4 WIA Conformance Evidence (Non-Normative)

Regulatory clearance concerns a device. WIA conformance concerns an implementation: a reader firmware, an SDK port, or a cloud service that claims to create, store and interpret WIA-BIO-011 records correctly. Version 1.0 defines no certification programme, no conformance tiers and no pass rates. Any claim of such a scheme would be invented. The PHASE documents, however, contain non-normative annexes (G, I and J) that describe a reasonable shape for conformance evidence. Their surrounding text is generic template material, as noted in earlier chapters, so the book adopts only the evidence shape and fills it with biosensor content.

8.4.1 Test vectors

Annex G asks for at least one positive and one negative test vector for each requirement, run in CI, with the pass/fail matrix published. The directory that the annex names does not exist in the biosensor repository, so an implementer has to write the vectors. The Appendix A data make good seeds, provided the recomputed values are used. The requirement identifiers below (BIO011-CAL-01 and so on) are a book convention, because v1.0 does not number its requirements.

[
  {
    "id": "BIO011-CAL-01-pos",
    "requirement": "Calibration uses at least 5 points and R² > 0.99 (spec 7.1, 7.2.1)",
    "input": {
      "standardConcentrations": [0, 1, 5, 10, 50, 100],
      "measuredSignals": [0.05, 1.20, 5.85, 11.50, 58.20, 115.80],
      "concentrationUnit": "mM", "signalUnit": "uA"
    },
    "expect": { "accepted": true, "slope": { "value": 1.1585, "tol": 0.0005 },
                "intercept": { "value": 0.047, "tol": 0.001 }, "rSquaredMin": 0.9999 }
  },
  {
    "id": "BIO011-CAL-01-neg",
    "requirement": "Calibration with fewer than 5 points is rejected",
    "input": { "standardConcentrations": [0, 5, 10, 50],
               "measuredSignals": [0.05, 5.85, 11.50, 58.20] },
    "expect": { "accepted": false, "errorCode": "BIO010" }
  },
  {
    "id": "BIO011-LOQ-01-pos",
    "requirement": "LOQ = 10 sigma / S (as the SDK computes; corrects spec 6.3)",
    "input": { "blankSignals": [0.05, 0.06, 0.05, 0.07, 0.05, 0.06, 0.05, 0.06, 0.05, 0.06],
               "sensitivity": 1.1585 },
    "expect": { "lod": { "value": 0.0199, "tol": 0.0005 }, "loq": { "value": 0.0604, "tol": 0.001 } }
  }
]

Negative vectors matter as much as positive ones. Annex G states that a skipped test without a recorded reason counts as a failure, and that negative results must be reported as faithfully as positive ones. For a biosensor implementation, useful negative vectors include a measurement on an expired calibration (expect BIO004), a measurement on an uncalibrated sensor (BIO003), a QC result 25 % above target (expect a failed control and the recalibration action), and a 37 °C sample processed with the 25 °C reference (expect the temperature-out-of-range flag).

8.4.2 The evidence package and its upkeep

Annex G describes the evidence package as an archive with four items: a software bill of materials (CycloneDX or SPDX), the OpenAPI document if a remote API exists, the test-vector matrix, and a signed manifest. Signing with a transparency-logged scheme such as Sigstore lets a consumer verify where the package came from without a private certificate authority. The annex also suggests re-publishing the package every quarter even without source changes, so that drift in compilers, dependencies or operating systems shows up. For a biosensor product, the book suggests adding three items that the generic annex could not foresee: the calibration and QC data behind the reported performance, the exact SDK version and any local patches for the errata in Section 8.6, and the risk-control mapping from quality flags to hazards.

8.4.3 The profile manifest

Annex I proposes a signed JSON profile manifest in which an implementation lists each requirement as supported, partial (with a reason) or excluded (with a justification). This is the honest way to describe partial conformance, which is the normal state for a v1.0 implementation. Annex J adds a deployment topology field (single-tenant edge, multi-tenant gateway, federated mesh or air-gapped batch), which Chapter 7 discussed for the device-to-cloud architecture. A minimal manifest for an app built on the reference SDK might read as follows.

{
  "implementation": "example-glucose-reader-app",
  "standard": "WIA-BIO-011",
  "standardVersion": "1.0.0",
  "sdk": { "package": "@wia/bio-011", "version": "1.0.0", "localPatches": ["temp-comp-direction", "loq-10-sigma"] },
  "topology": "single-tenant-edge",
  "requirements": [
    { "id": "BIO011-CAL-01", "status": "supported" },
    { "id": "BIO011-CAL-02", "status": "partial",
      "reason": "Residual randomness checked by app code; SDK only reports residuals" },
    { "id": "BIO011-ACC-01", "status": "supported" },
    { "id": "BIO011-SEL-01", "status": "partial",
      "reason": "Selectivity normalized by concentration in app; SDK ratio not used" },
    { "id": "BIO011-STB-01", "status": "excluded",
      "justification": "Shelf-life claim established by manufacturer study, not by software" },
    { "id": "BIO011-NLC-01", "status": "excluded",
      "justification": "Non-linear (4PL) inversion not implemented in v1.0 SDK" }
  ],
  "evidence": { "vectorMatrix": "vectors/results.json", "sbom": "sbom.cdx.json" }
}

The manifest makes no claim that anyone has certified it. It is a structured statement that others can check against the vectors. That modesty is deliberate. Until the standard defines a certification body and its criteria, "WIA-certified" is not a meaningful label, and it should not appear in product literature.

8.5 An Implementation Self-Check

The table below collects the quantitative requirements of spec §6–§7 and states, for each one, how to test it with the SDK or CLI and what the tool cannot do on its own. The spec words §6 values as "targets" and §7 values as minimum requirements and acceptance criteria. It does not use formal MUST or SHOULD keywords, so the "Status in v1.0" column records the wording.

RequirementSpecStatus in v1.0Test with SDK / CLIGap to close
At least 5 calibration points including a blank, duplicates at each level§7.1Minimum requirementcalibrateSensor throws BIO010 below 5 pointsThe SDK counts array entries, so duplicates count as points and the blank is not required. Check the design separately.
R² > 0.99 (target 0.995), random residuals§7.2.1Acceptance criterioncalibrateSensor (BIO011 below 0.99); validateSensor.linearityResidual pattern is not tested. Apply a runs test or EP06-style deviation limits.
RSD < 5 % per level, n ≥ 3§7.2.2Acceptance criterionvalidateSensor.precision per level (one call each)No per-level loop and no variance components. Use an EP05 design for claims.
Recovery 90–110 %§7.2.3Acceptance criterionvalidateSensor.accuracy; CLI validate --accuracyThe SDK uses the mean recovery. Check each spike (Section 8.1.5).
Accuracy ±5 % relative error§6.7TargetCompare MeasurementResult.concentration with reference valuesNo SDK method. Method comparison (EP09) is external.
CV < 5 %§6.8TargetvalidateSensor.precision; CLI validate --precisionThe CLI only compares the number you type with 5.
Kij > 100§6.5TargetvalidateSensor.selectivityRaw signal ratio. Normalize by concentration.
Three-level QC within ±10 % of target and ±2 SD of history§7.4Acceptance criterionrunQualityControl with acceptableRange set to the intersection of both windowsThe z-score does not affect passed. CLI qc-report prints fixed demonstration values.
Recalibration: before first use, daily, QC every 20–50 samples, weekly or on QC failure§7.3ProcedureSDK calibration validity is 24 h (BIO004 afterwards)Sample-count QC trigger and weekly full recalibration must be scheduled by the application.
Shelf life 3–12 months at 2–8 °C; 100–1000 measurements; drift < 5 %/month§6.9TargetBiosensor.lifetime expiry (BIO007)maxMeasurements not enforced; stability not evaluated.
Temperature control ±1 °C for enzymatic sensorsREADME QAGuidancetemperature-out-of-range flagFlag is advisory. Decide whether it blocks release.

Two warnings apply to the CLI in particular. The validate command prints an R² of 0.9995 and a response time of 15 s that are hard-coded, and qc-report prints three fixed control results. Both commands are demonstrations of the output format. Their output must never go into a validation file as measured evidence.

8.6 Known v1.0 Errata

Earlier chapters pointed out each of these issues where it arose. They are collected here because an implementer or an auditor needs one list. The proposed fixes are book commentary. They are what this book recommends until a revised specification settles each point.

ItemWhereWhat v1.0 says or doesWhy it is wrongProposed fix (book commentary)
LOQ relationSpec §6.3LOQ = 3.3 × LODWith LOD = 3.3σ/S and LOQ = 10σ/S, the ratio is 10/3.3 ≈ 3.03State LOQ = 10σ/S; drop the multiplier form
QCM constantSpec §4.3.12.26 × 10⁸ Hz·cm²/g for 5 MHzThat is the 10 MHz value; Sauerbrey scales with f₀²5.66 × 10⁷ Hz·cm²/g (56.6 Hz·cm²/µg) at 5 MHz
SPR relationSpec §4.2.3Δθ = m × Δn × d as a law; 10⁻⁶–10⁻⁷ RIU as "sensitivity"Not a standard physical relation; RIU figures are resolutionsReport sensitivity in deg/RIU and resolution in RIU
Temperature compensation directionSpec §5.4 vs SDK/CLISpec multiplies by [1 + α(T − Tref)]; code dividesThe two conventions give α opposite meaningsPick the division form (as the SDK does) and define α as the fractional signal increase per °C
Selectivity normalizationAppendix A.3; validateSensorRatios of raw signals at unequal concentrations; 39:1 called "good"Kij is a ratio of sensitivities; the spec's own target is > 100Divide each signal by its concentration; report ≈ 39, 1.5 and 4.9
Appendix A.2 regressionSpec Appendix A.2Slope 1.157, intercept 0.043, R² 0.9998The data give ≈ 1.1585, 0.047 and 0.99999Publish recomputed values; use them in test vectors
README 37 °C exampleREADME SDK exampleImplied result matching the 20.3 mM of spec A.2Different data (5.8 vs 5.85) and 37 °C; the SDK returns ≈ 14.9 mM and a temperature flagSeparate the two examples; show the SDK output
Dynamic range definitionSpec §1.4"Range over which sensor responds linearly"That is the linear range; dynamic range is log₁₀(Cmax/LOD)Define both terms separately
"EPA" LOD methodSDK calculateLODFixed multiplier 3.14t = 3.14 holds only for n = 7 at 99 %Use t for n − 1 degrees of freedom or rename the method
Regulatory examplesSpec §9.1.1–§9.1.2Glucose strips Class I; novel cardiac markers Class III; HIV tests Class CGlucose and troponin tests are FDA Class II; HIV tests are IVDR Class DReplace with the Section 8.3 table
Error gridSpec §9.2.1, §8.1Clarke Error Grid; "CGM 90 % in Zone A"ISO 15197:2013 uses the Consensus (Parkes) grid; the CGM figure has no sourceCite the Consensus grid; drop the CGM figure
Troponin cutoffSpec §8.2Universal cutoff 0.04 ng/mLCutoffs are assay-specific 99th-percentile limitsStore the cutoff per assay in POCTestResult.cutoff
Reference listSpec §10.1Numbered 1, 3, 5Entries missingRenumber; do not reconstruct missing entries
PHASE document identityspec/PHASE-1..4Carry the ID WIA-BIO-010; titles do not match file names; looser generic thresholdsTemplate text from another standardReplace with biosensor-specific PHASE documents; until then treat only the main spec as normative

Implementers who patch the SDK locally should record each patch in the profile manifest (the localPatches field above). Otherwise an auditor who compares results against the unpatched reference will see differences that look like defects.

8.7 Future Directions

Biosensor research moves quickly, and much of it will eventually test the limits of a v1.0 data model. The directions below are well established in the research literature. Their timing and commercial scale are not predicted here.

For a future revision of WIA-BIO-011, the preceding chapters suggest a practical list. It would include non-linear inversion for the 4PL and Michaelis–Menten models already present in the type system; drift compensation and filtering that match the fields SignalProcessingParams already declares; enforcement of maxMeasurements and of state transitions on failure; an evaluated stability block; numbered requirements with official test vectors; and a real transport protocol, with the PHASE documents rewritten for this standard. Each of these would turn a current gap into a checkable requirement, and that is the purpose of a standard.

8.8 Chapter Summary

Validation turns metrics into evidence. CLSI protocols give the study designs (EP05 precision, EP06 linearity, EP07 interference, EP09 method comparison, EP15 user verification, and EP17 detection capability as a book addition). The reference validateSensor covers only part of this, and a thin wrapper can close its accuracy, selectivity and stability gaps. For glucose, ISO 15197:2013 sets tail-based accuracy criteria that a worked example shows can hinge on a single result. Regulatory routes differ between the FDA and the IVDR, and the spec's examples need correcting: glucose and troponin tests are FDA Class II, and HIV tests are IVDR Class D. WIA conformance has no certification scheme in v1.0. The honest form of a claim is a set of positive and negative test vectors, an evidence package and a profile manifest that states partial conformance openly. The errata table lists what an implementer must fix or document before relying on v1.0, and the future list shows where the next version could turn today's gaps into requirements.