private void ExtractTermBasal(ICollection <DataRow> rows) { var exceptions = new ConcurrentQueue <Exception>(); Parallel.ForEach(rows, (row) => { try { Guid keyId = MemoryMappings.GetReadingHeaderKeyId(row["DOWNLOADKEYID"].ToString()); Guid userId = MemoryMappings.GetUserIdFromPatientInfo(MigrationVariables.CurrentSiteId, row["PATIENTKEYID"].ToString()); if (!keyId.Equals(Guid.Empty)) { var bd = new BasalDelivery(); var dd = new BasalDeliveryData(); dd.Name = "TERM_BASAL"; dd.Value = (row["READINGNOTE"] is DBNull) ? String.Empty : row["READINGNOTE"].ToString(); dd.Date = (row["READINGDATETIME"] is DBNull) ? new DateTime(1800, 1, 1) : mu.ParseFirebirdDateTime(row["READINGDATETIME"].ToString()); bd.ReadingKeyId = keyId; bd.UserId = userId; bd.StartDateTime = (row["READINGDATETIME"] is DBNull) ? new DateTime(1800, 1, 1) : mu.ParseFirebirdDateTime(row["READINGDATETIME"].ToString()); bd.AmountDelivered = 0; bd.DeliveryRate = 0; bd.Duration = String.Empty; bd.IsTemp = false; bd.BasalDeliveryDatas.Add(dd); BasalDeliveries.Add(bd); } else { var primeKey = $"{row["DOWNLOADKEYID"].ToString()}-{row["SEQ"].ToString()}"; MappingStatistics.LogFailedMapping("METERREADING", primeKey, "BASALDELIVERY", typeof(BasalDelivery), String.Empty, "Failed to map TERM_BASAL reading, unable to parse key id."); } } catch (Exception e) { exceptions.Enqueue(e); } }); if (exceptions.Count > 0) { throw new AggregateException(exceptions); } }
private void ExtractBasal(ICollection <DataRow> rows) { var exceptions = new ConcurrentQueue <Exception>(); Parallel.ForEach(rows, (row) => { try { Guid keyId = MemoryMappings.GetReadingHeaderKeyId(row["DOWNLOADKEYID"].ToString()); Guid userId = MemoryMappings.GetUserIdFromPatientInfo(MigrationVariables.CurrentSiteId, row["PATIENTKEYID"].ToString()); if (!keyId.Equals(Guid.Empty)) { var value = (row["CLINIPROVALUE"] is DBNull) ? String.Empty : row["CLINIPROVALUE"].ToString(); bool ptGood = Double.TryParse(value, out double rate); var bd = new BasalDelivery(); bd.ReadingKeyId = keyId; bd.UserId = userId; bd.StartDateTime = (row["READINGDATETIME"] is DBNull) ? new DateTime(1800, 1, 1) : mu.ParseFirebirdDateTime(row["READINGDATETIME"].ToString()); bd.AmountDelivered = 0; // 0 means you must group times and multiple by rate programmaically bd.DeliveryRate = rate; bd.Duration = String.Empty; bd.IsTemp = false; BasalDeliveries.Add(bd); } else { var primeKey = $"{row["DOWNLOADKEYID"].ToString()}-{row["SEQ"].ToString()}"; MappingStatistics.LogFailedMapping("METERREADING", primeKey, "BASALDELIVERY", typeof(BasalDelivery), String.Empty, "Failed to map BASAL reading, unable to parse key id."); } } catch (Exception e) { exceptions.Enqueue(e); } }); if (exceptions.Count > 0) { throw new AggregateException(exceptions); } }