pneumonia-patient-simulator
v1.0.0
Published
Real-time physiological signal simulation of pneumonia patient using a transformer-based surrogate model
Downloads
13
Maintainers
Readme
Patient Simulator
Real-time physiological signal simulation using a transformer-based surrogate model with ONNX Runtime Web.
Installation
npm install pneumonia-patient-simulator onnxruntime-webUsage
import { PatientSimulator } from 'pneumonia-patient-simulator';
// Create simulator instance
const simulator = new PatientSimulator({
fps: 30, // Simulation frequency (default: 30)
initialState: 0, // Initial patient state (default: 0)
});
// Initialize with model and scalers
await simulator.initialize(
'./surrogate_model_v3.onnx',
'./scalers_v3.json'
);
// Subscribe to data events
simulator.on('data', (data) => {
// Plot variables (fast waveforms)
console.log('ECG:', data.plot['Ecg.ecg']);
console.log('Pressure:', data.plot['EithaPressure.pressure']);
// Monitor variables (clinical metrics)
console.log('Heart Rate:', data.monitor['currentHeartReat.y']);
console.log('SpO2:', data.monitor['arterial.sO2']);
});
// Subscribe to state changes
simulator.on('stateChange', ({ from, to }) => {
console.log(`State changed from ${from} to ${to}`);
});
// Start simulation
simulator.start();
// Change patient state
simulator.setState(1); // Pneumonia
// Stop simulation
simulator.stop();
// Clean up
simulator.dispose();Patient States
| ID | Name | Description | |----|------|-------------| | 0 | Normal | Healthy patient | | 1 | Pneumonia | Patient with pneumonia | | 2 | Ventilated | Patient on mechanical ventilation | | 3 | Stabilized | Stabilized patient |
Output Variables
Plot Variables (Fast Waveforms)
lungs.q_in[1].p- Lung pressurelungs.q_in[1].m_flow- Lung flowEcg.ecg- ECG signalEithaPressure.pressure- Arterial pressure waveform
Monitor Variables (Clinical Metrics)
filter.y- Filtered signalcurrentHeartReat.y- Heart rateHRAdd.y- HR additive componentarterialPressure.systolic- Systolic BParterialPressure.diastolic- Diastolic BParterial.sO2- Arterial oxygen saturationarterial.pO2- Arterial partial pressure O2arterial.pCO2- Arterial partial pressure CO2arterial.pH- Arterial pHtissueUnit[1].pH- Tissue pHvenous.pH- Venous pH
API Reference
PatientSimulator
Constructor
new PatientSimulator(config?: SimulatorConfig)Methods
| Method | Description |
|--------|-------------|
| initialize(modelPath, scalersPath) | Load ONNX model and scalers |
| start() | Start simulation loop |
| stop() | Stop simulation loop |
| setState(state: 0-3) | Set patient state |
| getState() | Get current state |
| getStateInfo() | Get state name and ID |
| isActive() | Check if running |
| getTimestep() | Get current timestep |
| reset() | Reset to initial state |
| on(event, callback) | Subscribe to events |
| off(event, callback) | Unsubscribe from events |
| dispose() | Clean up resources |
Events
| Event | Payload | Description |
|-------|---------|-------------|
| data | SimulationData | Emitted at each simulation step |
| stateChange | { from, to } | Emitted when state changes |
| start | { timestep } | Emitted when simulation starts |
| stop | { timestep } | Emitted when simulation stops |
| error | Error | Emitted on error |
Model Files
The package requires two model files:
surrogate_model_v3.onnx- ONNX model filescalers_v3.json- Normalization parameters
These should be served from your application and their paths provided to initialize().
Browser Compatibility
Requires browsers with WebAssembly support (all modern browsers).
License
MIT
