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

import "pulse/cdm/bind/Actions.proto";
import "pulse/cdm/bind/Enums.proto";
import "pulse/cdm/bind/PatientAssessments.proto";
import "pulse/cdm/bind/PatientNutrition.proto";
import "pulse/cdm/bind/Physiology.proto";
import "pulse/cdm/bind/Properties.proto";
import "pulse/cdm/bind/Substance.proto";

message AnyPatientActionData
{
  oneof Action
  {
    PatientAssessmentRequestData                       Assessment                                     = 1;
    AcuteRespiratoryDistressSyndromeExacerbationData   AcuteRespiratoryDistressSyndromeExacerbation   = 2;
    AcuteStressData                                    AcuteStress                                    = 3;
    AirwayObstructionData                              AirwayObstruction                              = 4;
    ArrhythmiaData                                     Arrhythmia                                     = 5;
    AsthmaAttackData                                   AsthmaAttack                                   = 6;
    BrainInjuryData                                    BrainInjury                                    = 7;
    BronchoconstrictionData                            Bronchoconstriction                            = 8;
    CardiovascularMechanicsModificationData            CardiovascularMechanicsModification            = 9;
    ChestCompressionData                               ChestCompression                               = 10;
    ChestCompressionAutomatedData                      ChestCompressionAutomated                      = 11;
    ChestCompressionInstantaneousData                  ChestCompressionInstantaneous                  = 12;
    ChestOcclusiveDressingData                         ChestOcclusiveDressing                         = 13;
    ChronicObstructivePulmonaryDiseaseExacerbationData ChronicObstructivePulmonaryDiseaseExacerbation = 14;
    ConsciousRespirationData                           ConsciousRespiration                           = 15;
    ConsumeNutrientsData                               ConsumeNutrients                               = 16;
    DyspneaData                                        Dyspnea                                        = 17;
    ExerciseData                                       Exercise                                       = 18;
    HemorrhageData                                     Hemorrhage                                     = 19;
    HemothoraxData                                     Hemothorax                                     = 20;
    ImpairedAlveolarExchangeExacerbationData           ImpairedAlveolarExchangeExacerbation           = 21;
    IntubationData                                     Intubation                                     = 22;
    MechanicalVentilationData                          MechanicalVentilation                          = 23;
    NeedleDecompressionData                            NeedleDecompression                            = 24;
    PericardialEffusionData                            PericardialEffusion                            = 25;
    PneumoniaExacerbationData                          PneumoniaExacerbation                          = 26;
    PrimaryBlastLungInjuryData                         PrimaryBlastLungInjury                         = 27;
    PulmonaryShuntExacerbationData                     PulmonaryShuntExacerbation                     = 28;
    RespiratoryFatigueData                             RespiratoryFatigue                             = 29;
    RespiratoryMechanicsConfigurationData              RespiratoryMechanicsConfiguration              = 30;
    RespiratoryMechanicsModificationData               RespiratoryMechanicsModification               = 31;
    SubstanceBolusData                                 SubstanceBolus                                 = 32;
    SubstanceCompoundInfusionData                      SubstanceCompoundInfusion                      = 33;
    SubstanceInfusionData                              SubstanceInfusion                              = 34;
    SupplementalOxygenData                             SupplementalOxygen                             = 35;
    TensionPneumothoraxData                            TensionPneumothorax                            = 36;
    TubeThoracostomyData                               TubeThoracostomy                               = 37;
    UrinateData                                        Urinate                                        = 38;
  }
}

message PatientActionData
{
  ActionData                                Action                          = 1;
}

message PatientAssessmentRequestData
{
  PatientActionData                         PatientAction                   = 1;
  ePatientAssessmentType                    Type                            = 2;/**<<@brief @ref ePatientAssessmentTypeTable */
}

message AcuteRespiratoryDistressSyndromeExacerbationData
{
  PatientActionData                         PatientAction                   = 1;
  repeated LungImpairmentData               Severity                        = 2;/**<<@brief A list of impairment severities for the lung compartments*/
}

/** @brief Fight or flight.  The body prepares to defend itself. */
message AcuteStressData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            Severity                        = 2;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
}

/** @brief A blockage of the Airway leading to no respiration/air flow in or out of the body. */
message AirwayObstructionData
{
  enum eResistanceType
  {
    Constant    = 0;/**<<@brief Obstruction provides a constant resistance. */
    Oscillating = 1;/**<<@brief Obstruction provides an oscillating resistance. Indicating blockage due to presence of secretions resulting in intermittent expiratory flow through the obstruction. */
  }
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            Severity                        = 2;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
  eResistanceType                           ResistanceType                  = 3;/**<<@brief Resistance model to use. */
}

