public static List <PatientModelFront> Get_Patients_On_Tenant(ElasticParameterObject Parameter, SessionSecurityTicket securityTicket)
        {
            var TenantID   = securityTicket.TenantID.ToString();
            var serializer = new JsonNetSerializer();
            var connection = Elastic_Utils.ElsaticConnection();

            if (Elastic_Utils.IfIndexOrTypeExists(TenantID, connection) && Elastic_Utils.IfIndexOrTypeExists(TenantID + "/" + elasticType, connection))
            {
                string sort_by_second_key = "name";
                string sort_by_third_key  = "name";
                var    sortBY             = Parameter.sort_by;
                switch (Parameter.sort_by)
                {
                case "name":
                    sort_by_second_key = "name";
                    sort_by_third_key  = "birthday";
                    break;

                case "participation_consent":
                    Parameter.sort_by  = "name";
                    sort_by_second_key = "birthday";
                    sort_by_third_key  = "name";
                    break;

                case "last_first_op_doctor_name":
                    sort_by_second_key = "name";
                    sort_by_third_key  = "name";
                    break;

                case "last_first_ac_doctor_name":
                    sort_by_second_key = "name";
                    sort_by_third_key  = "name";
                    break;

                default:
                    sort_by_second_key = "name";
                    sort_by_third_key  = "birthday";
                    break;
                }

                var query = QueryBuilderPatients.BuildGetPatientsSearchAsYouTypeQueryTenant(Parameter.start_row_index, 100, Parameter.sort_by, Parameter.isAsc, Parameter.search_params, sort_by_second_key, sort_by_third_key);

                string searchCommand = Commands.Search(TenantID, elasticType).Pretty();
                string result        = connection.Post(searchCommand, query);

                var foundResults = serializer.ToSearchResult <Patient_Model>(result);
                return(foundResults.Documents.Select(item =>
                {
                    IFormatProvider culture = new System.Globalization.CultureInfo("de", true);
                    var patient = new PatientModelFront();

                    patient.birthday_string = item.birthday_string;
                    patient.birthday = DateTime.Parse(item.birthday_string, culture, System.Globalization.DateTimeStyles.AssumeLocal);
                    patient.health_insurance_provider = item.health_insurance_provider;
                    patient.id = item.id;
                    patient.insurance_id = item.insurance_id;
                    patient.insurance_status = item.insurance_status;
                    patient.name = item.name;
                    patient.sex = item.sex;
                    patient.last_first_ac_doctor_name = item.last_first_ac_doctor_name;
                    patient.last_first_op_doctor_name = item.last_first_op_doctor_name;
                    patient.ac_practice = item.ac_practice;
                    patient.practice = item.practice;

                    if (!item.has_participation_consent)
                    {
                        patient.participation_consent_status = "/";
                    }
                    else
                    {
                        var todaysDate = DateTime.Now.Date;
                        int startCompare = item.participation_consent_from.Date.CompareTo(todaysDate);
                        int endCompare = item.participation_consent_to == DateTime.MinValue ? 1 : item.participation_consent_to.Date.CompareTo(todaysDate);

                        if (startCompare <= 0 && endCompare >= 0)
                        {
                            patient.participation_consent_status = "aktualisiert";
                        }
                        else
                        {
                            patient.participation_consent_status = "abgelaufen";
                        }
                    }

                    switch (sortBY)
                    {
                    case "name":
                        patient.group_name = string.IsNullOrEmpty(item.name) ? "-" : item.name.Substring(0, 1).ToUpper();
                        break;

                    case "sex":
                        patient.group_name = string.IsNullOrEmpty(item.sex) ? "-" : item.sex;
                        break;

                    case "health_insurance_provider":
                        patient.group_name = string.IsNullOrEmpty(item.health_insurance_provider) ? "-" : item.health_insurance_provider;
                        break;

                    case "last_first_op_doctor_name":
                        patient.group_name = string.IsNullOrEmpty(item.last_first_op_doctor_name) ? "-" : item.last_first_op_doctor_name;
                        break;

                    case "last_first_ac_doctor_name":
                        patient.group_name = string.IsNullOrEmpty(item.last_first_ac_doctor_name) ? "-" : item.last_first_ac_doctor_name;
                        break;

                    case "participation_consent":
                        patient.group_name = string.IsNullOrEmpty(patient.participation_consent_status) ? "-" : patient.participation_consent_status;
                        break;
                    }

                    return patient;
                }).ToList());
            }

            return(new List <PatientModelFront>());
        }
        public static List <PatientModelFront> Get_PatientsList(ElasticParameterObject Parameter, string practice_id, IEnumerable <Guid> patientsIdsWithInvalidConsent, SessionSecurityTicket securityTicket)
        {
            List <PatientModelFront> patientList = new List <PatientModelFront>();
            var TenantID   = securityTicket.TenantID.ToString();
            var serializer = new JsonNetSerializer();
            var connection = Elastic_Utils.ElsaticConnection();

            if (Elastic_Utils.IfIndexOrTypeExists(TenantID, connection) && Elastic_Utils.IfIndexOrTypeExists(TenantID + "/" + elasticType, connection))
            {
                string sort_by_second_key = "name";
                string sort_by_third_key  = "name";

                switch (Parameter.sort_by)
                {
                case "name":
                    sort_by_second_key = "name";
                    sort_by_third_key  = "birthday";
                    break;

                case "participation_consent":
                    Parameter.sort_by  = "name";
                    sort_by_second_key = "name";
                    sort_by_third_key  = "birthday";
                    break;
                }

                string query    = String.Empty;
                var    hip_name = !String.IsNullOrEmpty(Parameter.hip_name) ? Parameter.hip_name.ToLower() : null;

                if (Parameter.page_size == 0)
                {
                    Parameter.page_size = 100;
                }

                var patient_ids_with_invalid_consent_array = Parameter.invalid_consent && patientsIdsWithInvalidConsent.Any() ? Array.ConvertAll(patientsIdsWithInvalidConsent.ToArray(), x => x.ToString()) : null;
                query = QueryBuilderPatients.BuildGetPatientsSearchAsYouTypeQuery(Parameter, Parameter.sort_by, practice_id, sort_by_second_key, sort_by_third_key, hip_name, patient_ids_with_invalid_consent_array);

                string searchCommand = Commands.Search(TenantID, elasticType).Pretty();
                string result        = connection.Post(searchCommand, query);

                var foundResults = serializer.ToSearchResult <Patient_Model>(result);
                foreach (var item in foundResults.Documents)
                {
                    IFormatProvider   culture = new System.Globalization.CultureInfo("de", true);
                    PatientModelFront patient = new PatientModelFront();
                    patient.birthday_string           = item.birthday_string;
                    patient.birthday                  = DateTime.Parse(item.birthday_string, culture, System.Globalization.DateTimeStyles.AssumeLocal);
                    patient.health_insurance_provider = item.health_insurance_provider;
                    patient.id                        = item.id;
                    patient.insurance_id              = item.insurance_id;
                    patient.insurance_status          = item.insurance_status;
                    patient.name                      = item.name;
                    patient.sex                       = item.sex;
                    patient.has_rejected_oct          = item.has_rejected_oct;
                    patient.originating_patient_id    = item.originating_patient_id;
                    patient.originating_practice_id   = item.originating_practice_id;
                    patient.originating_practice_name = item.originating_practice_name;
                    patient.external_id               = item.external_id;

                    switch (Parameter.sort_by)
                    {
                    case "name":
                        patient.group_name = string.IsNullOrEmpty(item.name) ? "-" : item.name.Substring(0, 1).ToUpper();
                        break;

                    case "sex":
                        patient.group_name = string.IsNullOrEmpty(item.sex) ? "-" : item.sex;
                        break;

                    case "health_insurance_provider":
                        patient.group_name = string.IsNullOrEmpty(item.health_insurance_provider) ? "-" : item.health_insurance_provider;
                        break;
                    }
                    patientList.Add(patient);
                }
            }

            return(patientList);
        }