private CompoundResultReading <T> GetResultReading <T>(T reading, ReadingLabels label, int?readingForFinding, TestType type, ref string errorSummary)
        {
            try
            {
                var resultReading = new CompoundResultReading <T>
                {
                    Label         = label,
                    ReadingSource = ReadingSource.Automatic,
                    Reading       = reading
                };

                if (readingForFinding != null)
                {
                    resultReading.Finding = new StandardFinding <T>(_testResultService.GetCalculatedStandardFinding(readingForFinding, (int)type, (int)label));
                }

                return(resultReading);
            }
            catch (Exception ex)
            {
                string message = string.Format("Exception while extracting value for {0}. Message: {1} ", label.ToString(), ex.Message);
                _logger.Error(message);
                errorSummary += message;
            }

            return(null);
        }
        private CompoundResultReading <decimal?> CreateTestReadingforaDecimalValue(CustomerEventReadingEntity testReadingEntity, int readingId, List <StandardFindingTestReadingEntity> standardFindingTestReadingEntities, decimal?value)
        {
            StandardFindingTestReadingEntity standardFindingTestReading = null;

            if (testReadingEntity.StandardFindingTestReadingId != null)
            {
                standardFindingTestReading =
                    standardFindingTestReadingEntities.Find(standardFindingTestReadingEntity =>
                                                            (standardFindingTestReadingEntity.ReadingId == readingId) &&
                                                            (testReadingEntity.StandardFindingTestReadingId == standardFindingTestReadingEntity.StandardFindingTestReadingId)
                                                            );
            }

            var testReading = new CompoundResultReading <decimal?>(testReadingEntity.CustomerEventReadingId)
            {
                Label         = (ReadingLabels)readingId,
                Reading       = value,
                ReadingSource = testReadingEntity.IsManual
                                    ? ReadingSource.Manual
                                    : ReadingSource.Automatic,
                RecorderMetaData = new DataRecorderMetaData
                {
                    DataRecorderCreator  = new OrganizationRoleUser(testReadingEntity.CreatedByOrgRoleUserId),
                    DateCreated          = testReadingEntity.CreatedOn,
                    DataRecorderModifier = testReadingEntity.UpdatedByOrgRoleUserId.HasValue ? new OrganizationRoleUser(testReadingEntity.UpdatedByOrgRoleUserId.Value) : null,
                    DateModified         = testReadingEntity.UpdatedOn
                }
            };

            decimal testReadingValue = 0;
            var     allFindings      = new TestResultService().GetAllStandardFindings <decimal?>((int)TestType.Hemoglobin, readingId);

            if (testReadingEntity.Value != null && decimal.TryParse(testReadingEntity.Value, out testReadingValue))
            {
                var findings = (new TestResultService()).GetMultipleCalculatedStandardFinding(decimal.Round(testReadingValue, 1), (int)TestType.Hemoglobin, readingId);
                var finding  = findings.FirstOrDefault();

                if (findings.Count() == 1)
                {
                    testReading.Finding = new StandardFinding <decimal?>(Convert.ToInt64(testReadingEntity.StandardFindingTestReadingId == null ? finding : standardFindingTestReading.StandardFindingId));
                }
                else if (findings.Count() > 1)
                {
                    var avFindings = allFindings.FindAll(f => f.Label.ToLower().IndexOf(_toCheckFor) == 0);
                    finding             = findings.FirstOrDefault(f => avFindings.Select(av => av.Id).Contains(f));
                    testReading.Finding = new StandardFinding <decimal?>(Convert.ToInt64(testReadingEntity.StandardFindingTestReadingId == null ? finding : standardFindingTestReading.StandardFindingId));
                }
            }
            else if (testReadingEntity.StandardFindingTestReadingId != null)
            {
                testReading.Finding = new StandardFinding <decimal?>(standardFindingTestReading.StandardFindingId);
            }

            if (testReading.Finding != null)
            {
                testReading.Finding = allFindings.Find(standardFinding => standardFinding.Id == testReading.Finding.Id);
            }

            return(testReading);
        }
Exemple #3
0
        protected bool IsIncompleteReading <T>(CompoundResultReading <T> testResultReading)
        {
            if (testResultReading != null && testResultReading.Finding != null && testResultReading.Reading != null)
            {
                return(false);
            }

            return(true);
        }
