コード例 #1
0
        private PatientsWithSpecificResponseData GetData(PatientsWithSpecificResponseParameters parameters)
        {
            var returnData = new PatientsWithSpecificResponseData();

            using (var connection = _connectionFactory.CreateConnection())
            {
                var reportDtos = connection.Query <PatientsWithSpecificResponseDto>(GetQuery(parameters)).ToList();
                if (!reportDtos.Any())
                {
                    return(null);
                }
                var data = reportDtos.Select(
                    reportDto => new PatientsWithSpecificResponseDataObject
                {
                    ResponseType          = reportDto.ResponseType,
                    IsCode                = reportDto.IsCode,
                    CodeValue             = reportDto.CodeValue,
                    Age                   = reportDto.PatientAge,
                    Gender                = reportDto.GenderCode.Substring(0, 1),
                    PatientName           = reportDto.PatientFirstName + " " + reportDto.PatientLastName,
                    AssessmentDate        = reportDto.LastModifiedTime.ToShortDateString(),
                    PatientKey            = reportDto.PatientKey,
                    AssessmentInstanceKey = reportDto.AssessmentInstanceKey,
                    AssessmentName        = _resourcesManager.GetResourceManagerByName(reportDto.AssessmentName).GetString("_" + reportDto.AssessmentCode),
                    ItemDefinitionCode    = reportDto.ItemDefinitionCode,
                    Question              = _resourcesManager.GetResourceManagerByName(reportDto.AssessmentName).GetString("_" + reportDto.ItemDefinitionCode),
                    Response              = GetResponseValue(reportDto)
                }).ToList();
                returnData.Data = data;
            }
            return(returnData);
        }
コード例 #2
0
        private string GetQuery(PatientsWithSpecificResponseParameters parameters)
        {
            var dateRangeWhere    = GetDateRange(parameters);
            var ageWhere          = GetAgeRange(parameters);
            var genderWhere       = GetGender(parameters);
            var responseValues    = GetResponseValues(parameters);
            var responseValuesInt = GetResponseValuesInt(parameters);

            if (responseValues.Length == 0)
            {
                responseValues    = responseValuesInt;
                responseValuesInt = string.Empty;
            }
            var union = string.Empty;

            if (responseValuesInt.Length > 0)
            {
                union = " UNION " + string.Format(Query, parameters.OrganizationKey, ageWhere, responseValuesInt, genderWhere, dateRangeWhere);
            }
            var finalQuery = string.Format(Query, parameters.OrganizationKey, ageWhere, genderWhere, responseValues, dateRangeWhere);

            if (responseValuesInt.Length > 0)
            {
                finalQuery += union;
            }
            var query = finalQuery + QueryOrder;

            _logger.Info("PatientsWithSpecificResponse Query: {0}", query);
            return(query);
        }
コード例 #3
0
        private bool HasAnyQuestions(PatientsWithSpecificResponseParameters parameters)
        {
            var responseValues    = GetResponseValues(parameters);
            var responseValuesInt = GetResponseValuesInt(parameters);

            return(responseValues.Length > 0 || responseValuesInt.Length > 0);
        }
コード例 #4
0
        private string GetResponseValues(PatientsWithSpecificResponseParameters parameters)
        {
            var responseValues = string.Empty;
            var or             = string.Empty;

            foreach (QuestionResponse qr in parameters.QuestionResponses)
            {
                switch (qr.InputType)
                {
                case "IntRange":
                    break;

                case "MultipleSelect":
                    responseValues += GetMultiselectQuery(qr, or);
                    or              = " OR ";
                    break;

                default:
                    responseValues += GetStringQuery(qr, or);
                    or              = " OR ";
                    break;
                }
            }
            if (responseValues.Length > 0)
            {
                responseValues = " AND (" + responseValues + ")";
            }
            return(responseValues);
        }
