예제 #1
0
 public virtual void SetMainFlow(Blood toSuccessor, Blood fromPredecessor)
 {
     toSuccessor.CopyValuesFrom(fromPredecessor);
     if (fromPredecessor.GasFree == false || fromPredecessor.ChemicalCompositionOk != true)
     {
         DetectedGasOrContaminatedBlood = true;
     }
     else
     {
         DetectedGasOrContaminatedBlood = false;
     }
 }
        public void SetBloodFlow(Blood outgoing, Blood incoming)
        {
            if (incoming.Water > 0 || incoming.BigWasteProducts > 0)
            {
                outgoing.CopyValuesFrom(incoming);
                outgoing.Temperature = IncomingFluidTemperature;
                // First step: Filtrate Blood
                if (IncomingQuantityOfDialyzingFluid >= outgoing.SmallWasteProducts)
                {
                    outgoing.SmallWasteProducts = 0;
                }
                else
                {
                    outgoing.SmallWasteProducts -= IncomingQuantityOfDialyzingFluid;
                }
                // Second step: Ultra Filtration
                // To satisfy the incoming suction rate we must take the fluid from the blood.
                // The ultrafiltrationRate is the amount of fluid we take from the blood-side.
                var ultrafiltrationRate = IncomingSuctionRateOnDialyzingFluidSide - IncomingQuantityOfDialyzingFluid;

                if (ultrafiltrationRate < outgoing.BigWasteProducts)
                {
                    outgoing.BigWasteProducts -= ultrafiltrationRate;
                }
                else
                {
                    // Remove water instead of BigWasteProducts
                    // Assume Water >= (ultrafiltrationRate - outgoing.BigWasteProducts)
                    outgoing.Water           -= (ultrafiltrationRate - outgoing.BigWasteProducts);
                    outgoing.BigWasteProducts = 0;
                }
            }
            else
            {
                outgoing.CopyValuesFrom(incoming);
            }
        }
예제 #3
0
 public void SetMainFlow(Blood toSuccessor, Blood fromPredecessor)
 {
     if (ValveState == ValveState.Open)
     {
         toSuccessor.CopyValuesFrom(DelayedBlood);
     }
     else
     {
         toSuccessor.HasHeparin            = true;
         toSuccessor.Water                 = 0;
         toSuccessor.SmallWasteProducts    = 0;
         toSuccessor.BigWasteProducts      = 0;
         toSuccessor.ChemicalCompositionOk = true;
         toSuccessor.GasFree               = true;
         toSuccessor.Pressure              = QualitativePressure.NoPressure;
         toSuccessor.Temperature           = QualitativeTemperature.BodyHeat;
     }
     DelayedBlood.CopyValuesFrom(fromPredecessor);
 }
예제 #4
0
 public override void SetMainFlow(Blood toSuccessor, Blood fromPredecessor)
 {
     toSuccessor.CopyValuesFrom(fromPredecessor);
     DetectedGasOrContaminatedBlood = false;
 }
예제 #5
0
파일: BloodPump.cs 프로젝트: cubeme/ssharp
 public void SetMainFlow(Blood toSuccessor, Blood fromPredecessor)
 {
     toSuccessor.CopyValuesFrom(fromPredecessor);
 }