/** @brief An arrhythmia is a problem with the rate or rhythm of your heartbeat.
           It means that your heart beats too quickly, too slowly, or with an irregular pattern. */
message ArrhythmiaData
{
  PatientActionData                         PatientAction                   = 1;
  eHeartRhythm                              Rhythm                          = 2;/**<<@brief @ref eHeartRhythmTable */
}

/** @brief A common inflammatory disease of the airways where air flow into the lungs is partially obstructed.
           This attack is acute asthma, which is an exacerbation of asthma that does not respond to standard treatments. */
message AsthmaAttackData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            Severity                        = 2;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
}

/** @brief A non-localized traumatic brain injury. */
message BrainInjuryData
{
  /** @brief Types of Brain Injury that provided different nervous responses.*/
  enum eType
  {
    Diffuse                                                                 = 0; /**<< @brief A brain injury dilating both eye pupils */
    LeftFocal                                                               = 1; /**<< @brief A brain injury dilating the left eye pupil */
    RightFocal                                                              = 2; /**<< @brief A brain injury dilating the right eye pupil */
  }

  PatientActionData                         PatientAction                   = 1;
  eType                                     Type                            = 2;/**<<@brief @ref BrainInjuryData_eTypeTable */
  Scalar0To1Data                            Severity                        = 3;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
}

/** @brief Constriction of the airways in the lungs due to tightening of surrounding smooth muscle. */
message BronchoconstrictionData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            Severity                        = 2;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
}

/** @brief Modify the %Cardiovascular mechanics. */
message CardiovascularMechanicsModificationData
{
  PatientActionData                         PatientAction                   = 1;
  oneof Option
  {
    CardiovascularMechanicsModifiersData    Modifiers                       = 2;/**<< @brief A CardiovascularMechanicsModification object with properties to set in the system object. */
    string                                  ModifiersFile                   = 3;/**<< @brief File containing a RespiratoryMechanics object with properties to set in the system object. */
  }
  bool                                      Incremental                     = 4;/**<< @brief When off (Default) the engine will Restabilize a new homeostasis state. Use true if you are incrementally driving modification with very small modifiers and the engine will not stabilize.*/
}

/** @brief A single CPR compression to the chest cavity in order to pump blood through the heart. */
message ChestCompressionData
{
  PatientActionData                         PatientAction                   = 1;

  // Chest Compression Modes
  oneof ForceMode
  {
    ScalarForceData                         Force                           = 2;/**<<@brief Amount of force applied to the chest*/
    ScalarLengthData                        Depth                           = 3;
  }

  ScalarTimeData                            CompressionPeriod               = 4;/**<<@brief The length of time the compression force is to be applied */
}

/** @brief Reoccuring CPR chest compressions to pump blood through the heart. */
message ChestCompressionAutomatedData
{
  PatientActionData                         PatientAction                   = 1;

  // Chest Compression Modes
  oneof ForceMode
  {
    ScalarForceData                         Force                           = 2;/**<<@brief Amount of force applied to the chest*/
    ScalarLengthData                        Depth                           = 3;
  }

  ScalarFrequencyData                       CompressionFrequency            = 4;/**<<@brief Compression rate, translates to heart rate. */
  Scalar0To1Data                            AppliedForceFraction            = 5;/**<<@brief OPTIONAL The fraction of the derived compression period to apply the given force for each compression. */
}

/** @brief CPR action to be used when connecting to hardware sensors or specifying your own waveform. Force will remain constant until explicitly changed */
message ChestCompressionInstantaneousData
{
  PatientActionData                         PatientAction                   = 1;

  // Chest Compression Modes
  oneof ForceMode
  {
    ScalarForceData                         Force                           = 2;/**<<@brief Amount of force applied to the chest*/
    ScalarLengthData                        Depth                           = 3;
  }
}

/** @brief Applies an occlusive dressing to either the left or right side of the chest. An occlusive dressing is an air and water-tight trauma dressing that provides immediate control of pressure and bleeding that occurs with an open pneumothorax. */
message ChestOcclusiveDressingData
{
  PatientActionData                         PatientAction                   = 1;
  eSwitch                                   State                           = 2;/**<<@brief @ref eSwitchTable */
  eSide                                     Side                            = 3;/**<<@brief @ref eSideTable */
}