Exemple #4
0
        private static CompoundResultReading <decimal?> CreateTestReadingforaDecimalValue(CustomerEventReadingEntity testReadingEntity, int readingId,
                                                                                          List <StandardFindingTestReadingEntity> standardFindingTestReadingEntities, decimal?value)
        {
            StandardFindingTestReadingEntity standardFindingTestReading = null;

            if (testReadingEntity.StandardFindingTestReadingId != null)
            {
                standardFindingTestReading = standardFindingTestReadingEntities.Find(standardFindingTestReadingEntity => (standardFindingTestReadingEntity.ReadingId == readingId) &&
                                                                                     (testReadingEntity.StandardFindingTestReadingId == standardFindingTestReadingEntity.StandardFindingTestReadingId));
            }

            var testReading = new CompoundResultReading <decimal?>(testReadingEntity.CustomerEventReadingId)
            {
                Label            = (ReadingLabels)readingId,
                Reading          = value,
                ReadingSource    = testReadingEntity.IsManual ? ReadingSource.Manual : ReadingSource.Automatic,
                RecorderMetaData = new DataRecorderMetaData
                {
                    DataRecorderCreator  = new OrganizationRoleUser(testReadingEntity.CreatedByOrgRoleUserId),
                    DateCreated          = testReadingEntity.CreatedOn,
                    DataRecorderModifier = testReadingEntity.UpdatedByOrgRoleUserId.HasValue ? new OrganizationRoleUser(testReadingEntity.UpdatedByOrgRoleUserId.Value) : null,
                    DateModified         = testReadingEntity.UpdatedOn
                }
            };


            if (value != null)
            {
                testReading.Finding = new StandardFinding <decimal?>(Convert.ToInt64(testReadingEntity.StandardFindingTestReadingId == null ? (new TestResultService()).GetCalculatedStandardFinding(decimal.Round(value.Value, 1), (int)TestType.Lipid, readingId) : standardFindingTestReading.StandardFindingId));
            }
            else if (testReadingEntity.StandardFindingTestReadingId != null)
            {
                testReading.Finding = new StandardFinding <decimal?>(standardFindingTestReading.StandardFindingId);
            }

            if (testReading.Finding != null)
            {
                testReading.Finding = new TestResultService().GetAllStandardFindings <decimal?>((int)TestType.Lipid, readingId).Find(standardFinding => standardFinding.Id == testReading.Finding.Id);
            }

            return(testReading);
        }
        private CompoundResultReading <string> GetResultReadingHdl(string reading, int?readingForFinding, long customerId, TestType type, ref string errorSummary)
        {
            try
            {
                var resultReading = new CompoundResultReading <string>
                {
                    Label         = ReadingLabels.HDL,
                    ReadingSource = ReadingSource.Automatic,
                    Reading       = reading
                };

                string gender   = string.Empty;
                var    customer = _customerRepository.GetCustomer(customerId);
                if (customer.Gender == Gender.Male)
                {
                    gender = Gender.Male.ToString();
                }
                else if (customer.Gender == Gender.Female)
                {
                    gender = Gender.Female.ToString();
                }

                if (readingForFinding != null && !string.IsNullOrEmpty(gender))
                {
                    var findings = _testResultService.GetAllStandardFindings <int?>((int)type, (int)ReadingLabels.HDL);

                    var specificFindings = findings.Where(x => x.Label.ToLower().StartsWith(gender.ToLower())).ToList();

                    resultReading.Finding = new StandardFinding <string>(_testResultService.GetCalculatedStandardFinding(readingForFinding, (int)type, (int)ReadingLabels.HDL, specificFindings));
                }

                return(resultReading);
            }
            catch (Exception ex)
            {
                string message = string.Format("Exception while extracting value for {0}. Message: {1} ", ReadingLabels.HDL, ex.Message);
                _logger.Error(message);
                errorSummary += message;
            }

            return(null);
        }
Exemple #6
0
        protected CompoundResultReading <T> SynchronizeResultReading <T>(CompoundResultReading <T> currentReading, CompoundResultReading <T> newReading, DataRecorderMetaData dataRecorderMetaData)
        {
            if (currentReading == null && newReading == null)
            {
                return(null);
            }

            if (currentReading == null)
            {
                if (newReading.Reading == null && newReading.Finding == null)
                {
                    newReading = null;
                }
                else
                {
                    newReading.RecorderMetaData = new DataRecorderMetaData
                    {
                        DataRecorderCreator = dataRecorderMetaData.DataRecorderCreator,
                        DateCreated         = dataRecorderMetaData.DateCreated
                    };
                }
                return(newReading);
            }

            if (newReading != null)
            {
                newReading.Id = currentReading.Id;
                if (currentReading.Reading.Equals(newReading.Reading))
                {
                    if (currentReading.Finding != null && newReading.Finding != null &&
                        currentReading.Finding.Id == newReading.Finding.Id)
                    {
                        return(currentReading);
                    }

                    if (currentReading.Finding == null && newReading.Finding == null)
                    {
                        return(currentReading);
                    }
                }

                if (currentReading.ReadingSource == ReadingSource.Manual && newReading.ReadingSource == ReadingSource.Automatic)
                {
                    return(currentReading);
                }

                if (newReading.ReadingSource == ReadingSource.Manual && newReading.Reading == null && newReading.Finding == null)
                {
                    return(null);
                }

                if (currentReading.ReadingSource == ReadingSource.Automatic && newReading.ReadingSource == ReadingSource.Automatic)
                {
                    if (newReading.Reading == null && currentReading.Reading != null)
                    {
                        return(currentReading);
                    }
                }

                newReading.RecorderMetaData = new DataRecorderMetaData
                {
                    DataRecorderCreator  = currentReading.RecorderMetaData.DataRecorderCreator,
                    DateCreated          = currentReading.RecorderMetaData.DateCreated,
                    DataRecorderModifier = dataRecorderMetaData.DataRecorderCreator,
                    DateModified         = dataRecorderMetaData.DateCreated
                };
            }
            else
            {
                if (currentReading.ReadingSource == ReadingSource.Manual && NewReadingSource == ReadingSource.Automatic)
                {
                    return(currentReading);
                }
            }

            return(newReading);
        }