public ECGsDemoPageViewModel()
        {
            PlotModelConvertLoss       = new ReactiveProperty <PlotModel>();
            PlotModelAirResistance     = new ReactiveProperty <PlotModel>();
            PlotModelRollingResistance = new ReactiveProperty <PlotModel>();
            PlotModelRegeneLoss        = new ReactiveProperty <PlotModel>();
            AtentionText = new ReactiveProperty <string>();

            _ecgModel = ECGModel.GetECGModel(new SemanticLink {
                SemanticLinkId = 207
            });
            _maximum = new double[]
            {
                _ecgModel.GraphData.Max(v => v.ConvertLoss),
                _ecgModel.GraphData.Max(v => v.AirResistance),
                _ecgModel.GraphData.Max(v => v.RollingResistance),
                _ecgModel.GraphData.Max(v => v.RegeneLoss)
            }.Max();

            PlotModelConvertLoss.Value       = CreatePlotModel("ConvertLoss");
            PlotModelAirResistance.Value     = CreatePlotModel("AirResistance");
            PlotModelRollingResistance.Value = CreatePlotModel("RollingResistance");
            PlotModelRegeneLoss.Value        = CreatePlotModel("RegeneLoss");

            AtentionText.Value = _ecgModel.AtentionText;
        }
        public async void OnNavigatedTo(NavigationParameters parameters)
        {
            App.AppStatus = "ECGsPage";
            App.EventList.Add(Observable.FromEventPattern <PositionEventArgs>(
                                  h => CrossGeolocator.Current.PositionChanged += h, h => CrossGeolocator.Current.PositionChanged -= h)
                              .Subscribe(e => OnPositionChanged(e.Sender, e.EventArgs)));

            // DependencyService.Get<IAudio>().PlayAudioFile("broadcasting.mp3");

            if (parameters.ContainsKey(ParamCalculator))
            {
                _caluculator = parameters[ParamCalculator] as ECOLOGCalculator;
            }
            else
            {
                _caluculator = new ECOLOGCalculator();
                _caluculator.Init();
            }

            _semanticLink = parameters[ParamSemanticLink] as SemanticLink;
            _ecgModel     = ECGModel.GetECGModel(_semanticLink);

            _maximum = new double[]
            {
                _ecgModel.GraphData.Max(v => v.ConvertLoss),
                _ecgModel.GraphData.Max(v => v.AirResistance),
                _ecgModel.GraphData.Max(v => v.RollingResistance),
                _ecgModel.GraphData.Max(v => v.RegeneLoss)
            }.Max();

            PlotModelConvertLoss.Value       = CreatePlotModel("ConvertLoss");
            PlotModelAirResistance.Value     = CreatePlotModel("AirResistance");
            PlotModelRollingResistance.Value = CreatePlotModel("RollingResistance");
            PlotModelRegeneLoss.Value        = CreatePlotModel("RegeneLoss");

            AtentionText.Value = _ecgModel.AtentionText;

            /*** テストコード ***/

            /*var positions = TestPosition.TestPositions;
             * Timer = new ReactiveTimer(TimeSpan.FromMilliseconds(200));
             * Timer.Subscribe(x =>
             * {
             *                  Device.BeginInvokeOnMainThread(() =>
             *                  {
             *                          OnPositionChanged(null, new PositionEventArgs(positions[TestPosition.Index]));
             *                          TestPosition.Index++;
             *                  });
             * });
             *          Timer.Start();*/
            /*** テストコード ***/

            //CrossGeolocator.Current.PositionChanged += OnPositionChanged;
            if (CrossGeolocator.Current.IsListening == false)
            {
                CrossGeolocator.Current.DesiredAccuracy = 1;
                await CrossGeolocator.Current.StartListeningAsync(minimumTime : TimeSpan.FromMilliseconds(1000), minimumDistance : 0, includeHeading : false);
            }
        }