/** @brief Worsen the effects of the Chronic Obstructive Pulmonary Disease condition. */
message ChronicObstructivePulmonaryDiseaseExacerbationData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            BronchitisSeverity              = 2;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
  repeated LungImpairmentData               EmphysemaSeverity               = 3;/**<<@brief A list of impairment severities for the lung compartments*/
}

/** @brief Reduction of achieved respiration rate and/or tidal volume by inhibiting the respiratory breathing mechanism (i.e., muscles of respiration).  Maximum severity of either will stop breathing completely. */
message DyspneaData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            RespirationRateSeverity         = 2;/**<<@brief Scale of affect for frequency of spontaneous breathing. */
  Scalar0To1Data                            TidalVolumeSeverity             = 3;/**<<@brief Scale of affect for amplitude of spontaneous breathing. */
}

/** @brief Force air out of the lungs. */
message ForcedInhaleData
{
  Scalar0To1Data                          InspiratoryCapacityFraction     = 1;/**<<@brief The fraction of the Inspiratory capacity that will be filled by the breath. */
  ScalarTimeData                          InhalePeriod                    = 2;/**<<@brief Duration of the inhale. */
  ScalarTimeData                          HoldPeriod                      = 3;/**<<@brief Duration to hold at the end of inhale. */
  ScalarTimeData                          ReleasePeriod                   = 4;/**<<@brief Duration to get back to equilibrium/FRC. */
}
/** @brief Force air into the lungs. */
message ForcedExhaleData
{
  Scalar0To1Data                          ExpiratoryReserveVolumeFraction = 1;/**<<@brief The fraction of the Expiratory Reserve Volume that is forced out of the body. */
  ScalarTimeData                          ExhalePeriod                    = 2;/**<<@brief Duration of the exhale. */
  ScalarTimeData                          HoldPeriod                      = 3;/**<<@brief Duration to at the end of exhale. */
  ScalarTimeData                          ReleasePeriod                   = 4;/**<<@brief Duration to get back to equilibrium/FRC. */
}
/** @brief Pause breathing at 0 pressure. There will be no inflow or out flow of air during the specified period */
message ForcedPauseData
{
  ScalarTimeData                          Period                          = 1;/**<<@brief Duration of the breath hold. */
}
/** @brief Administer a substance through an %Inhaler. This command will represent a single press of an %Inhaler. */
message UseInhalerData
{
}
message AnyConsciousRespirationCommandData
{
  string                                  Comment                         = 1;
  oneof Command
  {
    ForcedInhaleData                      ForcedInhale                    = 2;
    ForcedExhaleData                      ForcedExhale                    = 3;
    ForcedPauseData                       ForcedPause                     = 4;
    UseInhalerData                        UseInhaler                      = 5;
  }
}
/** @brief An ordered list of conscious breath commands for the patient to preform. */
message ConsciousRespirationData
{
  PatientActionData                           PatientAction                   = 1;
  bool                                        StartImmediately                = 2;
  repeated AnyConsciousRespirationCommandData Command                         = 3;
}

/** @brief Consume nutrients into the body. */
message ConsumeNutrientsData
{
  PatientActionData                         PatientAction                   = 1;
  oneof Option
  {
    NutritionData                           Nutrition                       = 2;/**<<@brief @ref NutritionTable*/
    string                                  NutritionFile                   = 3;/**<<@brief External file containing a NutritionData definition*/
  }
}

/** @brief Increase the patient's metabolic rate leading to an increase in core temperature, cardiac output, respiration rate and tidal volume. */
message ExerciseData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            Intensity                       = 2;/**<<@brief Fractional representation of the maximum patient exertion */
}

