Chapter 5

Phase 2: Implementation

Overview

Phase 1 of WIA-BIO-006 fixed the shape of the records: what a scaffold, a bioink, a construct and a QC measurement look like on the wire. Phase 2 makes those records reachable. It is the API surface through which a scaffold designer, a bioprinter, a bioreactor controller and a quality laboratory exchange data without sharing a database. The surface has four resource families. These are scaffold records, bioink formulations, tissue-construct lifecycles, and bioreactor telemetry. A fifth endpoint accepts QC results against any of them.

A tissue-engineered construct is an unusually long-lived object. It starts as a CAD model and a material choice. It becomes a seeded scaffold, then a printed or cultured construct, and finally something that is tested and perhaps released for clinical use. Each step is carried out by different equipment, often by different organisations. The central design decision in Phase 2 is therefore that every one of those steps writes to, or reads from, a record with a stable identifier. A characterisation report cites a scaffoldId. A clinical-intent construct cites both a scaffold record and a bioink record. QC measurements attach to whichever of the three they describe.

This chapter follows the process in the order a laboratory would meet it. It covers cell seeding, which determines what the construct starts with, then scaffold design and its data format. Culture optimisation and live telemetry come next, followed by QC and error handling. The chapter closes with deployment advice.

Technical Foundation

5.1 Seeding Methods and the Numbers an Interface Must Carry

A seeded scaffold is only as good as the number of viable cells that actually enter its pores. The specification treats seeding as a choice among four methods that differ in equipment, duration and efficiency. A culture-planning service needs these figures because the cell count it assumes at day zero drives every later prediction.

MethodProcedure in briefReported efficiency
StaticPipette a suspension of 10⁶–10⁷ cells/mL onto the scaffold, incubate 2–4 hours for attachment, then add medium; flipping the scaffold is optional and improves uniformity20–50%
Dynamic (spinner flask)Scaffold and suspension in a spinner flask at 50 rpm for 4–8 hours, then transfer to static culture40–70%
VacuumApply 50–100 kPa for 5–10 minutes with the suspension over the scaffold, then release so cells are drawn into the pores60–90%
CentrifugalCentrifuge at 100–500 ×g for 5–10 minutes70–95%

The trade-off is the familiar one in tissue engineering. Static seeding is cheap but wastes cells. Cells are the scarce input when they come from a patient biopsy or a differentiated stem-cell batch. Centrifugal and vacuum seeding push cells into the interior of the scaffold. This matters most for thick constructs, where cells that settle only on the surface leave the core empty.

For centrifugal seeding the specification gives the relative centrifugal force in terms of rotor radius and speed:

RCF = 1.12 × r × (RPM/1000)²

RCF = relative centrifugal force (×g)
r   = radius (mm)
RPM = revolutions per minute

A worked example shows why the parameters belong in the record. At a radius of 100 mm, 1000 rpm gives 112 ×g, which is below the specified window. 2000 rpm gives 448 ×g, which is inside it. Because force grows with the square of speed, a small change in rpm on a rotor of different radius can move a run out of range. Storing only "2000 rpm" without the radius would make the run unreproducible.

The specification also lists cell-density guidance by tissue. Each tissue has a defined unit, so a density value is meaningless without it.

TissueTarget density
Bone5 × 10⁶ – 2 × 10⁷ cells/cm³
Cartilage2 × 10⁷ – 6 × 10⁷ cells/cm³
Skin1 × 10⁶ – 5 × 10⁶ cells/cm²
Liver5 × 10⁷ – 2 × 10⁸ cells/cm³

Skin is expressed per unit area, because a skin substitute is a sheet. The other three are per unit volume. The specification expresses the optimum abstractly as a function of tissue type, scaffold porosity and culture duration. That is the same set of inputs the scaffold and culture endpoints below accept. Cell source also matters. Primary cells keep native phenotype but expand poorly and vary between donors. Stem cells (ESCs, MSCs, iPSCs) are differentiated with tissue-specific growth factors and mechanical cues. Cell lines such as NIH 3T3, HepG2 and MC3T3 give reproducibility and unlimited supply, which makes them suited to method development.

5.2 Scaffold Design Requests and the Scaffold Record

The design interface takes the physical targets a tissue engineer actually specifies and returns derived quantities. The request carries a tissue type, a biomaterial, porosity as a percentage, pore size in micrometres, and the length, width and height of the scaffold in millimetres. The response returns an identifier, volume in mm³, surface area in mm², an estimated cell capacity, mechanical properties, and the fabrication method.

interface ScaffoldRequest {
  tissueType: string;
  material: BiomaterialType;
  porosity: number;        // percentage
  poreSize: number;        // micrometers
  dimensions: {
    length: number;        // mm
    width: number;         // mm
    height: number;        // mm
  };
}

interface ScaffoldResponse {
  id: string;
  volume: number;          // mm³
  surfaceArea: number;     // mm²
  cellCapacity: number;    // cells
  mechanicalProperties: MechanicalProperties;
  fabricationMethod: string;
}

