Example #1
0
        private void OnCardiacRhythmSelected(object sender, SelectionChangedEventArgs e)
        {
            if (!(bool)checkDefaultVitals.IsChecked || App.Patient == null)
            {
                return;
            }

            int   si = comboCardiacRhythm.SelectedIndex;
            Array ev = Enum.GetValues(typeof(Cardiac_Rhythms.Values));

            if (si < 0 || si > ev.Length - 1)
            {
                return;
            }

            Cardiac_Rhythms.Default_Vitals v = Cardiac_Rhythms.DefaultVitals(
                (Cardiac_Rhythms.Values)ev.GetValue(si));

            numHR.Value    = (int)Utility.Clamp((double)numHR.Value, v.HRMin, v.HRMax);
            numRR.Value    = (int)Utility.Clamp((double)numRR.Value, v.RRMin, v.RRMax);
            numSPO2.Value  = (int)Utility.Clamp((double)numSPO2.Value, v.SPO2Min, v.SPO2Max);
            numETCO2.Value = (int)Utility.Clamp((double)numETCO2.Value, v.ETCO2Min, v.ETCO2Max);
            numNSBP.Value  = (int)Utility.Clamp((double)numNSBP.Value, v.SBPMin, v.SBPMax);
            numNDBP.Value  = (int)Utility.Clamp((double)numNDBP.Value, v.DBPMin, v.DBPMax);
            numASBP.Value  = (int)Utility.Clamp((double)numASBP.Value, v.SBPMin, v.SBPMax);
            numADBP.Value  = (int)Utility.Clamp((double)numADBP.Value, v.DBPMin, v.DBPMax);
            numPSP.Value   = (int)Utility.Clamp((double)numPSP.Value, v.PSPMin, v.PSPMax);
            numPDP.Value   = (int)Utility.Clamp((double)numPDP.Value, v.PDPMin, v.PDPMax);
        }
Example #2
0
        private void updateCardiacRhythm(object sender, PropertyEnum.PropertyEnumEventArgs e)
        {
            if (!chkClampVitals.IsChecked ?? false || selStep == null)
            {
                return;
            }

            Patient p = ((ItemStep)selStep).Patient;

            Cardiac_Rhythms.Default_Vitals v = Cardiac_Rhythms.DefaultVitals(
                (Cardiac_Rhythms.Values)Enum.Parse(typeof(Cardiac_Rhythms.Values), e.Value));

            p.HR    = (int)II.Math.Clamp((double)p.VS_Settings.HR, v.HRMin, v.HRMax);
            p.RR    = (int)II.Math.Clamp((double)p.VS_Settings.RR, v.RRMin, v.RRMax);
            p.SPO2  = (int)II.Math.Clamp((double)p.VS_Settings.SPO2, v.SPO2Min, v.SPO2Max);
            p.ETCO2 = (int)II.Math.Clamp((double)p.VS_Settings.ETCO2, v.ETCO2Min, v.ETCO2Max);
            p.NSBP  = (int)II.Math.Clamp((double)p.VS_Settings.NSBP, v.SBPMin, v.SBPMax);
            p.NDBP  = (int)II.Math.Clamp((double)p.VS_Settings.NDBP, v.DBPMin, v.DBPMax);
            p.ASBP  = (int)II.Math.Clamp((double)p.VS_Settings.ASBP, v.SBPMin, v.SBPMax);
            p.ADBP  = (int)II.Math.Clamp((double)p.VS_Settings.ADBP, v.DBPMin, v.DBPMax);
            p.PSP   = (int)II.Math.Clamp((double)p.VS_Settings.PSP, v.PSPMin, v.PSPMax);
            p.PDP   = (int)II.Math.Clamp((double)p.VS_Settings.PDP, v.PDPMin, v.PDPMax);

            updatePropertyView();
        }
