public static PatientEpisode GetPatientEpisodes(string hn) { PatientEpisode ptEpi = new PatientEpisode(); var cmdString = QueryString.GetPatientEpisodes(hn); //var dt = InterSystemsDA.DTBindDataCommand(cmdString, Constants.Chache89); var dt = InterSystemsDA.GetDTGetPatientEpisode(hn); ptEpi = Helper.DataTablePatientEpisode(dt, hn); return(ptEpi); }
internal static TheographChartViewModel GetPatientEpsiodeEventsChart(PatientEpisode patientEpisode) { TheographChartViewModel output = new TheographChartViewModel(); if (patientEpisode.Episode.Events.Count == 0) { return(output); } var eventGroups = patientEpisode.Episode.Events.GroupBy(x => x.EventType.DisplayName); var maxEventEndTime = patientEpisode.Episode.Events.Select(x => x.StartTime) .Union(patientEpisode.Episode.Events.Where(x => x.EndTime.HasValue).Select(x => x.EndTime.Value)) .Max(); DateTime start = patientEpisode.Episode.StartTime; DateTime end = start; // set a sensible end time if (patientEpisode.Episode.EndTime.HasValue) { end = patientEpisode.Episode.EndTime.Value; } else { end = maxEventEndTime; } var xAxis = new TheographAxisData { Type = "datetime", Min = start.AddHours(-1).ToHighchartsTime(), Max = end.AddHours(1).ToHighchartsTime(), TickInterval = 1000 * 60 * 30, MinRange = 1000 * 60 * 60, // max zoom of 1 hour }; var yAxis = new TheographAxisData(); var yPlotBands = new List <TheographPlotBandData>(); const int height = 100; yAxis.TickInterval = height; yAxis.Max = eventGroups.Count() * height; yAxis.MinRange = eventGroups.Count() * height; yAxis.Labels = new TheographAxisLabelData(); yAxis.Title = new TheographTitleData(); for (int i = 0; i < eventGroups.Count(); i++) { var eventGroup = eventGroups.ElementAt(i); var series = new TheographChartSeries { Name = eventGroup.Key }; var plotBand = new TheographPlotBandData { From = i * height, To = (i + 1) * height, Color = (i % 2 == 0) ? "rgba(68, 170, 213, 0.1)" : null }; plotBand.Label.Text = eventGroup.Key; var orderedEvents = eventGroup.OrderBy(x => x.StartTime); foreach (var orderedEvent in orderedEvents) { int yPoint = ((i + 1) * height) - (height / 2); StringBuilder sbToolTipText = new StringBuilder(); string tooltipTitle = eventGroup.Key; IResultsEvent resultsEvent = orderedEvent as IResultsEvent; if (resultsEvent != null) { if (resultsEvent.Results.Count > 1) { tooltipTitle = string.Format("{0} : {1}", eventGroup.Key, orderedEvent.Code.DisplayName); foreach (var result in resultsEvent.Results) { sbToolTipText.AppendFormat( "{0}{1}", sbToolTipText.Length == 0 ? string.Empty : "<br/>", result.GetDisplayValue()); } } else if (resultsEvent.Results.Count == 1) { sbToolTipText.AppendFormat( "{0} : {1}", orderedEvent.Code.DisplayName, resultsEvent.Results[0].GetDisplayValue()); } } sbToolTipText.AppendFormat( "{0}{1:ddd MMMM} <sup>{2}</sup> {1:yyyy HH:mm}", sbToolTipText.Length == 0 ? string.Empty : "<br/>", orderedEvent.StartTime, orderedEvent.StartTime.GetDayOrdinal()); if (orderedEvent.EndTime.HasValue) { sbToolTipText.AppendFormat( " to {0:ddd MMMM} <sup>{1}</sup> {0:yyyy HH:mm}", orderedEvent.EndTime.Value, orderedEvent.EndTime.Value.GetDayOrdinal()); } // start point var dataPoint = new TheographChartSeriesData { // * 1000 to conform with the Highcharts way of handling dates EpisodeStartTimestamp = orderedEvent.StartTime.ToHighchartsTime(), Y = yPoint }; dataPoint.AddData("tooltipTitle", tooltipTitle); dataPoint.AddData("tooltipText", sbToolTipText.ToString()); dataPoint.AddData("episodeId", orderedEvent.EpisodeId.Value); series.Data.Add(dataPoint); // end point if (orderedEvent.EndTime.HasValue) { dataPoint = new TheographChartSeriesData { // * 1000 to conform with the Highcharts way of handling dates EpisodeStartTimestamp = orderedEvent.EndTime.Value.ToUnixTime() * 1000, Y = yPoint }; dataPoint.AddData("tooltipTitle", tooltipTitle); dataPoint.AddData("tooltipText", sbToolTipText.ToString()); dataPoint.AddData("episodeId", orderedEvent.EpisodeId.Value); series.Data.Add(dataPoint); } // add null-value point to disconnect separate epsiodes var dataNullPoint = new TheographChartSeriesData { EpisodeStartTimestamp = dataPoint.EpisodeStartTimestamp + 1, Y = null }; series.Data.Add(dataNullPoint); } output.Series.Add(series); yAxis.AddPlotBand(plotBand); } var xPlotBands = new List <TheographPlotBandData>(); xAxis.AddPlotBand(new TheographPlotBandData { From = start.ToHighchartsTime(), To = end.ToHighchartsTime(), Color = "rgba(190, 220, 240, 0.35)" }); output.Axes.Add("x", xAxis); output.Axes.Add("y", yAxis); return(output); }
public static PatientEpisode DataTablePatientEpisode(DataTable dt, string hn) { PatientEpisode ptEpi = new PatientEpisode(); List <Episode> epis = new List <Episode>(); if (!hn.Contains("-")) { hn = Regex.Replace(hn, @"^(.{2})(.{2})(.{6})$", "$1-$2-$3"); } #region ByQueryString //foreach (DataRow row in dt.Rows) //{ // Episode epi = new Episode(); // string epino = row["PAADM_ADMNo"].ToString().Trim(); // if (!string.IsNullOrEmpty(epino)) // { // epi.EpisodeNo = epino; // epi.EpisodeDate = Convert.ToDateTime(row["PAADM_AdmDate"].ToString()); // epi.EpisodeTime = Convert.ToDateTime(row["PAADM_AdmTime"].ToString()); // epi.LocCode = row["CTLOC_Code"].ToString(); // epi.LocDesc = row["CTLOC_Desc"].ToString(); // epi.IPD_OPD = IPD_OPD(epino); // epi.DoctorName = row["CTPCP_Desc"].ToString(); // epi.DoctorSpecialty = row["CTSPC_Desc"].ToString(); // epi.Revenue = GetData.GetRevenueByEPI(epino); // epi.PaymentMethod = ""; // epi.ICD10 = row["MRCID_Code"].ToString(); // epi.ICPC2 = ""; // epi.DepartmentGroup = ""; // epi.Hospital = GetHospital(epino); // epi.HospitalDRGCategory = ""; // epi.Interpreter = ""; // epis.Add(epi); // } //} #endregion #region By Store Procedure foreach (DataRow row in dt.Rows) { Episode epi = new Episode(); string epino = row["admNo"].ToString().Trim(); if (!string.IsNullOrEmpty(epino)) { epi.EpisodeNo = epino; epi.EpisodeDate = DateTime.Parse(row["admDate"].ToString()).ToString("dd/MM/yyyy"); epi.LocCode = row["admLocCode"].ToString(); epi.LocDesc = row["admLocDesc"].ToString(); epi.IPD_OPD = IPD_OPD(epino); epi.DoctorName = row["admDocDesc"].ToString(); epi.DoctorSpecialty = row["admSpec"].ToString(); epi.Revenue = Convert.ToDouble(row["titmLineTotal"].ToString()); epi.PaymentMethod = row["PayorDesc"].ToString(); epi.ICD10 = row["icd10"].ToString(); epi.ICPC2 = row["icd9"].ToString(); epi.DepartmentGroup = row["DepartmentGrp"].ToString(); epi.Hospital = row["CTHospital"].ToString(); epi.HospitalDRGCategory = row["CTHospitalDRG"].ToString(); epi.Interpreter = row["interpreter"].ToString(); epis.Add(epi); } } #endregion ptEpi.HN = hn; ptEpi.Episodes = epis; return(ptEpi); }