The cellCapacity field links this endpoint to the seeding table above. Capacity follows from volume, porosity and a tissue-appropriate density. It tells the operator how large a cell suspension to prepare, so seeding is planned before cells are thawed rather than discovered afterwards.

The stored scaffold configuration is a separate, more complete document. The specification's example describes a PCL–collagen composite:

{
  "scaffold_id": "SCF-2025-001",
  "material": {
    "type": "pcl-collagen",
    "ratio": "70:30",
    "crosslinking": "EDC"
  },
  "architecture": {
    "porosity": 75,
    "pore_size": 200,
    "interconnectivity": 95
  },
  "dimensions": {
    "length": 10,
    "width": 10,
    "height": 3,
    "unit": "mm"
  },
  "mechanical": {
    "youngs_modulus": 50,
    "ultimate_strength": 5,
    "unit": "MPa"
  }
}

Three details deserve attention. First, the record captures the composite's ratio and the crosslinking agent (EDC). In a collagen-containing scaffold, crosslinking changes stiffness and degradation. Two scaffolds with the same polymer ratio but different crosslinking are not interchangeable. Second, interconnectivity appears next to porosity and pore size. Porosity alone does not tell you whether cells and nutrients can travel between pores. A scaffold can be 75% void and still have closed cells. Third, the units are explicit (mm and MPa), so a record is self-describing when it crosses organisational boundaries. Implementers should note that the TypeScript request uses camelCase names and the stored record uses snake_case, so a client library has to translate between them.

POST /tissue-engineering/v1/scaffolds registers a record and returns a stable scaffoldId. Updating the record produces a new version, and the prior version stays in the version history. A characterisation report written against version one therefore remains valid for version one after a re-measurement. Read endpoints expose the Bayesian posterior over Young's modulus and ultimate strength rather than a single number. A downstream finite-element simulator can then propagate measurement uncertainty into its structural predictions. The 50 MPa in the example is a summary of what was measured, not an exact property of the material.

Market Analysis

The material contains no market figures, and none are given here. What the specification does reveal is who is expected to use the interface. These are scaffold and bioink suppliers who publish formulations, construct manufacturers who consume them, and QA teams who pull evidence for regulatory submissions. Each has a different incentive for adopting a shared record format.

A supplier benefits when customers can cite a formulation by identifier instead of re-describing it. A manufacturer benefits when the print parameters, cross-linking schedule and culture history of a batch sit in one lifecycle record. QA teams benefit most visibly. The read endpoints filter QC results by test category, pass/fail status and date range, so a conformance report for a submission is a query rather than a spreadsheet-assembly exercise. In a field where inter-laboratory reproducibility is a recognised obstacle, the practical value of the format is that two sites can compare like with like.

Industry Applications

5.3 Culture Optimisation, Construct Lifecycles and Bioreactor Telemetry

After seeding, the construct moves into a bioreactor, where fluid flow delivers nutrients and removes waste. The culture-optimisation call takes the tissue construct, the cell type, the planned duration in days and the bioreactor type. It returns a recommended operating point and a forecast.

interface CultureRequest {
  tissueConstruct: TissueConstruct;
  cellType: string;
  duration: number;        // days
  bioreactorType: string;
}

interface CultureResponse {
  flowRate: number;        // mL/min
  oxygenLevel: number;     // percentage
  temperature: number;     // celsius
  shearStress: number;     // dyne/cm²
  predictedMaturation: number;  // days
  qualityScore: number;    // 0-1
}

The response couples flow rate and shear stress because they pull against each other. Higher perfusion delivers more oxygen to the interior of a thick construct. It also raises the mechanical stress on cells at the pore walls, and for some tissues that stress is a useful stimulus while for others it is damaging. The qualityScore on a 0–1 scale lets a scheduler compare candidate protocols numerically. predictedMaturation in days feeds the production schedule.

The construct itself lives in a lifecycle record created with POST /tissue-engineering/v1/constructs. It tracks the print parameters (G-code reference, layer height, print speed and pressure), the cross-linking schedule, the bioreactor culture history, and a log of QC milestones. A construct intended for clinical use must cross-reference both its scaffold record and its bioink record. Anyone auditing the construct can then trace it back to the exact material lot and formulation. Read endpoints return the live viability and maturity history, so a client can plot drift across fabrication batches and notice a gradual degradation, such as a nozzle slowly clogging or a medium lot changing, before a batch fails outright.

While the culture runs, telemetry streams over a WebSocket at /tissue-engineering/v1/bioreactor/stream. The stream multiplexes these channels:

Glucose and lactate indicate whether cells are consuming nutrients and accumulating acid waste, and pH and dissolved oxygen indicate whether the environment is still tolerable. Subscribers can filter by channel and by alarm threshold. The broker emits alarm-grade events for out-of-band readings, such as a pH excursion or a dissolved-oxygen drop, within the safety loop's hard time budget. When a connection drops, the reconnect protocol uses monotonic counters per stream. A brief network partition therefore leaves a gap that can be recognised, rather than a silently broken audit trail.

Standards Compliance

5.4 Quality Control, Error Codes and Operating Limits

