Exemple #1
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Name.Length != 0)
            {
                hash ^= Name.GetHashCode();
            }
            if (Description.Length != 0)
            {
                hash ^= Description.GetHashCode();
            }
            hash ^= targetResources_.GetHashCode();
            if (InsightSubtype.Length != 0)
            {
                hash ^= InsightSubtype.GetHashCode();
            }
            if (content_ != null)
            {
                hash ^= Content.GetHashCode();
            }
            if (lastRefreshTime_ != null)
            {
                hash ^= LastRefreshTime.GetHashCode();
            }
            if (observationPeriod_ != null)
            {
                hash ^= ObservationPeriod.GetHashCode();
            }
            if (stateInfo_ != null)
            {
                hash ^= StateInfo.GetHashCode();
            }
            if (Category != global::Google.Cloud.Recommender.V1.Insight.Types.Category.Unspecified)
            {
                hash ^= Category.GetHashCode();
            }
            if (Etag.Length != 0)
            {
                hash ^= Etag.GetHashCode();
            }
            hash ^= associatedRecommendations_.GetHashCode();
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Exemple #2
0
 public void MergeFrom(Insight other)
 {
     if (other == null)
     {
         return;
     }
     if (other.Name.Length != 0)
     {
         Name = other.Name;
     }
     if (other.Description.Length != 0)
     {
         Description = other.Description;
     }
     targetResources_.Add(other.targetResources_);
     if (other.InsightSubtype.Length != 0)
     {
         InsightSubtype = other.InsightSubtype;
     }
     if (other.content_ != null)
     {
         if (content_ == null)
         {
             Content = new global::Google.Protobuf.WellKnownTypes.Struct();
         }
         Content.MergeFrom(other.Content);
     }
     if (other.lastRefreshTime_ != null)
     {
         if (lastRefreshTime_ == null)
         {
             LastRefreshTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
         }
         LastRefreshTime.MergeFrom(other.LastRefreshTime);
     }
     if (other.observationPeriod_ != null)
     {
         if (observationPeriod_ == null)
         {
             ObservationPeriod = new global::Google.Protobuf.WellKnownTypes.Duration();
         }
         ObservationPeriod.MergeFrom(other.ObservationPeriod);
     }
     if (other.stateInfo_ != null)
     {
         if (stateInfo_ == null)
         {
             StateInfo = new global::Google.Cloud.Recommender.V1.InsightStateInfo();
         }
         StateInfo.MergeFrom(other.StateInfo);
     }
     if (other.Category != global::Google.Cloud.Recommender.V1.Insight.Types.Category.Unspecified)
     {
         Category = other.Category;
     }
     if (other.Etag.Length != 0)
     {
         Etag = other.Etag;
     }
     associatedRecommendations_.Add(other.associatedRecommendations_);
     _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
 }
        public override Attrition Build(ChunkData data, KeyMasterOffsetManager o)
        {
            Offset    = o;
            ChunkData = data;

            var result = BuildPerson(PersonRecords.ToList());
            var person = result.Key;

            if (person == null)
            {
                Complete = true;
                return(result.Value);
            }

            var obs = ObservationPeriodsRaw.Where(op => op.TypeConceptId > 0).ToArray();

            ObservationPeriod[] observationPeriods;
            if (obs.Length == 0)
            {
                observationPeriods = new ObservationPeriod[0];
            }
            else
            {
                observationPeriods =
                    BuildObservationPeriods(person.ObservationPeriodGap, ObservationPeriodsRaw.Where(op => op.TypeConceptId > 0).ToArray())
                    .ToArray();
            }

            if (Excluded(person, observationPeriods))
            {
                Complete = true;
                return(Attrition.ImplausibleYOBPostEarliestOP);
            }


            var visitDetails = BuildVisitDetails(null, VisitOccurrencesRaw.ToArray(), observationPeriods).ToArray();

            var visitOccurrences = new Dictionary <long, VisitOccurrence>();
            var visitIds         = new List <long>();

            foreach (var visitOccurrence in BuildVisitOccurrences(VisitOccurrencesRaw.ToArray(), observationPeriods))
            {
                visitOccurrence.Id = Offset.GetKeyOffset(visitOccurrence.PersonId).VisitOccurrenceId;

                if (!visitOccurrences.ContainsKey(visitOccurrence.Id))
                {
                    visitOccurrences.Add(visitOccurrence.Id, visitOccurrence);
                    visitIds.Add(visitOccurrence.Id);
                }
            }

            foreach (var visitDetail in visitDetails)
            {
                var vo = GetVisitOccurrence(visitDetail);
                visitDetail.VisitOccurrenceId = vo?.Id ?? 0;

                if (visitDetail.VisitOccurrenceId.HasValue && !_visitDetails.ContainsKey(visitDetail.VisitOccurrenceId.Value))
                {
                    _visitDetails.Add(visitDetail.VisitOccurrenceId.Value, new List <VisitDetail>());
                }

                _visitDetails[visitDetail.VisitOccurrenceId.Value].Add(visitDetail);
            }

            long?prevVisitId = null;

            foreach (var visitId in visitIds.OrderBy(v => v))
            {
                if (prevVisitId.HasValue)
                {
                    visitOccurrences[visitId].PrecedingVisitOccurrenceId = prevVisitId;
                }

                prevVisitId = visitId;
            }


            var conditionOccurrences =
                BuildConditionOccurrences(ConditionOccurrencesRaw.ToArray(), visitOccurrences, observationPeriods)
                .ToArray();

            foreach (var co in conditionOccurrences)
            {
                co.Id = Offset.GetKeyOffset(co.PersonId).ConditionOccurrenceId;
            }

            var procedureOccurrences =
                BuildProcedureOccurrences(ProcedureOccurrencesRaw.ToArray(), visitOccurrences, observationPeriods)
                .ToArray();

            foreach (var procedureOccurrence in procedureOccurrences)
            {
                procedureOccurrence.Id =
                    Offset.GetKeyOffset(procedureOccurrence.PersonId).ProcedureOccurrenceId;
            }

            var observations = BuildObservations(ObservationsRaw.ToArray(), visitOccurrences, observationPeriods)
                               .ToArray();

            foreach (var ob in observations)
            {
                ob.Id = Offset.GetKeyOffset(ob.PersonId).ObservationId;
            }

            var drugExposures =
                BuildDrugExposures(DrugExposuresRaw.ToArray(), visitOccurrences, observationPeriods)
                .ToArray();

            var measurements = BuildMeasurement(MeasurementsRaw.ToArray(), visitOccurrences, observationPeriods)
                               .ToArray();
            var deviceExposure = BuildDeviceExposure(DeviceExposureRaw.ToArray(), visitOccurrences, observationPeriods)
                                 .ToArray();

            Console.WriteLine($"PeronsId={person.PersonSourceValue};" +
                              $"cond={conditionOccurrences.Length};" +
                              $"drg={drugExposures.Length};" +
                              $"proc={procedureOccurrences.Length};" +
                              $"mes={measurements.Length};" +
                              $"obser={observations.Length};" +
                              $"dev={deviceExposure.Length};" +
                              $"vo={visitOccurrences.Values.Count};" +
                              $"vd={visitDetails.Length}");


            // set corresponding ProviderIds
            SetProviderIds(drugExposures);
            SetProviderIds(conditionOccurrences);
            SetProviderIds(visitOccurrences.Values.ToArray());
            SetProviderIds(procedureOccurrences);
            SetProviderIds(observations);
            SetProviderIds(visitDetails);

            SetVisitDetailId(drugExposures, visitOccurrences.Values.ToArray());
            SetVisitDetailId(conditionOccurrences, visitOccurrences.Values.ToArray());
            SetVisitDetailId(procedureOccurrences, visitOccurrences.Values.ToArray());
            SetVisitDetailId(measurements, visitOccurrences.Values.ToArray());
            SetVisitDetailId(observations, visitOccurrences.Values.ToArray());
            SetVisitDetailId(deviceExposure, visitOccurrences.Values.ToArray());

            // push built entities to ChunkBuilder for further save to CDM database
            AddToChunk(person, null,
                       observationPeriods,
                       new PayerPlanPeriod[0],
                       drugExposures,
                       conditionOccurrences,
                       procedureOccurrences,
                       observations,
                       measurements,
                       visitOccurrences.Values.ToArray(), visitDetails, new Cohort[0], deviceExposure, new Note[0]);

            Complete = true;

            return(Attrition.None);
        }