Example #3
0
        private void InitInterface()
        {
            // Initiate ICommands for KeyBindings
            icLoadFile = new ActionCommand(() => LoadFile());
            icSaveFile = new ActionCommand(() => SaveFile());

            // Populate UI strings per language selection
            wdwPatientEditor.Title = App.Language.Dictionary ["PE:WindowTitle"];
            menuFile.Header        = App.Language.Dictionary ["PE:MenuFile"];
            menuLoad.Header        = App.Language.Dictionary ["PE:MenuLoadSimulation"];
            menuSave.Header        = App.Language.Dictionary ["PE:MenuSaveSimulation"];
            menuExit.Header        = App.Language.Dictionary ["PE:MenuExitProgram"];

            menuSettings.Header    = App.Language.Dictionary ["PE:MenuSettings"];
            menuSetLanguage.Header = App.Language.Dictionary ["PE:MenuSetLanguage"];

            menuHelp.Header  = App.Language.Dictionary ["PE:MenuHelp"];
            menuAbout.Header = App.Language.Dictionary ["PE:MenuAboutProgram"];

            lblGroupDevices.Content        = App.Language.Dictionary ["PE:Devices"];
            lblDeviceMonitor.Content       = App.Language.Dictionary ["PE:CardiacMonitor"];
            lblDevice12LeadECG.Content     = App.Language.Dictionary ["PE:12LeadECG"];
            lblDeviceDefibrillator.Content = App.Language.Dictionary ["PE:Defibrillator"];
            lblDeviceIABP.Content          = App.Language.Dictionary ["PE:IABP"];
            //lblDeviceVentilator.Content = App.Language.Dictionary["PE:Ventilator"];
            //lblDeviceEFM.Content = App.Language.Dictionary["PE:EFM"];
            //lblDeviceIVPump.Content = App.Language.Dictionary["PE:IVPump"];
            //lblDeviceLabResults.Content = App.Language.Dictionary["PE:LabResults"];

            lblGroupMirroring.Content = App.Language.Dictionary ["PE:MirrorPatientData"];
            lblMirrorStatus.Content   = App.Language.Dictionary ["PE:Status"];
            radioInactive.Content     = App.Language.Dictionary ["PE:Inactive"];
            radioServer.Content       = App.Language.Dictionary ["PE:Server"];
            radioClient.Content       = App.Language.Dictionary ["PE:Client"];
            lblAccessionKey.Content   = App.Language.Dictionary ["PE:AccessionKey"];
            lblAccessPassword.Content = App.Language.Dictionary ["PE:AccessPassword"];
            lblAdminPassword.Content  = App.Language.Dictionary ["PE:AdminPassword"];
            btnApplyMirroring.Content = App.Language.Dictionary ["BUTTON:ApplyChanges"];

            lblGroupVitalSigns.Content = App.Language.Dictionary ["PE:VitalSigns"];
            lblHR.Content              = String.Format("{0}:", App.Language.Dictionary ["PE:HeartRate"]);
            lblNIBP.Content            = String.Format("{0}:", App.Language.Dictionary ["PE:BloodPressure"]);
            lblRR.Content              = String.Format("{0}:", App.Language.Dictionary ["PE:RespiratoryRate"]);
            lblSPO2.Content            = String.Format("{0}:", App.Language.Dictionary ["PE:PulseOximetry"]);
            lblT.Content               = String.Format("{0}:", App.Language.Dictionary ["PE:Temperature"]);
            lblCardiacRhythm.Content   = String.Format("{0}:", App.Language.Dictionary ["PE:CardiacRhythm"]);
            checkDefaultVitals.Content = App.Language.Dictionary ["PE:UseDefaultVitalSignRanges"];

            lblGroupHemodynamics.Content = App.Language.Dictionary ["PE:AdvancedHemodynamics"];
            lblETCO2.Content             = String.Format("{0}:", App.Language.Dictionary ["PE:EndTidalCO2"]);
            lblCVP.Content  = String.Format("{0}:", App.Language.Dictionary ["PE:CentralVenousPressure"]);
            lblASBP.Content = String.Format("{0}:", App.Language.Dictionary ["PE:ArterialBloodPressure"]);
            lblPSP.Content  = String.Format("{0}:", App.Language.Dictionary ["PE:PulmonaryArteryPressure"]);
            lblICP.Content  = String.Format("{0}:", App.Language.Dictionary ["PE:IntracranialPressure"]);
            lblIAP.Content  = String.Format("{0}:", App.Language.Dictionary ["PE:IntraabdominalPressure"]);

            lblGroupRespiratoryProfile.Content = App.Language.Dictionary ["PE:RespiratoryProfile"];
            lblRespiratoryRhythm.Content       = String.Format("{0}:", App.Language.Dictionary ["PE:RespiratoryRhythm"]);
            lblMechanicallyVentilated.Content  = String.Format("{0}:", App.Language.Dictionary ["PE:MechanicallyVentilated"]);
            lblInspiratoryRatio.Content        = String.Format("{0}:", App.Language.Dictionary ["PE:InspiratoryExpiratoryRatio"]);

            lblGroupCardiacProfile.Content       = App.Language.Dictionary ["PE:CardiacProfile"];
            lblPacemakerCaptureThreshold.Content = String.Format("{0}:", App.Language.Dictionary ["PE:PacemakerCaptureThreshold"]);
            lblPulsusParadoxus.Content           = String.Format("{0}:", App.Language.Dictionary ["PE:PulsusParadoxus"]);
            lblPulsusAlternans.Content           = String.Format("{0}:", App.Language.Dictionary ["PE:PulsusAlternans"]);
            lblCardiacAxis.Content       = String.Format("{0}:", App.Language.Dictionary ["PE:CardiacAxis"]);
            grpSTSegmentElevation.Header = App.Language.Dictionary ["PE:STSegmentElevation"];
            grpTWaveElevation.Header     = App.Language.Dictionary ["PE:TWaveElevation"];

            lblGroupObstetricProfile.Content = App.Language.Dictionary ["PE:ObstetricProfile"];
            lblFHR.Content            = String.Format("{0}:", App.Language.Dictionary ["PE:FetalHeartRate"]);
            lblFHRRhythms.Content     = String.Format("{0}:", App.Language.Dictionary ["PE:FetalHeartRhythms"]);
            lblFHRVariability.Content = String.Format("{0}:", App.Language.Dictionary ["PE:FetalHeartVariability"]);
            lblUCFrequency.Content    = String.Format("{0}:", App.Language.Dictionary ["PE:UterineContractionFrequency"]);
            lblUCDuration.Content     = String.Format("{0}:", App.Language.Dictionary ["PE:UterineContractionDuration"]);
            lblUCIntensity.Content    = String.Format("{0}:", App.Language.Dictionary ["PE:UterineContractionIntensity"]);

            lblParametersApply.Content = App.Language.Dictionary ["BUTTON:ApplyChanges"];
            lblParametersReset.Content = App.Language.Dictionary ["BUTTON:ResetParameters"];

            List <string> cardiacRhythms     = new List <string> (),
                          cardiacAxes        = new List <string> (),
                          respiratoryRhythms = new List <string> (),
                          intensityScale     = new List <string> (),
                          fetalHeartRhythms  = new List <string> ();

            foreach (Cardiac_Rhythms.Values v in Enum.GetValues(typeof(Cardiac_Rhythms.Values)))
            {
                cardiacRhythms.Add(App.Language.Dictionary [Cardiac_Rhythms.LookupString(v)]);
            }
            comboCardiacRhythm.ItemsSource = cardiacRhythms;

            foreach (CardiacAxes.Values v in Enum.GetValues(typeof(CardiacAxes.Values)))
            {
                cardiacAxes.Add(App.Language.Dictionary [CardiacAxes.LookupString(v)]);
            }
            comboCardiacAxis.ItemsSource = cardiacAxes;

            foreach (Respiratory_Rhythms.Values v in Enum.GetValues(typeof(Respiratory_Rhythms.Values)))
            {
                respiratoryRhythms.Add(App.Language.Dictionary [Respiratory_Rhythms.LookupString(v)]);
            }
            comboRespiratoryRhythm.ItemsSource = respiratoryRhythms;

            foreach (Patient.Intensity.Values v in Enum.GetValues(typeof(Patient.Intensity.Values)))
            {
                intensityScale.Add(App.Language.Dictionary [Patient.Intensity.LookupString(v)]);
            }
            comboFHRVariability.ItemsSource = intensityScale;
            comboUCIntensity.ItemsSource    = intensityScale;

            foreach (FetalHeartDecelerations.Values v in Enum.GetValues(typeof(FetalHeartDecelerations.Values)))
            {
                fetalHeartRhythms.Add(App.Language.Dictionary [FetalHeartDecelerations.LookupString(v)]);
            }
            listFHRRhythms.ItemsSource = fetalHeartRhythms;

            // Populate status bar with updated version information and make visible
            BackgroundWorker bgw           = new BackgroundWorker();
            string           latestVersion = "";

            bgw.DoWork             += delegate { latestVersion = App.Server.Get_LatestVersion(); };
            bgw.RunWorkerCompleted += delegate {
                if (Utility.IsNewerVersion(Utility.Version, latestVersion))
                {
                    txtUpdateAvailable.Text = String.Format(App.Language.Dictionary ["STATUS:UpdateAvailable"], latestVersion).Trim();
                }
                else
                {
                    statusUpdateAvailable.Visibility = Visibility.Collapsed;
                }
            };
            bgw.RunWorkerAsync();
        }