/** @brief A hemorrhage is the loss of blood escaping from the circulatory system. Typically, a healthy person can endure a loss of 10 to 15 percent of the total blood volume without serious medical difficulties. */
message HemorrhageData
{
  /** @brief Compartments Supporting External Hemorrhages.*/
  enum eCompartment
  {
    None                                                            = 0;
    Aorta                                                           = 1;
    Brain                                                           = 2;
    Muscle                                                          = 3;
    LargeIntestine                                                  = 4;
    LeftArm                                                         = 5;
    LeftKidney                                                      = 6;
    LeftLeg                                                         = 7;
    Liver                                                           = 8;
    RightArm                                                        = 9;
    RightKidney                                                     = 10;
    RightLeg                                                        = 11;
    Skin                                                            = 12;
    SmallIntestine                                                  = 13;
    Splanchnic                                                      = 14;
    Spleen                                                          = 15;
    VenaCava                                                        = 16;
  }
  
  enum eType
  {
    External                                                        = 0;
    Internal                                                        = 1;
  }
  
  /** The intended usage of this action is:
   *    - Severity has precidence over FlowRate (if both provided, use Severity)
   *    - Setting FlowRate will make the hemorrhage flow constant
   *    - Flow will be set by the engine, when using a Severity
   *    - Total Blood Lost is only set by the engine (user cannot set)
   */

  PatientActionData                         PatientAction                   = 1;
  eCompartment                              Compartment                     = 2;
  eType                                     Type                            = 3;
  // NOTE: Flow rate is filled out with the current flow rate when severity is used (hence no option group)
  ScalarVolumePerTimeData                   FlowRate                        = 4;/**<<@brief The flow rate of blood exiting the specified compartment. Set to zero to stop the bleeding rate. */
  Scalar0To1Data                            Severity                        = 5;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
  ScalarVolumeData                          TotalBloodLost                  = 6;/**<<@brief Total blood lost from this hemorrhage. */
}

/** @brief A hemothorax is an abnormal collection of blood in the pleural space that separates the lung from the chest wall. */
message HemothoraxData
{
  /** The intended usage of this action is:
   *    - Severity has precidence over FlowRate (if both provided, use Severity)
   *    - Setting FlowRate will make the flow constant
   *    - When using a Severity, Flow will be set by the engine
   *    - Blood Volume is only set by the engine (user cannot set)
   */

  PatientActionData                         PatientAction                   = 1;
  eSide                                     Side                            = 2;/**<<@brief @ref eSideTable */
  Scalar0To1Data                            Severity                        = 3;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
  ScalarVolumePerTimeData                   FlowRate                        = 4;/**<<@brief The flow rate of blood exiting the hemothorax. Set to zero to stop the bleeding rate. */
  ScalarVolumeData                          TotalBloodVolume                = 6;/**<<@brief *Output Only* Total blood volume of this hemothorax. */
}

/** @brief Generic way to specify the effectivness of alveolar exchange. */
message ImpairedAlveolarExchangeExacerbationData
{
  PatientActionData                         PatientAction                   = 1;
  oneof Value
  {
    ScalarAreaData                          ImpairedSurfaceArea             = 2;/**<< @brief Surface Area of the impaired alveoli. */
    Scalar0To1Data                          ImpairedFraction                = 3;/**<< @brief Surface Area Fraction of the impaired alveoli. */
    Scalar0To1Data                          Severity                        = 4;/**<< @brief Scale of affect, 0 being none, 1 being the highest possible. */
  }
}

/** @brief Insertion of tube or adjuct into the patient's airway */
message IntubationData
{
  /** @brief Enumeration Types of Intubation/Airway Adjuncts. */
  enum eType
  {
   Off                                                                      = 0; /**<< @brief Remove intubation */
   Esophageal                                                               = 1; /**<< @brief Insert into the Esophagus */
   LeftMainstem                                                             = 2; /**<< @brief Insert into the left main stem inflating only the left lung */
   RightMainstem                                                            = 3; /**<< @brief Insert into the right main stem inflating only the right lung  */
   Tracheal                                                                 = 4; /**<< @brief Insert into the Trachea */
   Oropharyngeal                                                            = 5; /**<< @brief Oropharyngeal Adjunct */
   Nasopharyngeal                                                           = 6; /**<< @brief Nasopharyngeal Adjunct */
  }
  PatientActionData                         PatientAction                   = 1;
  eType                                     Type                            = 2;/**<<@brief @ref IntubationData_eTypeTable*/
  ScalarPressureTimePerVolumeData           AirwayResistance                = 3;/**<< @brief Resistance introduced to the airway by the equipment. */
  Scalar0To1Data                            Severity                        = 4;/**<< @brief Scale of affect, 0 has no affect on airflow in the tube or compartments, 1 air only flows through the tube. */
}

/** @brief Mechanically breathing for the patient, such as with a squeeze bag or other equipment. */
message MechanicalVentilationData
{
  PatientActionData                         PatientAction                   = 1;
  eSwitch                                   State                           = 2;/**<<@brief Turns action processing off and on*/
  ScalarVolumePerTimeData                   Flow                            = 3;/**<<@brief Flow produced */
  ScalarPressureData                        Pressure                        = 4;/**<<@brief Pressure produced */
  ScalarVolumeData                          MechanicalDeadSpaceVolume       = 5;/**<<@brief volume of gas rebreathed from the mechanical parts of the circuit */
  repeated SubstanceFractionData            GasFraction                     = 6;/**<<@brief Break down of the gases in the equipment, fractions must add up to 1 */
  repeated SubstanceConcentrationData       Aerosol                         = 7;/**<<@brief Break down of the aerosolized solid/liquid substances in the equipment */
}