コード例 #5
0
        private List <QuestionResponse> GetQuestionResponsesFromResource(PatientsWithSpecificResponseParameters reportParams)
        {
            var returnResponses = reportParams.QuestionResponses;

            foreach (var response in returnResponses)
            {
                response.LocalizedResponses = new List <string> ();
                QuestionResponse response1 = response;
                foreach (var r in response.Responses.Where(r => response1.InputType == "MultipleSelect").ToList())
                {
                    var assessmentName = string.Empty;
                    var assessment     = GetAssessmentDefinitionForResponse(response.AssessmentDefinitionKey.ToString());
                    if (assessment != null)
                    {
                        assessmentName = assessment.AssessmentName;
                    }
                    response.LocalizedResponses.Add(_resourcesManager.GetResourceManagerByName(assessmentName).GetString("_" + r));
                }
                foreach (var r in response.Responses.Where(r => response1.InputType != "MultipleSelect").ToList())
                {
                    if (response1.InputType == "Height")
                    {
                        response.LocalizedResponses.Add(GetHeightString(r));
                    }
                    else
                    {
                        response.LocalizedResponses.Add(r);
                    }
                }
            }
            return(returnResponses);
        }
コード例 #6
0
        private string GetGender(PatientsWithSpecificResponseParameters parameters)
        {
            const string GenderWhereString = " PatientModule.Patient.GenderCode = '{0}'";
            var          genderWhere       = string.Empty;

            if (!string.IsNullOrWhiteSpace(parameters.Gender))
            {
                genderWhere = " AND " + string.Format(GenderWhereString, parameters.Gender);
            }
            return(genderWhere);
        }
コード例 #7
0
        private string GetAgeRange(PatientsWithSpecificResponseParameters parameters)
        {
            const string AgeWhereString = @" FLOOR((CAST (GetDate() AS INTEGER) - CAST(DateOfBirth AS INTEGER)) / 365.25) >= {0} 
										 AND FLOOR((CAST (GetDate() AS INTEGER) - CAST(DateOfBirth AS INTEGER)) / 365.25) <= {1}"                                        ;
            var          ageWhere       = string.Empty;

            if (parameters.AgeRangeLow != null && parameters.AgeRangeHigh != null)
            {
                ageWhere = " AND " + string.Format(AgeWhereString, parameters.AgeRangeLow, parameters.AgeRangeHigh);
            }
            return(ageWhere);
        }
コード例 #8
0
        private string GetDateRange(PatientsWithSpecificResponseParameters parameters)
        {
            const string DateRangeWhereString = " AND (LastModifiedTime >= '{0}' AND LastModifiedTime <= DATEADD(day,1, '{1}'))";
            var          startDate            = parameters.StartDate;
            var          endDate = parameters.EndDate;

            if (parameters.TimePeriod != null)
            {
                parameters.TimePeriod.GetRange(out startDate, out endDate);
            }
            return(string.Format(DateRangeWhereString, startDate.GetValueOrDefault().ToShortDateString(), endDate.GetValueOrDefault().ToShortDateString()));
        }
コード例 #9
0
        private string GetResponseValuesInt(PatientsWithSpecificResponseParameters parameters)
        {
            var responseValues = string.Empty;

            foreach (QuestionResponse qr in parameters.QuestionResponses)
            {
                switch (qr.InputType)
                {
                case "IntRange":
                    responseValues += GetIntRangeQuery(qr, string.Empty);
                    break;
                }
            }
            if (responseValues.Length > 0)
            {
                responseValues = " AND (" + responseValues + ")";
            }
            return(responseValues);
        }
