private void AddEntity(QueryDefinition queryDefinition, IEnumerable <EntityDefinition> definitions, IDataReader reader, Guid recordGuid) { if (definitions == null) { return; } foreach (var d in queryDefinition.FindDefinition(definitions, reader)) { Concept conceptDef = null; if (d.Concepts != null && d.Concepts.Any()) { conceptDef = d.Concepts[0]; } if (this.Vocabulary == null) { this.Vocabulary = d.Vocabulary; } foreach (var entity in d.GetConcepts(conceptDef, reader, chunk.KeyMasterOffset)) { if (entity == null) { continue; } entity.SourceRecordGuid = recordGuid; AddEntity(entity); if (entity is DrugExposure) { if (queryDefinition.DrugCost != null) { AddChildData(entity, queryDefinition.DrugCost[0].CreateEnity((DrugExposure)entity, reader)); } } else if (entity is ProcedureOccurrence) { if (queryDefinition.ProcedureCost != null) { AddChildData(entity, queryDefinition.ProcedureCost[0].CreateEnity((ProcedureOccurrence)entity, reader)); } } } } }
private void AddEntity(QueryDefinition queryDefinition, IEnumerable <EntityDefinition> definitions, IDataRecord reader, Guid recordGuid, string definitionName) { if (definitions == null) { return; } foreach (var d in queryDefinition.FindDefinition(definitions, reader)) { var personId = reader.GetLong(d.PersonId); try { Concept conceptDef = null; if (d.Concepts != null && d.Concepts.Any()) { conceptDef = d.Concepts[0]; } bool added; var pb = personBuilders.GetOrAdd(personId.Value, key => new Lazy <IPersonBuilder>(() => createPersonBuilder()), out added).Value; if (pb.Chunk == null) { pb.JoinToChunkData(chunk); } pb.JoinToVocabulary(d.Vocabulary); var keyMasterOffset = pb.Chunk.KeyMasterOffset; foreach (var entity in d.GetConcepts(conceptDef, reader, keyMasterOffset)) { if (entity == null) { continue; } entity.SourceRecordGuid = recordGuid; AddEntity(entity); switch (entity.GeEntityType()) { case EntityType.DrugExposure: { if (queryDefinition.DrugCost != null && queryDefinition.DrugCost[0].Match(reader)) { AddChildData(entity, queryDefinition.DrugCost[0].CreateEnity((DrugExposure)entity, reader)); } break; } case EntityType.ProcedureOccurrence: { if (queryDefinition.ProcedureCost != null && queryDefinition.ProcedureCost[0].Match(reader)) { AddChildData(entity, queryDefinition.ProcedureCost[0].CreateEnity((ProcedureOccurrence)entity, reader, keyMasterOffset)); } break; } case EntityType.VisitOccurrence: { if (queryDefinition.VisitCost != null && queryDefinition.VisitCost[0].Match(reader)) { AddChildData(entity, queryDefinition.VisitCost[0].CreateEnity((VisitOccurrence)entity, reader, keyMasterOffset)); } break; } case EntityType.DeviceExposure: { if (queryDefinition.DeviceCost != null && queryDefinition.DeviceCost[0].Match(reader)) { AddChildData(entity, queryDefinition.DeviceCost[0].CreateEnity((DeviceExposure)entity, reader, keyMasterOffset)); } break; } case EntityType.Observation: { if (queryDefinition.ObservationCost != null && queryDefinition.ObservationCost[0].Match(reader)) { AddChildData(entity, queryDefinition.ObservationCost[0].CreateEnity((Observation)entity, reader)); } break; } case EntityType.Measurement: { if (queryDefinition.MeasurementCost != null && queryDefinition.MeasurementCost[0].Match(reader)) { AddChildData(entity, queryDefinition.MeasurementCost[0].CreateEnity((Measurement)entity, reader)); } break; } } } } catch (Exception e) { throw new Exception(string.Format("PersonId={0} | DefinitionFileName={1} | DefinitionName={2}", personId, queryDefinition.FileName, definitionName), e); } } }
private void AddEntity(QueryDefinition queryDefinition, IEnumerable <EntityDefinition> definitions, IDataRecord reader, Guid recordGuid, string definitionName) { if (definitions == null) { return; } foreach (var d in queryDefinition.FindDefinition(definitions, reader)) { var personId = reader.GetLong(d.PersonId); if (LastSavedPersonId.HasValue && personId <= LastSavedPersonId) { continue; } if (!queryDefinition.ProcessedPersonIds.ContainsKey(personId.Value)) { queryDefinition.ProcessedPersonIds.Add(personId.Value, 0); } try { Concept conceptDef = null; if (d.Concepts != null && d.Concepts.Any()) { conceptDef = d.Concepts[0]; } bool added; var pb = PersonBuilders.GetOrAdd(personId.Value, key => new Lazy <IPersonBuilder>(() => CreatePersonBuilder()), out added).Value; pb.JoinToVocabulary(d.Vocabulary); foreach (var entity in d.GetConcepts(conceptDef, reader, OffsetManager)) { if (entity == null) { continue; } entity.SourceRecordGuid = recordGuid; AddEntity(entity); switch (entity.GeEntityType()) { case EntityType.DrugExposure: { var parent = (DrugExposure)entity; if (queryDefinition.DrugCost != null && queryDefinition.DrugCost[0].Match(reader)) { PersonBuilders[parent.PersonId].Value.AddChildData(parent, queryDefinition.DrugCost[0].CreateEnity(parent, reader)); } break; } case EntityType.ProcedureOccurrence: { if (queryDefinition.ProcedureCost != null && queryDefinition.ProcedureCost[0].Match(reader)) { var parent = (ProcedureOccurrence)entity; PersonBuilders[parent.PersonId].Value.AddChildData(parent, queryDefinition.ProcedureCost[0].CreateEnity(parent, reader, OffsetManager)); } break; } case EntityType.VisitOccurrence: { if (queryDefinition.VisitCost != null && queryDefinition.VisitCost[0].Match(reader)) { var parent = (VisitOccurrence)entity; PersonBuilders[parent.PersonId].Value.AddChildData(parent, queryDefinition.VisitCost[0].CreateEnity(parent, reader, OffsetManager)); } break; } case EntityType.DeviceExposure: { var parent = (DeviceExposure)entity; if (queryDefinition.DeviceCost != null && queryDefinition.DeviceCost[0].Match(reader)) { PersonBuilders[parent.PersonId].Value.AddChildData(parent, queryDefinition.DeviceCost[0].CreateEnity(parent, reader, OffsetManager)); } break; } case EntityType.Observation: { var parent = (Observation)entity; if (queryDefinition.ObservationCost != null && queryDefinition.ObservationCost[0].Match(reader)) { PersonBuilders[parent.PersonId].Value.AddChildData(parent, queryDefinition.ObservationCost[0].CreateEnity(parent, reader)); } break; } case EntityType.Measurement: { var parent = (Measurement)entity; if (queryDefinition.MeasurementCost != null && queryDefinition.MeasurementCost[0].Match(reader)) { PersonBuilders[parent.PersonId].Value.AddChildData(parent, queryDefinition.MeasurementCost[0].CreateEnity(parent, reader)); } break; } } } queryDefinition.RowProcessed(); } catch (Exception e) { Console.WriteLine("Error"); Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); throw; } } }
private void AddEntity(QueryDefinition queryDefinition, IEnumerable <EntityDefinition> definitions, IDataRecord reader, Guid recordGuid) { if (definitions == null) { return; } foreach (var d in queryDefinition.FindDefinition(definitions, reader)) { var personId = reader.GetLong(d.PersonId); if (_lastSavedPersonId.HasValue && personId <= _lastSavedPersonId) { continue; } queryDefinition.ProcessedPersonIds.TryAdd(personId.Value, 0); queryDefinition.ProcessedPersonIds[personId.Value] = ((S3DataReader2)reader).RowIndex; try { Concept conceptDef = null; if (d.Concepts != null && d.Concepts.Any()) { conceptDef = d.Concepts[0]; } bool added; var pb = _personBuilders.GetOrAdd(personId.Value, key => new Lazy <IPersonBuilder>(() => _createPersonBuilder()), out added).Value; pb.JoinToVocabulary(d.Vocabulary); foreach (var entity in d.GetConcepts(conceptDef, reader, _offsetManager)) { if (entity == null) { continue; } entity.SourceRecordGuid = recordGuid; AddEntity(entity); switch (entity.GeEntityType()) { case EntityType.DrugExposure: { if (queryDefinition.DrugCost != null && queryDefinition.DrugCost[0].Match(reader)) { AddChildData((DrugExposure)entity, queryDefinition.DrugCost[0].CreateEnity((DrugExposure)entity, reader)); } break; } case EntityType.ProcedureOccurrence: { if (queryDefinition.ProcedureCost != null && queryDefinition.ProcedureCost[0].Match(reader)) { AddChildData((ProcedureOccurrence)entity, queryDefinition.ProcedureCost[0].CreateEnity((ProcedureOccurrence)entity, reader, _offsetManager)); } break; } case EntityType.VisitOccurrence: { if (queryDefinition.VisitCost != null && queryDefinition.VisitCost[0].Match(reader)) { AddChildData((VisitOccurrence)entity, queryDefinition.VisitCost[0].CreateEnity((VisitOccurrence)entity, reader, _offsetManager)); } break; } case EntityType.DeviceExposure: { if (queryDefinition.DeviceCost != null && queryDefinition.DeviceCost[0].Match(reader)) { AddChildData((DeviceExposure)entity, queryDefinition.DeviceCost[0].CreateEnity((DeviceExposure)entity, reader, _offsetManager)); } break; } case EntityType.Observation: { if (queryDefinition.ObservationCost != null && queryDefinition.ObservationCost[0].Match(reader)) { AddChildData((Observation)entity, queryDefinition.ObservationCost[0].CreateEnity((Observation)entity, reader)); } break; } case EntityType.Measurement: { if (queryDefinition.MeasurementCost != null && queryDefinition.MeasurementCost[0].Match(reader)) { AddChildData((Measurement)entity, queryDefinition.MeasurementCost[0].CreateEnity((Measurement)entity, reader)); } break; } } } queryDefinition.RowProcessed(); } catch (Exception e) { Console.WriteLine("WARN_EXC - AddEntity - throw"); Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); Settings.Current.Error = true; throw; } } }