/** @brief A 14-16G intravenous caninula is inserted into the second rib-space in the mid-clavcular line. The needle is advanced until air can be aspirated into a connecting syringe. The needle is withdrawn and the caninula is left to allow air flow out of the pleural space. This effectively converts the closed pneumothorax into an open pneumothorax. */
message NeedleDecompressionData
{
  PatientActionData                         PatientAction                   = 1;
  eSwitch                                   State                           = 2;/**<<@brief @ref eSwitchTable*/
  eSide                                     Side                            = 3;/**<<@brief @ref eSideTable*/
}

/** @brief Pericardial effusion ("fluid around the heart") is an abnormal accumulation of fluid in the pericardial cavity. Because of the limited amount of space in the pericardial cavity, fluid accumulation leads to an increased intrapericardial pressure which can negatively affect heart function. A pericardial effusion with enough pressure to adversely affect heart function is called cardiac tamponade. Pericardial effusion usually results from a disturbed equilibrium between the production andre-absorption of pericardial fluid, or from a structural abnormality that allows fluid to enter the pericardial cavity. Normal levels of pericardial fluid are from 15 to 50 mL. */
message PericardialEffusionData
{
  PatientActionData                         PatientAction                   = 1;
  ScalarVolumePerTimeData                   EffusionRate                    = 2;/**<<@brief Rate at which fluid is filling the pericardial cavity*/
}

/** @brief Worsen the effects of the Pneumonia condition. */
message PneumoniaExacerbationData
{
  PatientActionData                         PatientAction                   = 1;
  repeated LungImpairmentData               Severity                        = 2;/**<< @brief A list of impairment severities for the lung compartments*/
}

/** @brief Acute lung injury from blast over-pressure on the thorax. */
message PrimaryBlastLungInjuryData
{
  PatientActionData                         PatientAction                   = 1;
  repeated LungImpairmentData               Severity                        = 2;/**<< @brief A list of impairment severities for the lung compartments*/
}

/** @brief Pulmonary shunt is when the alveoli of the lungs are perfused with blood as normal, but ventilation (the supply of air) fails to supply the perfused region */
message PulmonaryShuntExacerbationData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            Severity                        = 2;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible.*/
}

/** @brief %Respiratory muscle weakness caused by excessive effort relative to the strength and endurance of the muscles. */
message RespiratoryFatigueData
{
  PatientActionData                         PatientAction                   = 1;
  Scalar0To1Data                            Severity                        = 2;/**<<@brief Scale of affect, 0 no dyspnea, 1 having dyspnea. */
}

/** @brief Update the parameters of the %Respiratory mechanics. */
message RespiratoryMechanicsConfigurationData
{
  PatientActionData                         PatientAction                   = 1;
  oneof Option
  {
    RespiratoryMechanicsData                Settings                        = 2;/**<< @brief A RespiratoryMechanics object with properties to set in the system object. */
    string                                  SettingsFile                    = 3;/**<< @brief File containing a RespiratoryMechanics object with properties to set in the system object. */
  }
  eAppliedRespiratoryCycle                  AppliedCycle                    = 4;/**<< @brief When to apply these mechanics in the respiratory cycle. */
  eMergeType                                MergeType                       = 5;/**<< @brief How to apply provided configuration to internal data model. */
}

/** @brief Modify the %Respiratory mechanics. */
message RespiratoryMechanicsModificationData
{
  PatientActionData                         PatientAction                   = 1;
  oneof Option
  {
    RespiratoryMechanicsModifiersData       Modifiers                       = 2;/**<< @brief A RespiratoryMechanicsModification object with properties to set in the system object. */
    string                                  ModifiersFile                   = 3;/**<< @brief File containing a RespiratoryMechanics object with properties to set in the system object. */
  }
  bool                                      Incremental                     = 4;/**<< @brief When off (Default) the engine will Restabilize a new homeostasis state. Use true if you are incrementally driving modification with very small modifiers and the engine will not stabilize.*/
}

