syntax = "proto3";
package pulse.cpm.bind;
option java_package = "pulse.cpm.bind";
option csharp_namespace = "pulse.cpm.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/cpm/bind/PulsePhysiology.proto";
import "pulse/cpm/bind/PulseEnvironment.proto";
import "pulse/cpm/bind/PulseEquipment.proto";
import "pulse/cpm/bind/PulseConfiguration.proto";

enum eAirwayMode
{
  Free                                                               = 0;/**<<@brief Nothing hooked up to the patient airway */
  AnesthesiaMachine                                                  = 1;/**<<@brief Hooked up to this equipment */
  Inhaler                                                            = 2;/**<<@brief Hooked up to this equipment */
  MechanicalVentilation                                              = 3;/**<<@brief Physical ventilation being performed */
  MechanicalVentilator                                               = 4;/**<<@brief Hooked up to this equipment */
  NasalCannula                                                       = 5;/**<<@brief Hooked up to this equipment */
  NonRebreatherMask                                                  = 6;/**<<@brief Hooked up to this equipment */
  SimpleMask                                                         = 7;/**<<@brief Hooked up to this equipment */
}

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;
  MechanicalVentilatorData                      MechanicalVentilator = 24;
  pulse.cdm.bind.CompartmentManagerData         CompartmentManager   = 25;
  pulse.cdm.bind.CircuitManagerData             CircuitManager       = 26;
  repeated string                               ActiveSubstance      = 27;
  repeated string                               ActiveCompound       = 28;
  repeated pulse.cdm.bind.SubstanceData         Substance            = 29;
  repeated pulse.cdm.bind.SubstanceCompoundData Compound             = 30;
  ConfigurationData                             Configuration        = 31;
  pulse.cdm.bind.DataRequestManagerData         DataRequestManager   = 32;
}
