For Researchers

Cross-Species Navigation

The same evidence model that describes a hemoglobin result for a 58-year-old oncology patient also describes it for a Golden Retriever. OpenBio normalizes to standard terminologies across species — query both in a single call.

Same assertion, any organism

Evidence types are organism-agnostic. A lab_result with LOINC code 718-7 (hemoglobin) means the same thing whether it belongs to a human, a dog, or a macaque. Reference ranges differ; the evidence model does not.

Human · James, 58

9.2 g/dL

Hemoglobin · LOINC:718-7

source_factQuest Diagnostics · HL7v2

Canine · Luna, 7yr

11.4 g/dL

Hemoglobin · LOINC:718-7

source_factVetLab Systems · FHIR

Side-by-side comparison

Fetch the same evidence type for multiple subjects across species. Compare treatment responses, reference ranges, and temporal patterns.

typescript
// Fetch hemoglobin for a human and a dog — same call, same structure
const [humanLabs, canineLabs] = await Promise.all([
  client.evidence.bySubject({
    subjectId: 'james-58',         // Human
    code: 'LOINC:718-7',
    trustLayer: ['source_fact'],
  }),
  client.evidence.bySubject({
    subjectId: 'luna-7',           // Golden Retriever
    code: 'LOINC:718-7',
    trustLayer: ['source_fact'],
  }),
]);

// Both return EvidenceAssertion[] with identical shape.
// Reference ranges differ by subjectType — check assertion.referenceRange
// Human normal: 13.5–17.5 g/dL (male), 12.0–15.5 g/dL (female)
// Canine normal: 12.0–18.0 g/dL

Cross-species cohort query

Query across all species simultaneously. OpenBio returns matching subjects with their organism type — you can compare treatment responses across biology, not just across EHR systems.

typescript
// NSCLC patients and canine cancer subjects with anemia
const multiSpeciesCohort = await client.cohorts.query({
  criteria: [
    { type: 'lab_result', code: 'LOINC:718-7', value: { lt: 10 } },
  ],
  subjectTypes: ['human', 'canine', 'primate', 'cell_line'],
  trustLayers: ['source_fact', 'normalized_fact'],
});

// Group by species for analysis
const bySpecies = multiSpeciesCohort.subjects.reduce(
  (acc, subject) => {
    acc[subject.subjectType] = [...(acc[subject.subjectType] ?? []), subject];
    return acc;
  },
  {} as Record<string, typeof multiSpeciesCohort.subjects>,
);

console.log('Human subjects:', bySpecies.human?.length);
console.log('Canine subjects:', bySpecies.canine?.length);

Supported subject types

TypeKeyExample subjects
🧑humanJames, 58 — NSCLC oncology patient
🐕canineLuna, 7yr — Golden Retriever
🐒primateM-4872 — Rhesus macaque research subject
🔬cell_lineHeLa-S3 — Immortalized cell line
🦠microbialE. coli K-12 MG1655 strain