Exemple #1
0
        public void ResultChartAddSeries(List<ResultData> listdata)
        {
            
            
                CategoricalSeries series = Activator.CreateInstance(typeof(LineSeries)) as CategoricalSeries;

                series.CategoryBinding = new PropertyNameDataPointBinding("Category");
                series.ValueBinding = new PropertyNameDataPointBinding("Value");
                series.Name = listdata[0].ResultName;
                series.Tag = listdata[0].OrderName;
                this.chart.VerticalAxis.ShowLabels = false;
                this.chart.HorizontalAxis.Margin = new Thickness(10, 5, 5, 10);

                ChartSeriesLabelDefinition csld = new ChartSeriesLabelDefinition();
            
         
                csld.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Right;
                csld.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top;
                csld.Template = CreateScatterDataLabelTemplate();

                series.LabelDefinitions.Add(csld);
                ResultData[] rdArray = null;
                rdArray = new ResultData[listdata.Count()];

                listdata.CopyTo(rdArray);

                for (int b = 0; b < rdArray.Length; b++)
                {
                    CategoricalDataPoint cdp = new CategoricalDataPoint();

                    cdp.Category = rdArray[b].Category;
                    cdp.Value = (double)rdArray[b].Value;
                    
                    cdp.Label = rdArray[b].ResultDisplayValue;
                   
                    series.DataPoints.Add(cdp);
                   
                }
          
                this.chart.Series.Add(series);

                ChartLegend leg = new ChartLegend();
                leg.ChartControl = this.chart;

                leg.BrushColor = chart.Palette.GetBrush(chart.Series.Count - 1, PaletteVisualPart.Stroke);
                leg.Text = listdata[0].ResultName + "\r\n" + listdata[0].ResultUnits;
                leg.SeriesName = series.Name;
                leg.ChartTitleParent = this.stackTitle;
                leg.StackPanelParent = this.legend;
                this.legend.Children.Add(leg);
          
           
        }
        async void PatientProblemDetail_Loaded(object sender, RoutedEventArgs e)
        {
            bool NoData = true;

           // PageNavigationParams pnp = new PageNavigationParams();
           // ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
           // ApplicationDataCompositeValue compositeValue = localSettings.Values["PatientProblemDetailPage"] as ApplicationDataCompositeValue;
            //pnp.ProblemDescription = compositeValue["strProblemDescription"] as string;
           // pnp.ProblemID = compositeValue["strProblemID"] as string;
           // pnp.PatientID = compositeValue["strPatientID"] as string;

            ViewModel.ProblemDescription = Nike.Core.Data_Services.PageNavigationService.ChartItem.Name;

            try
            {
                int i = 0;
                //  UserObject use = new UserObject();
                List<VitalData> listPulse = new List<VitalData>();
                List<VitalData> listBMI = new List<VitalData>();
                bool bHasResultData = false;
                bool bHasVitalsData = false;
                bool bHasMedsData = false;

                ChartControl ccVital = new ChartControl();
                ChartControl ccResult = new ChartControl();
                ChartControl ccMeds = new ChartControl();

                string sjson = await ViewModel.PatientDataService.GetProblemActivity(ViewModel.UnityDataService.UnityAppUser, PageNavigationService.PatientItem.ID, PageNavigationService.ChartItem.ID);
                JArray obj = JArray.Parse(sjson);
                foreach (JObject jo in obj)
                {
                    string sPrevResult = "";
                    string sPrevOrder = "";
                    //info4 is results
                    JToken activity = jo.SelectToken("getproblemactivityinfo", false);
                    if (activity != null)
                    {
                        if (activity.Count() == 0)
                            continue;

                        List<ResultData> listResults = new List<ResultData>();
                        foreach (JToken joRow in activity)
                        {
                            string sResultName = joRow["ResultName"].ToString().Trim();
                            string sResultValue = joRow["ResultValue"].ToString().Trim();
                            string sResultUnits = joRow["ResultUnits"].ToString().Trim();
                            string sResultDate = joRow["ResultDate"].ToString().Trim();
                            string sOrderName = joRow["OrderName"].ToString().Trim();
                            string sResultDisplayValue = joRow["DisplayResultValue"].ToString().Trim();

                            decimal dResultValue = 0;
                            if (sPrevOrder != sOrderName)
                            {
                                i = 0;
                            }
                            if (i == 0)
                            {
                                sPrevOrder = sOrderName;
                                ccResult.SetOrderList(sOrderName);
                            }

                            if (!string.IsNullOrEmpty(sResultValue))
                            {
                                if (decimal.TryParse(sResultValue, out dResultValue))
                                {
                                    string sDisplayDate = DateTime.Parse(sResultDate).ToString("MM/dd/yy");
                                    DateTime dt = DateTime.Parse(sResultDate);

                                    ResultData rd = new ResultData(dResultValue, dt, sResultName, sResultUnits, sOrderName, sResultDisplayValue);
                                    listResults.Add(rd);
                                }
                            }

                            i++;
                        }
                        if (listResults.Count() > 0)
                        {
                            bHasResultData = true;
                            ccResult.OrdersAndResults = listResults;
                        }
                    }

                    JToken activity1 = jo.SelectToken("getproblemactivityinfo1", false);
                    if (activity1 != null)
                    {
                        if (activity1.Count() == 0)
                            continue;
                        List<VitalData> listChart = new List<VitalData>();
                        i = 0;
                        foreach (JToken joRow in activity1)
                        {

                            string sVitalName = joRow["vital"].ToString().Trim();
                            string sVitalValue = joRow["vitval"].ToString().Trim();
                            string sVitalUnits = joRow["units"].ToString().Trim();
                            string sVitalDate = joRow["vitaldate"].ToString().Trim();
                            string sDisplay = joRow["disp"].ToString().Trim();

                            decimal dVitalValue = 0;

                            if (i == 0)
                            {
                                sPrevResult = sVitalName;

                            }
                            if (sVitalName != sPrevResult && listChart.Count > 0)
                            {
                                sPrevResult = sVitalName;

                                ccVital.VitalsAddSeries(listChart);
                                if (listChart.Count() > 1)
                                {
                                    bHasVitalsData = true;
                                }
                                listChart.Clear();
                            }
                            if (!string.IsNullOrEmpty(sVitalName))
                            {
                                if (decimal.TryParse(sVitalValue, out dVitalValue))
                                {
                                    string sDisplayDate = DateTime.Parse(sVitalDate).ToString("MM/dd/yy");
                                    DateTime dt = DateTime.Parse(sDisplayDate);
                                    VitalData rd = new VitalData(dVitalValue, dt, sVitalName, sDisplay);
                                    listChart.Add(rd);

                                }
                            }

                            i++;
                        }
                        if (listChart.Count() > 0)
                        {
                            ccVital.VitalsAddSeries(listChart);
                        }
                    }
                    //info2 is meds


                    JToken activity2 = jo.SelectToken("getproblemactivityinfo2", false);
                    if (activity2 != null)
                    {
                        if (activity2.Count() == 0)
                            continue;
                        List<MedData> listMed = new List<MedData>();
                        i = 0;
                        foreach (JToken joRow in activity2)
                        {

                            string sMedName = joRow["drugname"].ToString().Trim();
                            string sMedStrength = joRow["drugstrength"].ToString().Trim();
                            string sStartDate = joRow["startdate"].ToString().Trim();
                            string sEndDate = joRow["enddate"].ToString().Trim();
                            string sDays = joRow["days"].ToString().Trim();

                            decimal dStrength = 0;

                            decimal.TryParse(sMedStrength, out dStrength);

                            MedData md = new MedData(sMedName, sMedStrength, sStartDate, sEndDate, int.Parse(sDays));
                            listMed.Add(md);
                            bHasMedsData = true;


                            i++;
                        }
                        ccMeds.MedsAddSeries(listMed);
                    }
                }
                if (bHasMedsData)
                {
                    Grid.SetRow(ccResult, 0);
                    GraphBody.Children.Add(ccMeds);
                    NoData = false;
                }
                if (bHasResultData)
                {

                    Grid.SetRow(ccResult, 1);

                    //GraphBody.Children.Add(ccResult);
                    ccResult.ControlReady = true;
                    NoData = false;
                }
                if (bHasVitalsData)
                {
                    Grid.SetRow(ccVital, 2);
                    ccVital.SetTitle("Vitals");
                    GraphBody.Children.Add(ccVital);
                    NoData = false;
                }

                if (NoData)
                {
                    TextBox tb = new TextBox();
                    tb.Text = "No data for this patient.";
                    tb.FontSize = 24;
                    GraphBody.Children.Add(tb);

                }
                
            }
            catch (Exception ex)
            {
                ErrorHandler eh = new ErrorHandler(ex, "PatientProblemDetail.xaml onnavigatedto");
                eh.ShowErrorDialog();
            }
        }