syntax = "proto3";
package pulse.engine.bind;
option java_package = "pulse.engine.bind";
option csharp_namespace = "pulse.engine.bind";
option optimize_for = SPEED;

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

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

message StateData
{
  eAirwayMode                                   AirwayMode         = 1;
  pulse.cdm.bind.eSwitch                        Intubation         = 2;
  pulse.cdm.bind.ScalarTimeData                 SimulationTime     = 3;
  pulse.cdm.bind.PatientData                    CurrentPatient     = 4;
  pulse.cdm.bind.PatientData                    InitialPatient     = 5;
  pulse.cdm.bind.ConditionListData              Conditions         = 6;
  pulse.cdm.bind.ActionListData                 ActiveActions      = 7;
  pulse.cdm.bind.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;
  pulse.cdm.bind.CompartmentManagerData         CompartmentManager = 24;
  pulse.cdm.bind.CircuitManagerData             CircuitManager     = 25;
  repeated pulse.cdm.bind.SubstanceData         ActiveSubstance    = 26;
  repeated pulse.cdm.bind.SubstanceCompoundData ActiveCompound     = 27;
  ConfigurationData                             Configuration      = 28;
  pulse.cdm.bind.DataRequestManagerData         DataRequestManager = 29;
}
