SENutrition.h
1 /**************************************************************************************
2 Copyright 2015 Applied Research Associates, Inc.
3 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 this file except in compliance with the License. You may obtain a copy of the License
5 at:
6 http://www.apache.org/licenses/LICENSE-2.0
7 Unless required by applicable law or agreed to in writing, software distributed under
8 the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9 CONDITIONS OF ANY KIND, either express or implied. See the License for the
10 specific language governing permissions and limitations under the License.
11 **************************************************************************************/
12 
13 #pragma once
14 #include <biogears/cdm/CommonDataModel.h>
15 #include <biogears/exports.h>
16 
17 CDM_BIND_DECL(NutritionData)
18 
19 namespace biogears {
20 class SEPatient;
21 class SEScalar;
22 class SEScalarMass;
23 class MassUnit;
24 class SEScalarMassPerTime;
25 class MassPerTimeUnit;
26 class SEScalarVolume;
27 class VolumeUnit;
28 
29 class BIOGEARS_API SENutrition : public Loggable {
30 public:
31  SENutrition(Logger* logger);
32  virtual ~SENutrition();
33 
34  virtual void Clear();
35 
36  virtual bool Load(const CDM::NutritionData& in);
37  virtual CDM::NutritionData* Unload() const;
38 
39 protected:
40  virtual void Unload(CDM::NutritionData& data) const;
41 
42 public:
43  const SEScalar* GetScalar(const char* name);
44  const SEScalar* GetScalar(const std::string& name);
45 
46  bool Load(const char* nutritionFile);
47  bool Load(const std::string& nutritionFile);
48 
49  void Increment(const SENutrition& from);
50 
51  virtual std::string GetName() const;
52  virtual const char* GetName_cStr() const;
53  virtual void SetName(const char* name);
54  virtual void SetName(const std::string& name);
55  virtual bool HasName() const;
56  virtual void InvalidateName();
57 
58  virtual bool HasCarbohydrate() const;
59  virtual SEScalarMass& GetCarbohydrate();
60  virtual double GetCarbohydrate(const MassUnit& unit) const;
61 
62  virtual bool HasFat() const;
63  virtual SEScalarMass& GetFat();
64  virtual double GetFat(const MassUnit& unit) const;
65 
66  virtual bool HasProtein() const;
67  virtual SEScalarMass& GetProtein();
68  virtual double GetProtein(const MassUnit& unit) const;
69 
70  virtual bool HasSodium() const;
71  virtual SEScalarMass& GetSodium();
72  virtual double GetSodium(const MassUnit& unit) const;
73 
74  virtual bool HasCalcium() const;
75  virtual SEScalarMass& GetCalcium();
76  virtual double GetCalcium(const MassUnit& unit) const;
77 
78  virtual bool HasWater() const;
79  virtual SEScalarVolume& GetWater();
80  virtual double GetWater(const VolumeUnit& unit) const;
81 
82  virtual double GetWeight(const MassUnit& unit) const;
83 
84  virtual void ToString(std::ostream& str) const;
85 
86 protected:
87  std::string m_Name;
94 };
95 
96 inline std::ostream& operator<<(std::ostream& out, const SENutrition& n)
97 {
98  n.ToString(out);
99  return out;
100 }
101 }
SEScalarMass * m_Calcium
Definition: SENutrition.h:91
SEScalarMass * m_Sodium
Definition: SENutrition.h:92
Definition: SEScalar.h:33
SEScalarMass * m_Protein
Definition: SENutrition.h:90
SEScalarMass * m_Fat
Definition: SENutrition.h:89
Definition: SEScalarMass.h:38
Definition: Logger.h:27
Definition: Logger.h:75
virtual void ToString(std::ostream &str) const
Definition: SENutrition.cpp:336
std::string m_Name
Definition: SENutrition.h:87
Definition: SENutrition.h:29
Definition: SEScalarVolume.h:18
Definition: SEScalarVolume.h:37
Class corresponding to the NutritionData schema type.
Definition: PatientNutrition.hxx:682
Definition: SEScalarMass.h:18
SEScalarVolume * m_Water
Definition: SENutrition.h:93
Definition: SEElectricalCircuit.h:18
SEScalarMass * m_Carbohydrate
Definition: SENutrition.h:88