More...

#include <Gastrointestinal.h>

Inheritance diagram for biogears::Gastrointestinal:

Public Member Functions

virtual ~Gastrointestinal () override
 
const char * classname () const override
 
size_t hash_code () const override
 
void Clear () override
 
void Initialize () override
 Initializes system properties to valid homeostatic values. More...
 
virtual bool Load (const CDM::BioGearsGastrointestinalSystemData &in)
 
virtual CDM::BioGearsGastrointestinalSystemDataUnload () const override
 
void AtSteadyState () override
 Do anything needed between stabilization. More...
 
void PreProcess () override
 Gastrointestinal Preprocess function. More...
 
void Process () override
 Gastrointestinal Preprocess function. More...
 
void PostProcess () override
 Gastrointestinal postprocess function. More...
 
- Public Member Functions inherited from biogears::SEGastrointestinalSystem
 SEGastrointestinalSystem (Logger *logger)
 
 ~SEGastrointestinalSystem () override
 
const SEScalarGetScalar (const char *name) override
 
const SEScalarGetScalar (const std::string &name) override
 
bool HasChymeAbsorptionRate () const
 
SEScalarVolumePerTimeGetChymeAbsorptionRate ()
 
double GetChymeAbsorptionRate (const VolumePerTimeUnit &unit) const
 
bool HasStomachContents () const
 
SENutritionGetStomachContents ()
 
const SENutritionGetStomachContents () const
 
void RemoveStomachContents ()
 
std::map< const SESubstance *, SEDrugTransitState * > GetDrugTransitStates ()
 
SEDrugTransitStateGetDrugTransitState (const SESubstance *sub)
 
SEDrugTransitStateNewDrugTransitState (const SESubstance *sub)
 
bool Load (const CDM::GastrointestinalSystemData &in)
 
Tree< const char * > GetPhysiologyRequestGraph () const override
 
- Public Member Functions inherited from biogears::SESystem
 SESystem (Logger *logger)
 
virtual ~SESystem ()
 
bool Load (const CDM::SystemData &in)
 
- Public Member Functions inherited from biogears::Loggable
 Loggable ()
 
 Loggable (Logger *log)
 
virtual ~Loggable ()
 
virtual LoggerGetLogger () const
 

Static Public Member Functions

static size_t TypeHash ()
 
static constexpr char const *const TypeTag ()
 Hopefully this returns a unique ID for every type. More...
 
- Static Public Member Functions inherited from biogears::SEGastrointestinalSystem
static size_t TypeHash ()
 
static constexpr char const *const TypeTag ()
 Hopefully this returns a unique ID for every type. More...
 
- Static Public Member Functions inherited from biogears::SESystem
static const SEScalarGetScalar (const char *name, std::vector< SESystem * > *systems)
 
static const SEScalarGetScalar (const std::string &name, std::vector< SESystem * > *systems)
 

Protected Member Functions

 Gastrointestinal (BioGears &bg)
 
virtual void Unload (CDM::BioGearsGastrointestinalSystemData &data) const
 
void SetUp () override
 
void GastricSecretion (double duration_s)
 Absorb fluids from the tissues back into the stomach so it always has fluid in it. More...
 
void AbsorbNutrients ()
 Absorb substances from the gut into the vascular system via the small intestine. More...
 
void DigestNutrient ()
 Digestion code to convert nutrients into appropriate product due to enzyme interaction. More...
 
void AbsorbMeal (double duration_s)
 Absorb a meal over a specified length of time. More...
 
void AbsorbNutrients (double duration_s)
 Absorb substances from the gut into the vascular system via the small intestine. More...
 
void ProcessDrugCAT ()
 Compartment Absorption Transit (CAT) model for drug dissolution and transport through the gastrointestinal system. More...
 
void ChymeSecretion ()
 Secrete sodium into the intestinal chyme. More...
 
- Protected Member Functions inherited from biogears::SEGastrointestinalSystem
void Unload (CDM::GastrointestinalSystemData &data) const
 
