syntax = "proto3";
package pulse.proto;
option java_package = "com.kitware.physiology.pulse";
option optimize_for = SPEED;

import "cdm/Enums.proto";
import "cdm/Events.proto";
import "cdm/Patient.proto";
import "cdm/Properties.proto";
import "cdm/Engine.proto";
import "cdm/Substance.proto";
import "cdm/Compartment.proto";
import "cdm/Circuit.proto";
import "pulse/PulsePhysiology.proto";
import "pulse/PulseEnvironment.proto";
import "pulse/PulseEquipment.proto";
import "pulse/PulseConfiguration.proto";

enum eAirwayMode
{
  Free                                                     = 0;
  AnesthesiaMachine                                        = 1;
  Inhaler                                                  = 2;
  MechanicalVentilator                                     = 3;
  NasalCannula                                             = 4;
  SimpleMask                                               = 5;
  NonRebreatherMask                                        = 6;
}

message StateData
{
  eAirwayMode                        AirwayMode         = 1;
  cdm.eSwitch                        Intubation         = 2;
  cdm.ScalarTimeData                 SimulationTime     = 3;
  cdm.PatientData                    CurrentPatient     = 4;
  cdm.PatientData                    InitialPatient     = 5;
  cdm.ConditionListData              Conditions         = 6;
  cdm.ActionListData                 ActiveActions      = 7;
  cdm.ActiveEventListData            ActiveEvents       = 8;
  BloodChemistryData                 BloodChemistry     = 9;
  CardiovascularData                 Cardiovascular     = 10;
  DrugData                           Drug               = 11;
  EndocrineData                      Endocrine          = 12;
  EnergyData                         Energy             = 13;
  GastrointestinalData               Gastrointestinal   = 14;
  HepaticData                        Hepatic            = 15;
  NervousData                        Nervous            = 16;
  RenalData                          Renal              = 17;
  RespiratoryData                    Respiratory        = 18;
  TissueData                         Tissue             = 19;
  EnvironmentData                    Environment        = 20;
  AnesthesiaMachineData              AnesthesiaMachine  = 21;
  ElectroCardioGramData              ElectroCardioGram  = 22;
  InhalerData                        Inhaler            = 23;
  cdm.CompartmentManagerData         CompartmentManager = 24;
  cdm.CircuitManagerData             CircuitManager     = 25;
  repeated cdm.SubstanceData         ActiveSubstance    = 26;
  repeated cdm.SubstanceCompoundData ActiveCompound     = 27;
  ConfigurationData                  Configuration      = 28;
  cdm.DataRequestManagerData         DataRequestManager = 29;
}
