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

import "pulse/cdm/bind/AnesthesiaMachine.proto";
import "pulse/cdm/bind/BagValveMask.proto";
import "pulse/cdm/bind/ECMO.proto";
import "pulse/cdm/bind/ElectroCardioGram.proto";
import "pulse/cdm/bind/Inhaler.proto";
import "pulse/cdm/bind/MechanicalVentilator.proto";
import "pulse/cdm/bind/Properties.proto";

message AnesthesiaMachineData
{
  pulse.cdm.bind.AnesthesiaMachineData             Common                         = 1;
  bool                                             Inhaling                       = 2;
  double                                           CurrentBreathingCycleTime_s    = 3;
  double                                           InspirationTime_s              = 4;
  double                                           OxygenInletVolumeFraction      = 5;
  double                                           TotalBreathingCycleTime_s      = 6;
}

message BagValveMaskData
{
  pulse.cdm.bind.BagValveMaskData                  Common                         = 1;
  double                                           CurrentPeriodTime_s            = 2;
  double                                           SqueezeFlow_L_Per_s            = 3;
  double                                           SqueezePressure_cmH2O          = 4;
}

message ECMOData
{
  pulse.cdm.bind.ECMOData                          Common                                 = 1;
}

message ElectroCardioGramData
{
  pulse.cdm.bind.ElectroCardioGramData             Common                         = 1;
}


message InhalerData
{
  pulse.cdm.bind.InhalerData                        Common                         = 1;
}

message MechanicalVentilatorData
{
  pulse.cdm.bind.MechanicalVentilatorData          Common                                 = 1;
  double                                           CurrentInspiratoryVolume_L             = 2;
  double                                           CurrentPeriodTime_s                    = 3;
  double                                           CurrentRespiratoryVolume_L             = 4;
  double                                           CurrentVentilatorVolume_L              = 5;
  double                                           DriverPressure_cmH2O                   = 6;
  double                                           DriverFlow_L_Per_s                     = 7;
  double                                           EndTidalCarbonDioxideFraction          = 8;
  double                                           EndTidalCarbonDioxidePressure_cmH2O    = 9;
  double                                           EndTidalOxygenFraction                 = 10;
  double                                           EndTidalOxygenPressure_cmH2O           = 11;
  bool                                             Initializing                           = 12;
  double                                           InspirationTime_s                      = 13;
  double                                           InspiratoryFlow_L_Per_s                = 14;
  bool                                             LimitReached                           = 15;
  pulse.cdm.bind.RunningAverageData                MeanAirwayPressure_cmH2O               = 16;
  double                                           PreviousDriverFlow_L_Per_s             = 17;
  double                                           PreviousConnectionPressure_cmH2O       = 18;
  double                                           PreviousDriverPressure_cmH2O           = 19;
  double                                           PreviousYPieceToConnectionFlow_L_Per_s = 20;
  double                                           PositiveEndExpiratoryPressure_cmH2O    = 21;
}