- Protected Member Functions inherited from biogears::SESystem
void Unload (CDM::SystemData &data) const
 
- Protected Member Functions inherited from biogears::Loggable
virtual void Debug (const char *msg, const char *origin="") const
 
virtual void Debug (const std::string &msg, const std::string &origin=empty) const
 
virtual void Debug (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Info (const char *msg, const char *origin="") const
 
virtual void Info (const std::string &msg, const std::string &origin=empty) const
 
virtual void Info (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Warning (const char *msg, const char *origin="") const
 
virtual void Warning (const std::string &msg, const std::string &origin=empty) const
 
virtual void Warning (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Error (const char *msg, const char *origin="") const
 
virtual void Error (const std::string msg, const std::string origin=empty) const
 
virtual void Error (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Fatal (const char *msg, const char *origin="") const
 
virtual void Fatal (const std::string &msg, const std::string &origin=empty) const
 
virtual void Fatal (std::ostream &msg, const std::string &origin=empty) const
 
- Protected Member Functions inherited from biogears::BioGearsSystem
virtual void LoadState ()
 

Static Protected Member Functions

static auto make_unique (BioGears &bg) -> std::unique_ptr< Gastrointestinal >
 

Protected Attributes

BioGearsm_data
 
SELiquidCompartmentm_SmallIntestineChyme
 
SELiquidCompartmentm_vSmallIntestine
 
SELiquidCompartmentm_Lymph
 
SELiquidSubstanceQuantitym_SmallIntestineChymeAlbumin
 
SELiquidSubstanceQuantitym_SmallIntestineChymeAminoAcids
 
SELiquidSubstanceQuantitym_SmallIntestineChymeGlucose
 
SELiquidSubstanceQuantitym_SmallIntestineChymeTriacylglycerol
 
SELiquidSubstanceQuantitym_SmallIntestineChymeCalcium
 
SELiquidSubstanceQuantitym_SmallIntestineChymeSodium
 
SELiquidSubstanceQuantitym_SmallIntestineChymeUrea
 
SELiquidSubstanceQuantitym_SmallIntestineVascularSodium
 
SELiquidSubstanceQuantitym_smallIntestineVascularGlucose
 
SELiquidSubstanceQuantitym_smallIntestineVascularAminoAcids
 
SELiquidSubstanceQuantitym_SmallIntestineVascularCalcium
 
SELiquidSubstanceQuantitym_LymphTriacylglycerol
 
SELiquidSubstanceQuantitym_smallintestineVAscularTriacylglycerol
 
SEFluidCircuitPathm_GItoCVPath
 
SEFluidCircuitPathm_GutE3ToGroundPath
 
SEScalarMassPerTime m_CalciumDigestionRate
 
SEScalarVolumePerTime m_WaterDigestionRate
 
std::vector< double > m_TransitPH
 
std::vector< double > m_TransitVolume_mL
 
std::vector< double > m_TransitSurfaceArea_cm2
 
std::vector< double > m_EnterocyteVolumeFraction
 
std::vector< double > m_TransitRate_Per_s
 
std::vector< double > m_TransitBileSalts_mM
 
std::map< SELiquidSubstanceQuantity *, double > m_InitialSubstanceMasses_ug
 
bool m_ConsumeRate
 
bool m_DecrementNutrients
 
double m_secretionRate_mL_Per_s
 
double m_dT_s
 
- Protected Attributes inherited from biogears::SEGastrointestinalSystem
SEScalarVolumePerTimem_ChymeAbsorptionRate
 
SENutritionm_StomachContents
 
std::map< const SESubstance *, SEDrugTransitState * > m_DrugTransitStates
 
- Protected Attributes inherited from biogears::SESystem
std::stringstream m_ss
 
- Protected Attributes inherited from biogears::Loggable
Loggerm_Logger
 

Friends

class BioGears
 
class BioGearsEngineTest
 

Additional Inherited Members

- Static Public Attributes inherited from biogears::Loggable
static const std::string empty
 
static const char * empty_cStr
 

Detailed Description

Constructor & Destructor Documentation

biogears::Gastrointestinal::Gastrointestinal ( BioGears bg)
protected
biogears::Gastrointestinal::~Gastrointestinal ( )
overridevirtual

Member Function Documentation

void biogears::Gastrointestinal::AbsorbMeal ( double  duration_min)
protected

Absorb a meal over a specified length of time.

This method supports the ConsumeMeal Condition, it will move the provided meal into the stomach Digest food for the specified length of time and move it to the Gut, then calculate the amount of substance that would then have been absorbed from the Gut and distributes that mass throughout the body tissues

void biogears::Gastrointestinal::AbsorbNutrients ( )
protected

Absorb substances from the gut into the vascular system via the small intestine.

Move substances from the chyme system into the vascular system based on a rate that is a function of the sodium mass in the chyme. co-transporters are used to carry glucose and amino acids Sodium absorption rate is determined by a hill-type function that increases during heavy nutrient loads. Water moves at a constant rate and doesn't transport substances with it because there isn't a compartment link connecting the chyme and vasculature.

void biogears::Gastrointestinal::AbsorbNutrients ( double  duration_s)
protected

Absorb substances from the gut into the vascular system via the small intestine.

Move substances from the chyme system into the vascular system based on a rate that is a function of the sodium concentration in the body. This function is deprecated as of 6.2 but is included to support meal conditions that will be updated as of 6.3

void biogears::Gastrointestinal::AtSteadyState ( )
overridevirtual

Do anything needed between stabilization.

At the end of resting stabilization we apply a ConsumeMeal condition to modify the body state if no condition is present we reset the body state substance levels to their original level

Reimplemented from biogears::BioGearsSystem.

void biogears::Gastrointestinal::ChymeSecretion ( )
protected

Secrete sodium into the intestinal chyme.

Secretion of sodium into the small intestine chyme is computed as a function of digested amount a hill function determines rates of sodium transport. Sodium is then used as a co-transporter to facilitate movement into the blood. Could be expanded to support other ions and substances to get correct pH balance

const char* biogears::Gastrointestinal::classname ( ) const
inlineoverridevirtual
void biogears::Gastrointestinal::Clear ( )
overridevirtual
void biogears::Gastrointestinal::DigestNutrient ( )
protected

Digestion code to convert nutrients into appropriate product due to enzyme interaction.

Simulates digestion in the stomach between the three major nutrients and their corresponding enzymes Computes the rate of conversion and then increments that amount per time step into the chyme Handles all movement into the small intestine: ions and nutrients

[114]

[245]

[32]

void biogears::Gastrointestinal::GastricSecretion ( double  duration_s)
protected

Absorb fluids from the tissues back into the stomach so it always has fluid in it.

Fluid absorption is based on time step at a constant rate

size_t biogears::Gastrointestinal::hash_code ( ) const
inlineoverridevirtual
void biogears::Gastrointestinal::Initialize ( )
overridevirtual

Initializes system properties to valid homeostatic values.

Reimplemented from biogears::BioGearsSystem.

bool biogears::Gastrointestinal::Load ( const CDM::BioGearsGastrointestinalSystemData in)
virtual
auto biogears::Gastrointestinal::make_unique ( BioGears bg) -> std::unique_ptr<Gastrointestinal>
staticprotected
void biogears::Gastrointestinal::PostProcess ( )
overridevirtual

Gastrointestinal postprocess function.

The current BioGears implementation has no specific postprocess functionality.

Implements biogears::BioGearsSystem.

void biogears::Gastrointestinal::PreProcess ( )
overridevirtual

Gastrointestinal Preprocess function.

Apply any meal consumption actions Absorb fluids from the tissues back into the stomach so it always has fluid in it Digest substances based on our time step and transfer them to the Gut Absorb substances from the gut into the vascular system via the small intestine

Error:
Unable to read consume meal action file

Implements biogears::BioGearsSystem.

void biogears::Gastrointestinal::Process ( )
overridevirtual

Gastrointestinal Preprocess function.

The current BioGears implementation has no functionality in the process function for Gastrointestinal.

Implements biogears::BioGearsSystem.

void biogears::Gastrointestinal::ProcessDrugCAT ( )
protected

Compartment Absorption Transit (CAT) model for drug dissolution and transport through the gastrointestinal system.

This CAT model tracks a drugs progress from the stomach through the small intestine to the large intestine. The model accounts for both solid and dissolved drug in each compartment. The stomach is the first compartment in the model. The small intestine is divided in to seven compartments to generate an estimate of spatial resolution. Each small intestine compartment (not the stomach) communicates with an enterocyte layer–this is the intestinal lining that drugs must pass through in which many drugs are subjected to intestinal metabolism. Currently, the degree of metabolism is a substance specific tuning modifier. Drug in the enterocyte layer diffuses in to the portal vein. This model is based on the work in Yang2016Application and most parameters are derived from this source.

void biogears::Gastrointestinal::SetUp ( )
overrideprotectedvirtual
static size_t biogears::Gastrointestinal::TypeHash ( )
inlinestatic
static constexpr char const* const biogears::Gastrointestinal::TypeTag ( )
inlinestatic

Hopefully this returns a unique ID for every type.

CDM::BioGearsGastrointestinalSystemData * biogears::Gastrointestinal::Unload ( ) const
overridevirtual
void biogears::Gastrointestinal::Unload ( CDM::BioGearsGastrointestinalSystemData data) const
protectedvirtual

Friends And Related Function Documentation

friend class BioGears
friend
friend class BioGearsEngineTest
friend

Member Data Documentation

SEScalarMassPerTime biogears::Gastrointestinal::m_CalciumDigestionRate
protected
bool biogears::Gastrointestinal::m_ConsumeRate
protected
BioGears& biogears::Gastrointestinal::m_data
protected
bool biogears::Gastrointestinal::m_DecrementNutrients
protected
double biogears::Gastrointestinal::m_dT_s
protected
std::vector<double> biogears::Gastrointestinal::m_EnterocyteVolumeFraction
protected
SEFluidCircuitPath* biogears::Gastrointestinal::m_GItoCVPath
protected
SEFluidCircuitPath* biogears::Gastrointestinal::m_GutE3ToGroundPath
protected
std::map<SELiquidSubstanceQuantity*, double> biogears::Gastrointestinal::m_InitialSubstanceMasses_ug
protected
SELiquidCompartment* biogears::Gastrointestinal::m_Lymph
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_LymphTriacylglycerol
protected
double biogears::Gastrointestinal::m_secretionRate_mL_Per_s
protected
SELiquidCompartment* biogears::Gastrointestinal::m_SmallIntestineChyme
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineChymeAlbumin
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineChymeAminoAcids
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineChymeCalcium
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineChymeGlucose
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineChymeSodium
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineChymeTriacylglycerol
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineChymeUrea
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_smallIntestineVascularAminoAcids
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineVascularCalcium
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_smallIntestineVascularGlucose
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_SmallIntestineVascularSodium
protected
SELiquidSubstanceQuantity* biogears::Gastrointestinal::m_smallintestineVAscularTriacylglycerol
protected
std::vector<double> biogears::Gastrointestinal::m_TransitBileSalts_mM
protected
std::vector<double> biogears::Gastrointestinal::m_TransitPH
protected
std::vector<double> biogears::Gastrointestinal::m_TransitRate_Per_s
protected
std::vector<double> biogears::Gastrointestinal::m_TransitSurfaceArea_cm2
protected
std::vector<double> biogears::Gastrointestinal::m_TransitVolume_mL
protected
SELiquidCompartment* biogears::Gastrointestinal::m_vSmallIntestine
protected
SEScalarVolumePerTime biogears::Gastrointestinal::m_WaterDigestionRate
protected