Exemplo n.º 3
0
        public async void OnNavigatedTo(NavigationParameters parameters)
        {
            App.AppStatus = "ResultPage";
            App.EventList.Add(Observable.FromEventPattern <PositionEventArgs>(
                                  h => CrossGeolocator.Current.PositionChanged += h, h => CrossGeolocator.Current.PositionChanged -= h)
                              .Subscribe(e => OnPositionChanged(e.Sender, e.EventArgs)));

            //CrossGeolocator.Current.PositionChanged += OnPositionChanged;
            if (CrossGeolocator.Current.IsListening == false)
            {
                CrossGeolocator.Current.DesiredAccuracy = 1;
                await CrossGeolocator.Current.StartListeningAsync(minimumTime : TimeSpan.FromMilliseconds(1000), minimumDistance : 0, includeHeading : false);
            }

            _calculatorParam = parameters[ParamCalculator] as ECOLOGCalculator;
            _calculatorMine  = new ECOLOGCalculator();
            _calculatorMine.Init();

            _lostEnergy  = _calculatorParam.LostEnergyList.Sum();
            _transitTime = (int)(_calculatorParam.PositionCollection.Last().Timestamp -
                                 _calculatorParam.PositionCollection.First().Timestamp).TotalSeconds;
            var semanticLink = parameters[ParamSemanticLink] as SemanticLink;

            _ecgModel = ECGModel.GetECGModel(semanticLink);

            //DependencyService.Get<IAudio>().PlayAudioFile("broadcasting.mp3");

            /*** デバッグコード ***/

            /*Debug.WriteLine("Count: " + _calculatorParam.PositionCollection.Count);
             * Debug.WriteLine("LostEnergy: " + _calculatorParam.LostEnergyList.Sum());
             * Debug.WriteLine("AirResistance: " + _calculatorParam.AirResistanceList.Sum());
             * Debug.WriteLine("Rolling: " + _calculatorParam.RollingResistanceList.Sum());
             * Debug.WriteLine("Convert: " + _calculatorParam.ConvertLossList.Sum());
             * Debug.WriteLine("Regene: " + _calculatorParam.RegeneLossList.Sum());*/
            /*** デバッグコード ***/

            PlotModel.Value = CreatePlotModel();

            var timer = new ReactiveTimer(TimeSpan.FromSeconds(1));

            timer.Subscribe(v =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    _count++;
                    /*** テストコード ***/
                    //OnPositionChanged(null, new PositionEventArgs(TestPosition.TestPositions[TestPosition.Index]));
                    //TestPosition.Index++;
                    /*** テストコード ***/

                    if (_count >= 10)
                    {
                        timer.Stop();
                        if (_semanticLink != null)
                        {
                            var parameter = new NavigationParameters
                            {
                                { ECGsPageViewModel.ParamCalculator, _calculatorMine },
                                { ECGsPageViewModel.ParamSemanticLink, _semanticLink }
                            };
                            _navigationService.NavigateAsync($"/{nameof(ECGsPage)}", parameter);
                        }
                        else
                        {
                            _navigationService.NavigateAsync($"/{nameof(MapPage)}");
                        }
                    }
                });
            });
            timer.Start();
        }
Exemplo n.º 4
0
        public void InitModel()
        {
            // initialize all the model components and update the status message in de modelinterface class for notification purposes
            if (modelDefinition != null)
            {
                modelInterface.StatusMessage = $"Initializing model components.";

                modelInterface.StatusMessage = $"Initializing blood compartments.";
                foreach (BloodCompartment bloodComp in modelDefinition.blood_compartments)
                {
                    bloodComp.InitBloodCompartment(this);
                }

                modelInterface.StatusMessage = $"Initializing blood compartment connectors.";
                foreach (BloodConnector bloodCon in modelDefinition.blood_connectors)
                {
                    bloodCon.InitBloodConnector(this);
                }

                modelInterface.StatusMessage = $"Initializing valves.";
                foreach (Valve valve in modelDefinition.valves)
                {
                    valve.InitValve(this);
                }

                modelInterface.StatusMessage = $"Initializing shunts.";
                foreach (Shunt shunt in modelDefinition.shunts)
                {
                    shunt.InitShunt(this);
                }

                modelInterface.StatusMessage = $"Initializing gas compartments.";
                foreach (GasCompartment gasComp in modelDefinition.gas_compartments)
                {
                    gasComp.InitGasCompartment(this);
                }

                modelInterface.StatusMessage = $"Initializing gas compartment connectors.";
                foreach (GasConnector gasCon in modelDefinition.gas_connectors)
                {
                    gasCon.InitGasConnector(this);
                }

                modelInterface.StatusMessage = $"Initializing gasexchangers.";
                foreach (GasExchanger gasExchanger in modelDefinition.exchangers)
                {
                    gasExchanger.InitializeExchanger(this);
                }

                modelInterface.StatusMessage = $"Initializing diffusors.";
                foreach (Diffusor diffusor in modelDefinition.diffusors)
                {
                    diffusor.InitializeDiffusor(this);
                }

                modelInterface.StatusMessage = $"Initializing containers.";
                foreach (Container container in modelDefinition.containers)
                {
                    container.InitContainer(this);
                }

                modelInterface.StatusMessage = $"Initializing submodels.";

                // instantiate the ecg model
                ecg = new ECGModel(this);

                // instantiate the acidbase model
                acidbase = new AcidBaseModel();

                // instantiate the oxygenation model
                oxy = new OxygenationModel();

                // instantiate the autonomic nervous system model
                ans = new AutonomicNervousSystemModel(this);

                // instantiate the spontaneous breathing model
                breathing = new SpontaneousBreathingModel(this);

                // instantiate the contraction model of the heart
                contraction = new ContractionModel(this);

                // instantiate the mechanical ventilator model
                ventilator = new MechanicalVentilatorModel(this);

                // instantiate the av-interaction model
                avinteraction = new AVInteractionModel(this);

                // instantiate the global hypoxia model
                hypoxia = new GlobalHypoxiaModel(this);

                // instantiate the birth model
                birth = new BirthModel(this);

                // instantiate the brain model
                brain = new BrainModel(this);

                // instantiate the drug model
                drugs = new DrugModel(this);

                // instantiate the kidney model
                kidneys = new KidneyModel(this);

                // instantiate the liver model
                liver = new LiverModel(this);

                // instantiate the maternal placenta model
                maternalPlacenta = new MaternalPlacentaModel(this);

                // instantiate the ecmo model
                ecmo = new ECMOModel(this);

                // instantiate the compressions model
                compressions = new CompressionModel(this);

                // instantiate the datacollector
                dataCollector = new DataCollector(this);
            }
            else
            {
                modelInterface.StatusMessage = $"Failed to initialize the model.{Environment.NewLine}";
            }
        }
Exemplo n.º 5
0
 public void UpdateIsAnalyzed(ECGModel ecgID)
 {
     throw new NotImplementedException();
 }