public float ApplyModifiersOnValue(float value, List<aModifyCpnValue> modifiers,
     List<aModifyType> aModifyTypeList, tSepsisPresentation sepsis, List<ktTempSite> ktTempSite)
 {
     //Apply each modifer on value
     foreach (aModifyCpnValue m in modifiers)
     {
         //Get name on modifier
         string modifyType = aModifyTypeList.Where(x => x.ModifyTypeID == m.ModifyTypeID).Select(x => x.ModifyType).SingleOrDefault();
         switch (modifyType)
         {
             case "TempSite":
                 //Get where measurement was made
                 byte tempSite = (byte)sepsis.TempSite;
                 //Get offset value from tempSite by "tempSiteID"
                 float offsetTempSite = (float)ktTempSite.Where(x => x.ID == tempSite).Select(x => x.OffsetValue).SingleOrDefault();
                 value = AddOffsetToValue(value, offsetTempSite);
                 break;
             case "Offset":
                 float offset = (float)m.Value;
                 value = AddOffsetToValue(value, offset);
                 break;
             case "Multiply":
                 float multiplyValue = (float)m.Value;
                 value = MultiplyValue(value, multiplyValue);
                 break;
             case "NaturalLog":
                 value = ApplyNaturalLog(value);
                 break;
         }
     }
     return value;
 }
        public void TestApplyModifiers()
        {
            List<aModifyType> aModifyTypeList = new List<aModifyType>();
            aModifyTypeList.Add(new aModifyType
                {
                    ModifyTypeID = 0,
                    ModifyType = "TempSite"

                });

            aModifyTypeList.Add(new aModifyType
            {
                ModifyTypeID = 1,
                ModifyType = "Offset"

            });

            aModifyTypeList.Add(new aModifyType
            {
                ModifyTypeID = 2,
                ModifyType = "Multiply"

            });

            aModifyTypeList.Add(new aModifyType
            {
                ModifyTypeID = 3,
                ModifyType = "NaturalLog"

            });

            List<aModifyCpnValue> modifiers = new List<aModifyCpnValue>();
            //Types of modifers
            //0 = TempSite (offset)
            //1 = Offset
            //2 = Multiply
            //3 = NaturalLog
            modifiers.Add(new aModifyCpnValue{
                NodeID = "test1",
                ModifyTypeID = 0,
                Order = 0,
                Value = null
            });

            modifiers.Add(new aModifyCpnValue{
                NodeID = "test2",
                ModifyTypeID = 1,
                Order = 1,
                Value = 1.5f
            });

            modifiers.Add(new aModifyCpnValue{
                                NodeID = "test3",
                ModifyTypeID = 2,
                Order = 2,
                Value = 3f
            });

            modifiers.Add(new aModifyCpnValue{
                                NodeID = "test4",
                ModifyTypeID = 3,
                Order = 3,
                Value = null
            });

            List<ktTempSite> ktTempSiteLookup = new List<ktTempSite>();
            ktTempSiteLookup.Add(new ktTempSite{
                ID = 0,
                OffsetValue = 0f,
            });
                        ktTempSiteLookup.Add(new ktTempSite{
                ID = 1,
                OffsetValue = 0f,
            });
                        ktTempSiteLookup.Add(new ktTempSite{
                ID = 2,
                OffsetValue = 0.4f,
            });
                        ktTempSiteLookup.Add(new ktTempSite{
                ID = 3,
                OffsetValue = 0f,
            });
                        ktTempSiteLookup.Add(new ktTempSite{
                ID = 4,
                OffsetValue = 0f,
            });
                        ktTempSiteLookup.Add(new ktTempSite{
                ID = 5,
                OffsetValue = 0f,
            });

            tSepsisPresentation sepsisRelatedInfo = new tSepsisPresentation();
            sepsisRelatedInfo.TempSite = 3;

            float value = 20f;
            float result = testSepsisController.ApplyModifiersOnValue(value, modifiers, aModifyTypeList, sepsisRelatedInfo, ktTempSiteLookup);
            float expected = 4.1666652238017268054508556288102f;
            Assert.AreEqual(expected, result, "Apply offsets, multiply and natural log on 20f should for this particular patient produce 4,1666652238017268054508556288102");
            float notExpected = 4.1666658f;
            Assert.AreNotEqual(notExpected, result, "Should round up to 4.166666 and therefore not equal");
        }