コード例 #10
0
        private void SetStrings(PatientsWithSpecificResponseData data, PatientsWithSpecificResponseParameters reportParams, string reportName)
        {
            if (reportParams == null || data == null)
            {
                return;
            }

            var originalReportName = reportName;
            var start     = reportParams.StartDate;
            var end       = reportParams.EndDate;
            var dateRange = start.GetValueOrDefault().ToShortDateString() + " - " + end.GetValueOrDefault().ToShortDateString();

            if (reportParams.TimePeriod != null)
            {
                reportParams.TimePeriod.GetRange(out start, out end);
                dateRange = reportParams.TimePeriod.DisplayName;
            }
            data.StartDate = start;
            data.EndDate   = end;
            reportName     = ReportNames.PatientsWithSpecificResponse;
            var ageRange = _resourcesManager.GetResourceManagerByName(reportName).GetString("NA");

            if (reportParams.AgeRangeLow != null && reportParams.AgeRangeHigh != null)
            {
                ageRange = reportParams.AgeRangeLow + " - " + reportParams.AgeRangeHigh;
            }
            var gender = _resourcesManager.GetResourceManagerByName(reportName).GetString("NA");

            if (!string.IsNullOrWhiteSpace(reportParams.Gender))
            {
                gender = reportParams.Gender;
            }
            var assessment = _resourcesManager.GetResourceManagerByName(reportName).GetString("All");

            if (!string.IsNullOrWhiteSpace(reportParams.AssessmentName))
            {
                assessment = GetAssessmentNames(data);
            }
            data.AssessmentParameter    = _resourcesManager.GetResourceManagerByName(reportName).GetString("Assessment") + ": " + assessment;
            data.DateRangeParameter     = _resourcesManager.GetResourceManagerByName(reportName).GetString("DateRange") + ": " + dateRange;
            data.AgeGroupParameter      = _resourcesManager.GetResourceManagerByName(reportName).GetString("AgeGroup") + ": " + ageRange;
            data.GenderParameter        = _resourcesManager.GetResourceManagerByName(reportName).GetString("Gender") + ": " + gender;
            data.TotalQuestionsForQuery = _resourcesManager.GetResourceManagerByName(reportName).GetString("TotalQuestionsForQuery") +
                                          ": " + data.Data.GroupBy(a => a.ItemDefinitionCode).Select(group => group.First()).Count();
            data.TotalNumberOfSpecifiedResults = _resourcesManager.GetResourceManagerByName(reportName).GetString("TotalNumberOfSpecificResults") +
                                                 ": " + data.Data.Count();
            data.TotalNumberOfPatients = _resourcesManager.GetResourceManagerByName(reportName).GetString("TotalNumberOfPatients") +
                                         ": " + data.Data.GroupBy(a => a.PatientKey).Select(group => group.First()).Count();
            data.TotalNumberOfAssessmentsDuringTimeFrame =
                _resourcesManager.GetResourceManagerByName(reportName).GetString("TotalNumberOfAssessmentsDuringTimeFrame") +
                ": " + GetTotalNumberOfAssessmentsDuringTimePeriod(data.StartDate, data.EndDate);
            data.LocalizedQuestionResponses = GetQuestionResponsesFromResource(reportParams);

            data.ReportName = _resourcesManager.GetResourceManagerByName(reportName).GetString("ReportName" + originalReportName);

            data.HeaderQuestion = _resourcesManager.GetResourceManagerByName(reportName).GetString("HeaderQuestion");
            data.HeaderSpecificResponseValue = _resourcesManager.GetResourceManagerByName(reportName).GetString("HeaderSpecificResponse");
            data.HeaderName           = _resourcesManager.GetResourceManagerByName(reportName).GetString("HeaderName");
            data.HeaderAge            = _resourcesManager.GetResourceManagerByName(reportName).GetString("HeaderAge");
            data.HeaderGender         = _resourcesManager.GetResourceManagerByName(reportName).GetString("HeaderGender");
            data.HeaderAssessmentName = _resourcesManager.GetResourceManagerByName(reportName).GetString("HeaderAssessmentName");
            data.HeaderAssessmentDate = _resourcesManager.GetResourceManagerByName(reportName).GetString("AssessmentDate");
            data.HeaderGivenResponse  = _resourcesManager.GetResourceManagerByName(reportName).GetString("GivenResponse");
            data.HeaderViewAssessment = _resourcesManager.GetResourceManagerByName(reportName).GetString("HeaderViewAssessment");
        }