/** @brief An administration of a substance that is given all at one time to raise its concentration in blood to an effective level. */
message SubstanceBolusData
{
  /** @brief Types of Substance Administration means.*/
  enum eRoute
  {
    Intravenous                                                             = 0; /**<< @brief Injection into a vein */
    Epidural                                                                = 1; /**<< @brief Injection into a epidural space */
    Intraosseous                                                            = 2; /**<< @brief Injection into the bone marrow */
    Intraarterial                                                           = 3; /**<< @brief Injection into an artery */
    Intracardiac                                                            = 4; /**<< @brief Injection into the heart */
    Intracerebral                                                           = 5; /**<< @brief Injection into the brain */
    Intracerebroventricular                                                 = 6; /**<< @brief Injection into the cerebral ventricles */
    Intradermal                                                             = 7; /**<< @brief Injection into the skin */
    Intramuscular                                                           = 8; /**<< @brief Injection into the muscle */
    Subcutaneous                                                            = 9; /**<< @brief Injection under the skin */
  }

  PatientActionData                         PatientAction                   = 1;
  string                                    Substance                       = 2;/**<<@brief @ref SubstanceTable */
  eRoute                                    AdministrationRoute             = 3;/**<<@brief @ref SubstanceBolusData_eRouteTable */
  ScalarTimeData                            AdministrationDuration          = 4;/**<<@brief Length of time taken to fully administer the bolus. */
  ScalarMassPerVolumeData                   Concentration                   = 5;/**<<@brief Concentration of the dose to administer. */
  ScalarVolumeData                          Dose                            = 6;/**<<@brief Volume of dose to administer. */
  ScalarVolumeData                          TotalInfusedDose                = 7;/**<<@brief Amount of volume that has been infused at the current time. */
}

/** @brief Continuous injection of a compound. */
message SubstanceCompoundInfusionData
{
  PatientActionData                         PatientAction                   = 1;
  string                                    SubstanceCompound               = 2;/**<<@brief */
  ScalarVolumeData                          BagVolume                       = 3;/**<<@brief Amount of substance in bag */
  ScalarVolumePerTimeData                   Rate                            = 4;/**<<@brief Flow rate of the infusion into the body. */
}

/** @brief Continuous injection of a specific substance. */
message SubstanceInfusionData
{
  PatientActionData                         PatientAction                   = 1;
  string                                    Substance                       = 2;/**<<@brief @ref SubstanceTable */
  ScalarMassPerVolumeData                   Concentration                   = 3;/**<<@brief Concentration of the dose to administer. */
  ScalarVolumePerTimeData                   Rate                            = 4;/**<<@brief Flow rate of the infusion into the body. */
  ScalarVolumeData                          Volume                          = 5;/**<<@brief Amount of substance to infuse */
}

/** @brief Extra Oxygen provided to the patient. */
message SupplementalOxygenData
{
  enum eDevice
  {
    None                                                                    = 0;/**<<@brief device is removed. */
    NasalCannula                                                            = 1;/**<<@brief Nasal Cannula. */
    SimpleMask                                                              = 2;/**<<@brief Simple Mask. */
    NonRebreatherMask                                                       = 3;/**<<@brief Non-Rebreather Mask. */
  }
  PatientActionData                         PatientAction                   = 1;
  eDevice                                   Device                          = 2;/**<<@brief @ref SupplementalOxygenData_eDeviceTable */
  ScalarVolumePerTimeData                   Flow                            = 3;/**<<@brief Flow rate through the device. */
  ScalarVolumeData                          Volume                          = 4;/**<<@brief The amount of Oxygen to supplement */
}

/** @brief A pneumothorax is an abnormal collection of air or gas in the pleural space that separates the lung from the chest wall. Like pleural effusion (liquid buildup in that space), pneumothorax may interfere with normal breathing. */
message TensionPneumothoraxData
{
  PatientActionData                         PatientAction                   = 1;
  eGate                                     Type                            = 2;/**<<@brief @ref eGateTable */
  eSide                                     Side                            = 3;/**<<@brief @ref eSideTable */
  Scalar0To1Data                            Severity                        = 4;/**<<@brief Scale of affect, 0 being none, 1 being the highest possible. */
}

/** @brief Tube thoracostomy is the insertion of a tube (chest tube) into the pleural cavity to drain air, blood, bile, pus, or other fluids. */
message TubeThoracostomyData
{
  PatientActionData                         PatientAction                   = 1;
  eSide                                     Side                            = 2;/**<<@brief @ref eSideTable*/
  ScalarVolumePerTimeData                   FlowRate                        = 3;/**<<@brief OPTIONAL Suction flow rate. */
}

/** @brief Empty the bladder of its contents */
message UrinateData
{
  PatientActionData                         PatientAction                   = 1;
}