QC results are posted with POST /tissue-engineering/v1/qc-results against a construct, scaffold or bioink record. The endpoint accepts the Phase 1 QC envelope together with the raw measurement payload. Four payload types are named: a microscopy image, a stress-strain curve from mechanical testing, a qPCR plate and a flow-cytometry FCS file. Storing the raw instrument output beside the pass/fail verdict lets a reviewer re-analyse a result instead of trusting a summary. The latest results for a construct are available at GET /tissue-engineering/v1/constructs/{id}/quality.

Failures are reported with six standard codes, each paired with a suggested corrective action:

CodeMeaningAction
B001Insufficient porosityIncrease pore size
B002Cell viability too lowCheck seeding protocol
B003Mechanical failureStrengthen scaffold
B004Contamination detectedRe-sterilize
B005Poor vascularizationAdd growth factors
B006Biocompatibility issueChange material

The codes map back to the earlier sections. B002 sends the operator to the seeding method and the density guidance, for example to see whether a static protocol was used where a vacuum or centrifugal one was needed. B001 and B005 are linked in practice. Low porosity or poor interconnectivity starves the interior of nutrients, and added growth factors cannot fix a geometry that blocks perfusion. B004 should be treated as a stop condition, not a routine retry. B006 is a different kind of outcome from the rest. It cannot be tuned away and requires a different material.

Operationally, the API is metered at 1000 requests per hour unauthenticated, 5000 authenticated and 10000 on the premium tier. Telemetry subscriptions are counted separately, with a limit of 50 simultaneous subscriptions per credential. Bulk exports use cursor pagination (?after=cursor&limit=N, maximum 200) and send Retry-After headers under load. A discovery document at /.well-known/wia-tissue-engineering lets a client find the endpoints. Within the 1.x line, existing envelopes and endpoints must remain reachable, and hosts may add optional fields but not remove existing ones. That promise is what allows a bioreactor controller commissioned today to keep working with a records service upgraded later. These versioning and access rules are common to the whole standards family. The tissue-specific requirements are in the records and QC evidence described above.

Implementation Considerations

A compliant system includes five components: a scaffold designer with CAD integration and material selection, a bioreactor controller, a quality validator with automated testing protocols, a bioprinting module that handles toolpaths and cells, and a GMP-compliant documentation system. The last of these shapes the rest. In a regulated setting the ability to show who recorded what, and when, matters as much as the measurement. Append-only history for scaffold versions and monotonic stream counters are the interface's contribution to that goal.

The specification's runbook suggests an incremental path:

  1. Start the reference container, which ships every envelope and endpoint with mock data.
  2. Run the conformance suite against it end to end.
  3. Replace the mock backend with real systems one endpoint at a time. The scaffold records are a sensible first candidate because they are the least time-critical.
  4. Connect audit-log replication to the operations sink.
  5. Onboard a single trusted peer before widening to several.
  6. Promote to production with the warning-envelope subscription enabled.

Telemetry should come late in that sequence. It is the part with hard timing requirements, so it should be added once the record flows are stable.

Three practical hazards are worth planning for. The first is unit confusion. Densities are per cm³ for volumetric tissues and per cm² for skin, shear stress is in dyne/cm², and mechanical moduli in the example are in MPa, so adapters should validate units rather than assume them. The second is the casing difference between the TypeScript request fields and the stored scaffold record, which a client library should absorb in one place. The third is bandwidth. The 240p camera stream is a deliberate compromise, and a monitoring application that needs higher-resolution imaging should upload microscopy images through the QC endpoint instead.

Future Outlook

The material does not set out a roadmap, so this outlook is limited to what the design already allows. Posteriors over mechanical properties are exposed so that simulators can use them. Drift histories are exposed at the construct level so that tooling can learn from them. Both are natural inputs for models that predict outcomes before a run begins. The qualityScore and predictedMaturation fields already point that way. Because the 1.x promise keeps existing shapes stable and permits optional additions, new channels or new QC modalities can be added without breaking deployed bioreactor controllers.

Summary

5.5 What Phase 2 Settles and Where Phase 3 Picks Up

Phase 2 turns the Phase 1 records into services. Seeding parameters are specified with enough precision to reproduce a run: the method, the RCF formula with its radius, and efficiency ranges from 20–50% for static seeding up to 70–95% for centrifugal seeding. Scaffolds are requested in physical terms and stored as versioned records, with units and uncertainty attached to the mechanical properties. Constructs gain a lifecycle record that binds scaffold, bioink, print parameters, culture history and QC milestones. Bioreactor telemetry reaches the operator as a filterable stream with alarm-grade events. Failures are reported with the six B-series codes, which point back to the stage that most likely caused them.

These interfaces leave one question open: how to trust the data when it crosses an organisational boundary. A reconnecting telemetry client, a QC result submitted by a partner laboratory, and a clinical-intent construct whose provenance must survive review all depend on the protocol exchanges that wrap these endpoints. The next chapter turns to that layer, starting with the nonce and clock-skew handling that the telemetry reconnect already relies on.