Skip to main content

Sample

Represents an oil sample with complete analysis results including wear metals, contaminants, particle counts, and viscosity measurements.
export interface Sample {
  id: string;
  site: {
    id: string;
    name?: string;
  };
  asset: {
    id: string;
    name?: string;
  };
  sampling_point: {
    id: string;
    name?: string;
  };
  serial_number: string;
  date_sampled: number;
  lab_name: string;
  service_meter_reading: string;
  hrs: string;
  oil_in_service: string;
  filter_changed: string;
  oil_drained: string;
  severity: string;
  wear_metals: WearMetal[];
  contaminants: Contaminant[];
  particle_counts: ParticleCount[];
  viscosity_levels: ViscosityLevel[];
  created_at_datetime: string;
  updated_at_datetime: string;
}

Fields

id
string
required
Unique identifier for the sample
site
object
required
Reference to the site where sample was taken
asset
object
required
Reference to the asset being sampled
sampling_point
object
required
Reference to the specific sampling point on the asset
serial_number
string
required
Sample serial number for tracking
date_sampled
number
required
Unix timestamp when sample was collected
lab_name
string
required
Name of the laboratory that analyzed the sample
service_meter_reading
string
required
Equipment service meter reading at time of sampling
hrs
string
required
Operating hours on the oil
oil_in_service
string
required
Duration oil has been in service
filter_changed
string
required
Date or status of last filter change
oil_drained
string
required
Date or status of last oil drain
severity
string
required
Overall severity assessment of the sample results
wear_metals
WearMetal[]
required
Array of wear metal measurements (see WearMetal type below)
contaminants
Contaminant[]
required
Array of contaminant measurements (see Contaminant type below)
particle_counts
ParticleCount[]
required
Array of particle count measurements (see ParticleCount type below)
viscosity_levels
ViscosityLevel[]
required
Array of viscosity measurements at different temperatures (see ViscosityLevel type below)
created_at_datetime
string
required
ISO 8601 timestamp when sample record was created
updated_at_datetime
string
required
ISO 8601 timestamp when sample record was last updated

WearMetal

Represents a single wear metal measurement in the oil sample.
export interface WearMetal {
  element: string;
  value: number;
  unit: string;
}

Fields

element
string
required
Chemical element symbol (e.g., “Fe”, “Cu”, “Cr”, “Al”, “Pb”)
value
number
required
Measured concentration value
unit
string
required
Unit of measurement (typically “ppm” - parts per million)

Common Wear Metals

Common wear metals and their sources:
  • Iron (Fe): Gears, bearings, cylinders
  • Copper (Cu): Bearings, bushings, coolers
  • Chromium (Cr): Rings, liners, shafts
  • Aluminum (Al): Pistons, thrust washers
  • Lead (Pb): Bearings, bushings
  • Tin (Sn): Bearings, bushings
  • Silicon (Si): Dirt, seals, coolant contamination

Contaminant

Represents a contaminant measurement in the oil sample.
export interface Contaminant {
  type: string;
  value: number;
  unit: string;
}

Fields

type
string
required
Type of contaminant (e.g., “Water”, “Fuel”, “Glycol”, “Soot”)
value
number
required
Measured concentration value
unit
string
required
Unit of measurement (varies by contaminant type: ”%”, “ppm”, etc.)

Common Contaminants

  • Water: Causes rust, oxidation, and reduces lubricating properties
  • Fuel Dilution: Reduces viscosity and load-carrying capacity
  • Glycol: Indicates coolant leakage
  • Soot: Carbon particles from combustion

ParticleCount

Represents particle count measurements at different size ranges.
export interface ParticleCount {
  size_range: string;
  count: number;
  unit: string;
}

Fields

size_range
string
required
Particle size range (e.g., “>4μm”, “>6μm”, “>14μm”, “>21μm”)
count
number
required
Number of particles detected in this size range
unit
string
required
Unit of measurement (typically “particles/mL”)

ISO Cleanliness Codes

Particle counts are often expressed using ISO 4406 cleanliness codes:
  • Format: XX/YY/ZZ
  • XX: particles ≥4μm per mL
  • YY: particles ≥6μm per mL
  • ZZ: particles ≥14μm per mL
Example: 18/16/13 indicates moderate contamination

ViscosityLevel

Represents viscosity measurement at a specific temperature.
export interface ViscosityLevel {
  temperature: number;
  viscosity: number;
  unit: string;
}

Fields

temperature
number
required
Temperature at which viscosity was measured (typically in °C or °F)
viscosity
number
required
Measured viscosity value
unit
string
required
Unit of measurement (typically “cSt” - centistokes or “mm²/s”)
Viscosity is typically measured at standard temperatures:
  • 40°C: Operating temperature viscosity
  • 100°C: High temperature viscosity
Changes in viscosity indicate oil degradation, contamination, or wrong oil grade.

SampleFilters

Filter options for querying samples.
export interface SampleFilters {
  search?: string;
  site_id?: string;
  asset_id?: string;
  sampling_point_id?: string;
  lab_name?: string;
}

Fields

Search term for serial number or general text search
site_id
string
Filter by specific site ID
asset_id
string
Filter by specific asset ID
sampling_point_id
string
Filter by specific sampling point ID
lab_name
string
Filter by laboratory name

Usage Example

import type { Sample, WearMetal, Contaminant } from '@/types';

// Create a sample with analysis results
const sample: Sample = {
  id: 'sample_123',
  site: { id: 'site_1', name: 'Plant A' },
  asset: { id: 'asset_456', name: 'Motor Pump 01' },
  sampling_point: { id: 'sp_789', name: 'Main Bearing' },
  serial_number: 'S-2024-001',
  date_sampled: Date.now(),
  lab_name: 'AccuLab Testing',
  service_meter_reading: '15000',
  hrs: '500',
  oil_in_service: '6 months',
  filter_changed: '3 months ago',
  oil_drained: 'No',
  severity: 'Normal',
  wear_metals: [
    { element: 'Fe', value: 45, unit: 'ppm' },
    { element: 'Cu', value: 12, unit: 'ppm' },
    { element: 'Cr', value: 3, unit: 'ppm' }
  ],
  contaminants: [
    { type: 'Water', value: 0.05, unit: '%' },
    { type: 'Fuel', value: 1.2, unit: '%' }
  ],
  particle_counts: [
    { size_range: '>4μm', count: 5000, unit: 'particles/mL' },
    { size_range: '>6μm', count: 2500, unit: 'particles/mL' },
    { size_range: '>14μm', count: 630, unit: 'particles/mL' }
  ],
  viscosity_levels: [
    { temperature: 40, viscosity: 68, unit: 'cSt' },
    { temperature: 100, viscosity: 8.5, unit: 'cSt' }
  ],
  created_at_datetime: new Date().toISOString(),
  updated_at_datetime: new Date().toISOString()
};

// Analyze wear metals
sample.wear_metals.forEach((metal: WearMetal) => {
  console.log(`${metal.element}: ${metal.value} ${metal.unit}`);
});

Inventory Types

Samples are linked to assets and sites

Recommendation Types

Sample results may trigger recommendations

Build docs developers (and LLMs) love