Example #4
0
        private void initPropertyView()
        {
            // Populate enum string lists for readable display
            List <string> cardiacRhythms     = new List <string> (),
                          respiratoryRhythms = new List <string> (),
                          pulmonaryRhythms   = new List <string> (),
                          cardiacAxes        = new List <string> (),
                          intensityScale     = new List <string> (),
                          fetalHeartRhythms  = new List <string> ();

            foreach (Cardiac_Rhythms.Values v in Enum.GetValues(typeof(Cardiac_Rhythms.Values)))
            {
                cardiacRhythms.Add(App.Language.Dictionary [Cardiac_Rhythms.LookupString(v)]);
            }

            foreach (Respiratory_Rhythms.Values v in Enum.GetValues(typeof(Respiratory_Rhythms.Values)))
            {
                respiratoryRhythms.Add(App.Language.Dictionary [Respiratory_Rhythms.LookupString(v)]);
            }

            foreach (PulmonaryArtery_Rhythms.Values v in Enum.GetValues(typeof(PulmonaryArtery_Rhythms.Values)))
            {
                pulmonaryRhythms.Add(App.Language.Dictionary [PulmonaryArtery_Rhythms.LookupString(v)]);
            }

            foreach (Cardiac_Axes.Values v in Enum.GetValues(typeof(Cardiac_Axes.Values)))
            {
                cardiacAxes.Add(App.Language.Dictionary [Cardiac_Axes.LookupString(v)]);
            }

            // Initiate controls for editing Patient values
            pstrStepName.Init(PropertyString.Keys.StepName);
            pstrStepName.PropertyChanged += updateProperty;

            pstrStepDescription.Init(PropertyString.Keys.StepDescription);
            pstrStepDescription.PropertyChanged += updateProperty;

            pintHR.Init(PropertyInt.Keys.HR, 5, 0, 500);
            pintHR.PropertyChanged += updateProperty;

            pbpNBP.Init(PropertyBP.Keys.NSBP,
                        5, 0, 300,
                        5, 0, 200);
            pbpNBP.PropertyChanged += updateProperty;

            pintRR.Init(PropertyInt.Keys.RR, 2, 0, 100);
            pintRR.PropertyChanged += updateProperty;

            pintSPO2.Init(PropertyInt.Keys.SPO2, 2, 0, 100);
            pintSPO2.PropertyChanged += updateProperty;

            pdblT.Init(PropertyDouble.Keys.T, 0.2, 0, 100);
            pdblT.PropertyChanged += updateProperty;

            penmCardiacRhythms.Init(PropertyEnum.Keys.Cardiac_Rhythms,
                                    Enum.GetNames(typeof(Cardiac_Rhythms.Values)), cardiacRhythms);
            penmCardiacRhythms.PropertyChanged += updateProperty;
            penmCardiacRhythms.PropertyChanged += updateCardiacRhythm;

            penmRespiratoryRhythms.Init(PropertyEnum.Keys.Respiratory_Rhythms,
                                        Enum.GetNames(typeof(Respiratory_Rhythms.Values)), respiratoryRhythms);
            penmRespiratoryRhythms.PropertyChanged += updateProperty;
            penmRespiratoryRhythms.PropertyChanged += updateRespiratoryRhythm;

            pintETCO2.Init(PropertyInt.Keys.ETCO2, 2, 0, 100);
            pintETCO2.PropertyChanged += updateProperty;

            pintCVP.Init(PropertyInt.Keys.CVP, 1, -100, 100);
            pintCVP.PropertyChanged += updateProperty;

            pbpABP.Init(PropertyBP.Keys.ASBP,
                        5, 0, 300,
                        5, 0, 200);
            pbpABP.PropertyChanged += updateProperty;

            penmPACatheterRhythm.Init(PropertyEnum.Keys.PACatheter_Rhythms,
                                      Enum.GetNames(typeof(PulmonaryArtery_Rhythms.Values)), pulmonaryRhythms);
            penmPACatheterRhythm.PropertyChanged += updateProperty;
            penmPACatheterRhythm.PropertyChanged += updatePACatheterRhythm;

            pbpPBP.Init(PropertyBP.Keys.PSP,
                        5, 0, 200,
                        5, 0, 200);
            pbpPBP.PropertyChanged += updateProperty;

            pintICP.Init(PropertyInt.Keys.ICP, 1, -100, 100);
            pintICP.PropertyChanged += updateProperty;

            pintIAP.Init(PropertyInt.Keys.IAP, 1, -100, 100);
            pintIAP.PropertyChanged += updateProperty;

            pchkMechanicallyVentilated.Init(PropertyCheck.Keys.MechanicallyVentilated);
            pchkMechanicallyVentilated.PropertyChanged += updateProperty;

            pdblInspiratoryRatio.Init(PropertyFloat.Keys.RRInspiratoryRatio, 0.1, 0.1, 10);
            pdblInspiratoryRatio.PropertyChanged += updateProperty;

            pdblExpiratoryRatio.Init(PropertyFloat.Keys.RRExpiratoryRatio, 0.1, 0.1, 10);
            pdblExpiratoryRatio.PropertyChanged += updateProperty;

            pintPacemakerThreshold.Init(PropertyInt.Keys.PacemakerThreshold, 5, 0, 200);
            pintPacemakerThreshold.PropertyChanged += updateProperty;

            pchkPulsusParadoxus.Init(PropertyCheck.Keys.PulsusParadoxus);
            pchkPulsusParadoxus.PropertyChanged += updateProperty;

            pchkPulsusAlternans.Init(PropertyCheck.Keys.PulsusAlternans);
            pchkPulsusAlternans.PropertyChanged += updateProperty;

            penmCardiacAxis.Init(PropertyEnum.Keys.Cardiac_Axis,
                                 Enum.GetNames(typeof(Cardiac_Axes.Values)), cardiacAxes);
            penmCardiacAxis.PropertyChanged += updateProperty;

            pecgSTSegment.Init(PropertyECGSegment.Keys.STElevation);
            pecgSTSegment.PropertyChanged += updateProperty;

            pecgTWave.Init(PropertyECGSegment.Keys.TWave);
            pecgTWave.PropertyChanged += updateProperty;

            pintProgressFrom.Init(PropertyInt.Keys.ProgressFrom, 1, -1, 1000);
            pintProgressFrom.PropertyChanged += updateProperty;

            pintProgressTo.Init(PropertyInt.Keys.ProgressTo, 1, -1, 1000);
            pintProgressTo.PropertyChanged += updateProperty;

            pintProgressTimer.Init(PropertyInt.Keys.ProgressTimer, 1, -1, 1000);
            pintProgressTimer.PropertyChanged += updateProperty;
        }