public static long GetSubmittedCasesCount(ElasticParameterObject parameter, SessionSecurityTicket securityTicket)
        {
            var connection = Elastic_Utils.ElsaticConnection();
            var serializer = new JsonNetSerializer();
            var result     = serializer.ToCountResult(connection.Post(Commands.Count(securityTicket.TenantID.ToString(), "submitted_case"), QueryBuilderCase.BuildGetSubmittedCasesCountQuery(parameter.search_params, parameter.filter_by, parameter.date_from, parameter.date_to, null, "")).Result);

            return(result.count);
        }
Beispiel #2
0
        public static void FixGPOS(string connectionString, SessionSecurityTicket securityTicket)
        {
            var Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(connectionString);

            Connection.Open();

            var Transaction = Connection.BeginTransaction();

            try
            {
                #region ALL LANGUAGES
                ORM_CMN_Language.Query all_languagesQ = new ORM_CMN_Language.Query();
                all_languagesQ.Tenant_RefID = securityTicket.TenantID;
                all_languagesQ.IsDeleted    = false;

                var all_languagesL = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray();
                #endregion
                var case_ids = ORM_HEC_CAS_Case.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case.Query()
                {
                    Tenant_RefID = securityTicket.TenantID
                }).Where(cas => int.Parse(cas.CaseNumber) >= 10000).Select(cas => cas.HEC_CAS_CaseID).ToArray();
                int i = 1;
                foreach (var case_id in case_ids)
                {
                    var case_details = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435()
                    {
                        CaseID = case_id
                    }, securityTicket).Result;
                    if (case_details != null)
                    {
                        cls_Update_Case_GPOS.Invoke(Connection, Transaction, new P_CAS_UCGPOS_1516()
                        {
                            all_languagesL = all_languagesL,
                            case_id        = case_id,
                            diagnose_id    = case_details.diagnose_id,
                            drug_id        = case_details.drug_id,
                            localization   = case_details.localization,
                            patient_id     = case_details.patient_id
                        }, securityTicket);
                    }
                    Console.Write("\rCase {0} of {1} GPOS updated.                ", i++, case_ids.Length);
                }

                Transaction.Commit();
                Connection.Close();

                Console.WriteLine();
            }
            catch (Exception ex)
            {
                Transaction.Rollback();
                Connection.Close();

                throw new Exception("Something went wrong during GPOS fixing", ex);
            }
        }
Beispiel #3
0
        protected static void Ticket_SetParameter(MySqlCommand command, string name, SessionSecurityTicket value)
        {
            if (value == null)
            {
                return;
            }

            Guid_SetParameter(command, "TenantID", value.TenantID);
            Guid_SetParameter(command, "AccountID", value.AccountID);
        }
Beispiel #4
0
        /// <summary>
        /// Delete patient details entry on elastic
        /// </summary>
        /// <param name="id"></param>
        /// <param name="securityTicket"></param>
        public static void Delete_PatientDetail(string id, SessionSecurityTicket securityTicket)
        {
            var    TenantID    = securityTicket.TenantID.ToString();
            var    connection  = Elastic_Utils.ElsaticConnection();
            string elasticType = "patient_details";

            if (!string.IsNullOrEmpty(id))
            {
                var command = Commands.Delete(TenantID, elasticType, id);
                connection.Delete(command);
            }
        }
Beispiel #5
0
        public static long GetNonViewedRecepiptsCount(string doctor_id, SessionSecurityTicket securityTicket)
        {
            var serializer = new JsonNetSerializer();
            var connection = Elastic_Utils.ElsaticConnection();

            if (Elastic_Utils.IfIndexOrTypeExists(securityTicket.TenantID.ToString(), connection) && Elastic_Utils.IfIndexOrTypeExists(securityTicket.TenantID.ToString() + "/" + elasticType, connection))
            {
                string result = connection.Post(Commands.Count(securityTicket.TenantID.ToString(), elasticType), QueryBuilderReceipts.BuildGetNonViewedReceiptsQuery(doctor_id));
                return(serializer.ToCountResult(result).count);
            }

            return(0);
        }
Beispiel #6
0
 public UserObject(string agent, string ip, string connectionString = null, SessionSecurityTicket securityTicket = null)
 {
     this.IP      = ip;
     this.Browser = agent;
     if (connectionString != null && securityTicket != null)
     {
         this.Username = ORM_USR_Account.Query.Search(connectionString, new ORM_USR_Account.Query()
         {
             Tenant_RefID  = securityTicket.TenantID,
             USR_AccountID = securityTicket.AccountID,
             IsDeleted     = false
         }).Single().AccountSignInEmailAddress;
     }
 }
Beispiel #7
0
        public static List <Receipt_Model> Get_Receipt_Items(SessionSecurityTicket userSecurityTicket)
        {
            var TenantID   = userSecurityTicket.TenantID.ToString();
            var serializer = new JsonNetSerializer();
            var connection = Elastic_Utils.ElsaticConnection();

            List <Receipt_Model> receipts = new List <Receipt_Model>();
            string searchCommand_Receipts = Commands.Search(TenantID, elasticType).Pretty();
            var    queryS = QueryBuilderReceipts.BuildGetReceiptsQuery();
            string result = connection.Post(searchCommand_Receipts, queryS);
            var    foundResults_Receipts = serializer.ToSearchResult <Receipt_Model>(result);

            return(foundResults_Receipts.Documents.ToList());
        }
        public static SessionSecurityTicket getSessionSecurityTicket(Session session)
        {
            if (session == null)
            {
                throw new SessionTokenInfoException("SessionTokenInfo doesn't exist on Session!");
            }

            SessionSecurityTicket ticket = new SessionSecurityTicket();

            ticket.AccountID     = session.AccountID;
            ticket.TenantID      = session.TenantID;
            ticket.SessionTicket = session.SessionToken;

            return(ticket);
        }
        public static long Get_Doctors_Count(string practice_id, SessionSecurityTicket userSecurityTicket)
        {
            var query = new QueryBuilder <Practice_Doctors_Model>()
                        .Query(q => q
                               .Bool(b => b
                                     .Must(must => must.Terms(t => t.Field(f1 => f1.type).Values("doctor").MinimumMatch(1))
                                           .Terms(t1 => t1.Field(f => f.practice_for_doctor_id).Values(practice_id).MinimumMatch(1))
                                           )));

            var connection = Elastic_Utils.ElsaticConnection();
            var serializer = new JsonNetSerializer();
            var result     = serializer.ToCountResult(connection.Post(Commands.Count(userSecurityTicket.TenantID.ToString(), "user"), query.BuildBeautified()).Result);

            return(result.count);
        }
Beispiel #10
0
        public static Settlement_Model GetSettlementForID(string settlement_id, SessionSecurityTicket securityTicket)
        {
            try
            {
                var    connection    = Elastic_Utils.ElsaticConnection();
                var    serializer    = new JsonNetSerializer();
                string searchCommand = Commands.Index(index: securityTicket.TenantID.ToString(), type: elasticType, id: settlement_id);

                return(serializer.ToGetResult <Settlement_Model>(connection.Get(searchCommand).Result).Document);
            }
            catch
            {
                return(null);
            }
        }
Beispiel #11
0
        public static PatientDetailViewModel Get_PatientDetaiForID(string id, SessionSecurityTicket securityTicket)
        {
            var TenantID    = securityTicket.TenantID.ToString();
            var serializer  = new JsonNetSerializer();
            var connection  = Elastic_Utils.ElsaticConnection();
            var elasticType = "patient_details";

            var query = QueryBuilderPatients.BuildGetPatientDetailQuery(id);

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

            var foundResults = serializer.ToSearchResult <PatientDetailViewModel>(result);

            return(foundResults.Documents.SingleOrDefault());
        }
Beispiel #12
0
        public static List <Bic_Iban_Codes> CheckBicBank(Bic_Parameter BicParametar, SessionSecurityTicket securityTicket)
        {
            //  var TenantID = securityTicket.TenantID.ToString();

            var    serializer  = new JsonNetSerializer();
            var    connection  = Elastic_Utils.ElsaticConnection();
            string queryS      = string.Empty;
            string elasticType = "iban_bic";
            var    index       = "validation";
            List <Bic_Iban_Codes> modelBicIBanL = new List <Bic_Iban_Codes>();


            if (Elastic_Utils.IfIndexOrTypeExists(index, connection) && Elastic_Utils.IfIndexOrTypeExists(index + "/" + elasticType, connection))
            {
                var query = new QueryBuilder <Bic_Iban_Codes>()
                            .From(0)
                            .Size(100)
                            .Query(q => q
                                   .Bool(b => b
                                         .Should(sh => sh
                                                 .Match(m => m
                                                        .Field("bic")
                                                        .Query(BicParametar.Bic).Operator(PlainElastic.Net.Operator.AND)
                                                        )
                                                 )
                                         ));


                queryS = query.BuildBeautified();

                string searchCommand_Doctors_PracticeID = Commands.Search(index, elasticType).Pretty();
                string result = connection.Post(searchCommand_Doctors_PracticeID, queryS);

                var foundResults_Doctors = serializer.ToSearchResult <Bic_Iban_Codes>(result);
                foreach (var item in foundResults_Doctors.Documents)
                {
                    Bic_Iban_Codes modelBicIBan = new Bic_Iban_Codes();
                    modelBicIBan.BankName = item.BankName;
                    modelBicIBan.bic      = item.bic;
                    modelBicIBan.IbanPar  = item.IbanPar;
                    modelBicIBanL.Add(modelBicIBan);
                }
            }
            return(modelBicIBanL);
        }
Beispiel #13
0
        public static Patient_Model Get_Patient_for_PatientID(string patient_id, SessionSecurityTicket securityTicket)
        {
            Patient_Model patient    = new Patient_Model();
            var           TenantID   = securityTicket.TenantID.ToString();
            var           serializer = new JsonNetSerializer();
            var           connection = Elastic_Utils.ElsaticConnection();

            string query = QueryBuilderPatients.BuildGetPatientQuery(patient_id);

            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)
            {
                patient = item;
            }
            return(patient);
        }
        public static List <Practice_Doctors_Model> GetTemporaryDoctors(SessionSecurityTicket userSecurityTicket)
        { //opdoc tenant
            var    TenantID   = userSecurityTicket.TenantID.ToString();
            var    serializer = new JsonNetSerializer();
            var    connection = Elastic_Utils.ElsaticConnection();
            string queryS     = string.Empty;

            var query = new QueryBuilder <Practice_Doctors_Model>()
                        .From(0)
                        .Size(int.MaxValue).Query(q => q.Filtered(f => f.Filter(flt => flt.Bool(b => b.Must(m => m.Term(t => t.Field(type => type.type)
                                                                                                                        .Value("doctor"))
                                                                                                            .Term(term2 => term2.Field(id => id.account_status)
                                                                                                                  .Value("temp")))))));

            queryS = query.BuildBeautified();

            string searchCommand_Doctors_PracticeID = Commands.Search(TenantID, "user").Pretty();
            string result = connection.Post(searchCommand_Doctors_PracticeID, queryS);

            var foundResults_Doctors = serializer.ToSearchResult <Practice_Doctors_Model>(result);

            return(foundResults_Doctors.Documents.ToList());
        }
Beispiel #15
0
        public static long GetNumberOfFSCasesInDoctorsPractice(string practice_id, string status, SessionSecurityTicket securityTicket)
        {
            var serializer = new JsonNetSerializer();
            var connection = Elastic_Utils.ElsaticConnection();

            if (Elastic_Utils.IfIndexOrTypeExists(securityTicket.TenantID.ToString(), connection) && Elastic_Utils.IfIndexOrTypeExists(securityTicket.TenantID.ToString() + "/" + elasticType, connection))
            {
                string result = connection.Post(Commands.Count(securityTicket.TenantID.ToString(), elasticType), QueryBuilderSettlement.BuildGetNumberOfFSCasesInDoctorsPractice(practice_id, status));
                return(serializer.ToCountResult(result).count);
            }

            return(0);
        }
Beispiel #16
0
        ///<summary>
        /// Save Product Code Type for current Tenant (from SessionSecurityTicket)
        ///<summary>
        private static Guid Save_ProductCodeTypeForTenant(DbConnection Connection, DbTransaction Transaction, String contactType, SessionSecurityTicket securityTicket)
        {
            var allProductCodeTypes = EnumUtils.GetAllEnumTypeDescriptionPairs <EProductCodeType>();
            var enumType            = allProductCodeTypes[contactType];

            string globalPropertyMatchingID = GetEnumDescription(enumType);

            #region Dict_Label

            #region Get Languages

            P_L2LN_GALFTID_1530 param = new P_L2LN_GALFTID_1530();
            param.Tenant_RefID = securityTicket.TenantID;
            var DBLanguages = cls_Get_All_Languages_ForTenantID.Invoke(Connection, Transaction, param, securityTicket).Result;

            var languages = DBLanguages.Select(i => new ISOLanguage()
            {
                ISO = i.ISO_639_1, LanguageID = i.CMN_LanguageID
            }).ToList();

            #endregion

            Assembly      asm      = Assembly.GetExecutingAssembly();
            XmlDocument   resource = new XmlDocument();
            XmlTextReader reader   = new XmlTextReader(asm.GetManifestResourceStream(DMProductCodeTypes.ResourceFilePath));
            resource.Load(reader);

            var PCTEnums = DMProductCodeTypes.Get_PredefinedProductCodeTypes(Connection, Transaction, securityTicket);

            var dict = DBCommonsReader.Instance.GetDictObjectsFromResourceFile(PCTEnums, resource,
                                                                               ORM_CMN_PRO_ProductCode_Type.TableName, languages);

            #endregion

            ORM_CMN_PRO_ProductCode_Type ORMContactType = new ORM_CMN_PRO_ProductCode_Type();
            ORMContactType.CMN_PRO_ProductCode_TypeID = Guid.NewGuid();
            ORMContactType.GlobalPropertyMatchingID   = globalPropertyMatchingID;
            ORMContactType.ProductCode_TypeName       = dict[globalPropertyMatchingID].Contents.FirstOrDefault().Content;
            ORMContactType.Creation_Timestamp         = DateTime.Now;
            ORMContactType.Tenant_RefID = securityTicket.TenantID;
            ORMContactType.Save(Connection, Transaction);

            return(ORMContactType.CMN_PRO_ProductCode_TypeID);
        }
Beispiel #17
0
        ///<summary>
        /// Get Product Code Type for current Tenant from DB or create it if there is no entry
        ///<summary>
        public static Guid Get_ProductCodeType_ByGlobalMatchingID(DbConnection Connection, DbTransaction Transaction, EProductCodeType type, SessionSecurityTicket securityTicket)
        {
            string globalPropertyMatchingID = GetEnumDescription(type);

            var query = new ORM_CMN_PRO_ProductCode_Type.Query();

            query.GlobalPropertyMatchingID = globalPropertyMatchingID;
            query.IsDeleted    = false;
            query.Tenant_RefID = securityTicket.TenantID;

            var result = ORM_CMN_PRO_ProductCode_Type.Query.Search(Connection, Transaction, query);

            if (result == null || result.Count() == 0)
            {
                return(Save_ProductCodeTypeForTenant(Connection, Transaction, globalPropertyMatchingID, securityTicket));
            }

            if (result.Count() == 1)
            {
                return(result.First().CMN_PRO_ProductCode_TypeID);
            }
            else
            {
                throw new Exception("Multiple ComunicationContactTypes with same \"type\" field are defined in the database!");
            }
        }
Beispiel #18
0
        ///<summary>
        /// Get all Product Code Types enum strings
        ///<summary>
        public static List <String> Get_PredefinedProductCodeTypes(DbConnection Connection, DbTransaction Transaction, SessionSecurityTicket securityTicket)
        {
            var enumValues = Enum.GetValues(typeof(EProductCodeType)).Cast <EProductCodeType>();

            var contactTypes = enumValues.Select(i => GetEnumDescription(i)).ToList();

            return(contactTypes);
        }
Beispiel #19
0
        ///<summary>
        /// Save Patient Parameter Types for current Tenant (from SessionSecurityTicket)
        ///<summary>
        private static Guid Save_PatientParameterTypesForTenant(DbConnection Connection, DbTransaction Transaction, String Type, SessionSecurityTicket securityTicket)
        {
            var allContactTypes = EnumUtils.GetAllEnumTypeDescriptionPairs <EPatientParameterTypes>();
            var enumType        = allContactTypes[Type];

            string description = GetEnumDescription(enumType);

            ORM_HEC_Patient_ParameterType ORMPatientParameterType = new ORM_HEC_Patient_ParameterType();

            ORMPatientParameterType.HEC_Patient_ParameterTypeID = Guid.NewGuid();
            ORMPatientParameterType.GlobalPropertyMatchingID    = description;
            ORMPatientParameterType.Creation_Timestamp          = DateTime.Now;
            ORMPatientParameterType.Tenant_RefID = securityTicket.TenantID;
            ORMPatientParameterType.Save(Connection, Transaction);

            Guid ParameterTypeGroupID = new Guid();

            ///<summary>
            /// Save Patient Parameter Types2Patient Parameter TypeGroups for current Tenant (from SessionSecurityTicket)
            ///<summary>
            switch (Type)
            {
            case "myhealtclub.gpapp.pulse-volume":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.heartrate", securityTicket);
                break;

            case "myhealtclub.gpapp.pulse-rhytm":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.heartrate", securityTicket);
                break;

            case "myhealtclub.gpapp.pulse-frequency":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.heartrate", securityTicket);
                break;

            case "myhealtclub.gpapp.preasure-sys":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.preasure", securityTicket);
                break;

            case "myhealtclub.gpapp.preasure-dia":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.preasure", securityTicket);
                break;

            case "myhealtclub.gpapp.body-temp":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.temperature", securityTicket);
                break;

            case "myhealtclub.gpapp.bmi-height":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.bmi", securityTicket);
                break;

            case "myhealtclub.gpapp.bmi-weight":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.bmi", securityTicket);
                break;

            case "myhealtclub.gpapp.oxygen-saturation":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.oxygen-saturation", securityTicket);
                break;

            case "myhealtclub.gpapp.respiration":
                ParameterTypeGroupID = CL2_PatientParameters.DomainManagement.DMPatientParameterTypeGroups.Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(Connection, Transaction, "myhealtclub.gpapp.group.respiration", securityTicket);
                break;
            }
            ORM_HEC_Patient_ParameterType_2_ParameterTypeGroup partype2pargroup = new ORM_HEC_Patient_ParameterType_2_ParameterTypeGroup();

            partype2pargroup.AssignmentID = Guid.NewGuid();
            partype2pargroup.Tenant_RefID = securityTicket.TenantID;
            partype2pargroup.HEC_Patient_ParameterType_Group_RefID = ParameterTypeGroupID;
            partype2pargroup.HEC_Patient_ParameterType_RefID       = ORMPatientParameterType.HEC_Patient_ParameterTypeID;
            partype2pargroup.Save(Connection, Transaction);

            return(ORMPatientParameterType.HEC_Patient_ParameterTypeID);
        }
Beispiel #20
0
        public static List <Aftercare_Model> GetAftercaresForIDArray(Guid practice_id, bool is_practice, string[] case_ids, bool is_submit,
                                                                     string authorizing_doctor_id, string sort_by, bool isAsc, SessionSecurityTicket securityTicket)
        {
            var    TenantID    = securityTicket.TenantID.ToString();
            var    serializer  = new JsonNetSerializer();
            var    connection  = Elastic_Utils.ElsaticConnection();
            string queryS      = string.Empty;
            string elasticType = "aftercare";

            List <Aftercare_Model> case_list = new List <Aftercare_Model>();

            if (Elastic_Utils.IfIndexOrTypeExists(TenantID, connection) && Elastic_Utils.IfIndexOrTypeExists(TenantID + "/" + elasticType, connection))
            {
                queryS = QueryBuilderCase.BuildGetAftercaresinIDArrayQuery(practice_id.ToString(), case_ids, int.MaxValue, is_submit, authorizing_doctor_id, sort_by, isAsc);
                string searchCommand_Cases = Commands.Search(TenantID, elasticType).Pretty();
                string result = connection.Post(searchCommand_Cases, queryS);
                Dictionary <string, int> PracticeDoctorsCount = new Dictionary <string, int>();
                case_list = serializer.ToSearchResult <Aftercare_Model>(result).Documents.ToList();
            }

            return(case_list);
        }
Beispiel #21
0
        public static IEnumerable <Aftercare_Model> GetAllAftercaresforPracticeID(String practice_id, bool is_practice, ElasticParameterObject sort_parameter, SessionSecurityTicket securityTicket, List <AftercareHipParameter> rangeParameters)
        {
            var    TenantID    = securityTicket.TenantID.ToString();
            var    serializer  = new JsonNetSerializer();
            var    connection  = Elastic_Utils.ElsaticConnection();
            string queryS      = string.Empty;
            string elasticType = "aftercare";

            if (Elastic_Utils.IfIndexOrTypeExists(TenantID, connection) && Elastic_Utils.IfIndexOrTypeExists(TenantID + "/" + elasticType, connection))
            {
                var sort_by_second_key = "treatment_date";
                var sort_by_third_key  = "patient_name";

                switch (sort_parameter.sort_by)
                {
                case "treatment_date":
                    sort_by_second_key = "patient_name";
                    sort_by_third_key  = "patient_birthdate";
                    break;

                case "patient_name":
                    sort_by_second_key = "patient_birthdate";
                    sort_by_third_key  = "treatment_date";
                    break;
                }

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

                var hip_name = !String.IsNullOrEmpty(sort_parameter.hip_name) ? sort_parameter.hip_name.ToLower() : null;

                var query = QueryBuilderCase.BuildGetAftercaresQuery(sort_parameter.start_row_index,
                                                                     sort_parameter.page_size,
                                                                     sort_parameter.sort_by,
                                                                     sort_parameter.search_params,
                                                                     sort_parameter.isAsc,
                                                                     practice_id,
                                                                     sort_by_second_key,
                                                                     sort_by_third_key,
                                                                     sort_parameter.filter_by,
                                                                     rangeParameters,
                                                                     hip_name);

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

                var foundResults_Aftercares = serializer.ToSearchResult <Aftercare_Model>(result);

                var aftercares = foundResults_Aftercares.Documents.Select(item =>
                {
                    switch (sort_parameter.sort_by)
                    {
                    case "treatment_date": item.group_name = item.treatment_date_month_year.ToUpper(); break;

                    case "patient_name": item.group_name = item.patient_name.Substring(0, 1).ToUpper(); break;

                    case "diagnose": item.group_name = item.diagnose; break;

                    case "localization": item.group_name = item.localization; break;

                    case "treatment_doctor_name": item.group_name = item.treatment_doctor_name; break;

                    case "aftercare_doctor_name": item.group_name = item.aftercare_doctor_name; break;

                    case "status": item.group_name = item.status; break;

                    default: item.group_name = item.treatment_date_month_year; break;
                    }

                    item.treatment_date_day_month = item.treatment_date.ToString("dd.MM.yyyy");

                    return(item);
                });

                return(aftercares);
            }

            return(Enumerable.Empty <Aftercare_Model>());
        }
        ///<summary>
        /// Save Patient Parameter Types Group  for current Tenant (from SessionSecurityTicket)
        ///<summary>
        private static Guid Save_PatientParameterTypeGroupForTenant(DbConnection Connection, DbTransaction Transaction, String groupType, SessionSecurityTicket securityTicket)
        {
            var allContactTypes = EnumUtils.GetAllEnumTypeDescriptionPairs <EPatientParameterTypeGroup>();
            var enumType        = allContactTypes[groupType];

            string description = GetEnumDescription(enumType);

            ORM_HEC_Patient_ParameterType_Group ORMPatientParameterTypeGroup = new ORM_HEC_Patient_ParameterType_Group();

            ORMPatientParameterTypeGroup.HEC_Patient_ParameterType_GroupID = Guid.NewGuid();
            ORMPatientParameterTypeGroup.GlobalPropertyMatchingID          = description;
            ORMPatientParameterTypeGroup.Creation_Timestamp = DateTime.Now;
            ORMPatientParameterTypeGroup.Tenant_RefID       = securityTicket.TenantID;
            ORMPatientParameterTypeGroup.Save(Connection, Transaction);

            return(ORMPatientParameterTypeGroup.HEC_Patient_ParameterType_GroupID);
        }
        ///<summary>
        /// Get all Patient Parameter Types Group enum strings
        ///<summary>
        public static List <PredefinedPatientParameterTypeGroup> Get_PredefinedPatientParameterTypeGroup(DbConnection Connection, DbTransaction Transaction, SessionSecurityTicket securityTicket)
        {
            var enumValues = Enum.GetValues(typeof(EPatientParameterTypeGroup)).Cast <EPatientParameterTypeGroup>();

            var contactTypes = enumValues.Select(i =>
                                                 new PredefinedPatientParameterTypeGroup()
            {
                Type = i, GlobalPropertyMatchingID = GetEnumDescription(i)
            }).ToList();

            return(contactTypes);
        }
Beispiel #24
0
        public static IEnumerable <Settlement_Model> Get_Settlement_items(ElasticParameterObject sort_parameter, string practice_id, SessionSecurityTicket securityTicket, List <AftercareHipParameter> rangeParameters = null)
        {
            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))
            {
                var sort_by_second_key = "";
                var sort_by_third_key  = "";
                var sort_by_fourth_key = "first_name.lower_case_sort";
                var sort_first         = "";
                switch (sort_parameter.sort_by)
                {
                case "surgery_date":
                    sort_by_second_key = "last_name.lower_case_sort";
                    sort_by_third_key  = "first_name.lower_case_sort";
                    break;

                case "patient_name":
                    sort_first         = "last_name.lower_case_sort";
                    sort_by_second_key = "first_name.lower_case_sort";
                    sort_by_third_key  = "birthday";
                    sort_by_fourth_key = "surgery_date";
                    break;

                default:
                    sort_by_second_key = "surgery_date";
                    sort_by_third_key  = "last_name.lower_case_sort";
                    break;
                }

                if (sort_parameter.sort_by == "status")
                {
                    sort_parameter.sort_by = "status.lower_case_sort";
                }

                var queryS = QueryBuilderSettlement.BuildGetSettlementQuery(
                    start_row_index: sort_parameter.start_row_index,
                    page_size: sort_parameter.page_size,
                    sort_by: !String.IsNullOrEmpty(sort_first) ? sort_first : sort_parameter.sort_by,
                    search_params: sort_parameter.search_params,
                    isAsc: sort_parameter.isAsc,
                    practice_id: practice_id,
                    sort_by_second_key: sort_by_second_key,
                    sort_by_third_key: sort_by_third_key,
                    sort_by_fourth_key: sort_by_fourth_key,
                    filter_by: sort_parameter.filter_by,
                    deselected_ids: sort_parameter.deselected_ids != null && sort_parameter.deselected_ids.Any() ? Array.ConvertAll(sort_parameter.deselected_ids.ToArray(), t => t.ToString()) : null,
                    rangeParameters: rangeParameters,
                    hip_name: sort_parameter.hip_name);

                string searchCommand_Settlement = Commands.Search(TenantID, elasticType).Pretty();
                string result = connection.Post(searchCommand_Settlement, queryS);
                var    foundResults_Settlement = serializer.ToSearchResult <Settlement_Model>(result);

                return(foundResults_Settlement.Documents.Select(item =>
                {
                    switch (sort_parameter.sort_by)
                    {
                    case "surgery_date": item.group_name = item.surgery_date.ToString("MMMM yyyy", new System.Globalization.CultureInfo("de", true)).ToUpper(); break;

                    case "patient_name": item.group_name = item.last_name.Substring(0, 1).ToUpper(); break;

                    case "case_type": item.group_name = item.case_type; break;

                    case "diagnose": item.group_name = item.diagnose; break;

                    case "localization": item.group_name = item.localization; break;

                    case "doctor": item.group_name = item.doctor; break;

                    case "status.lower_case_sort": item.group_name = item.status; break;

                    default: item.group_name = item.surgery_date.ToString("MMMM yyyy", new System.Globalization.CultureInfo("de", true)).ToUpper(); break;
                    }

                    item.is_submit_button_visible = item.status == "FS6";
                    item.is_cancel_button_visible = item.status != "FS8";

                    item.surgery_date_string = item.surgery_date.ToString("dd.MM.yyyy");

                    return item;
                }));
            }

            return(new List <Settlement_Model>());
        }
Beispiel #25
0
        public static IEnumerable <Settlement_Model> GetAllSettlementsEligibleForSubmissionReport(Guid practice_id, SessionSecurityTicket securityTicket, string[] case_ids = null)
        {
            var    TenantID   = securityTicket.TenantID.ToString();
            var    serializer = new JsonNetSerializer();
            var    connection = Elastic_Utils.ElsaticConnection();
            string queryS     = string.Empty;

            if (Elastic_Utils.IfIndexOrTypeExists(TenantID, connection) && Elastic_Utils.IfIndexOrTypeExists(TenantID + "/" + elasticType, connection))
            {
                queryS = QueryBuilderSettlement.BuildGetSettlementEligibleForSubmissionReport(practice_id, case_ids);
                string result = connection.Post(Commands.Search(TenantID, elasticType).Pretty(), queryS);
                return(serializer.ToSearchResult <Settlement_Model>(result).Documents);
            }

            return(new List <Settlement_Model>());
        }
Beispiel #26
0
        public static long GetAftercaresCount(ElasticParameterObject parameter, bool is_practice, string practice_id, string authorizing_doctor_id, List <AftercareHipParameter> rangeParameters, SessionSecurityTicket securityTicket)
        {
            var connection = Elastic_Utils.ElsaticConnection();
            var serializer = new JsonNetSerializer();
            var command    = Commands.Count(securityTicket.TenantID.ToString(), "aftercare");
            var query      = QueryBuilderCase.BuildGetAftercaresCountQuery(parameter.search_params, practice_id, parameter.filter_by, parameter.date_from, parameter.date_to, null, false,
                                                                           is_practice ? null : securityTicket.AccountID.ToString(), is_practice, null, authorizing_doctor_id, "", false, rangeParameters, !String.IsNullOrEmpty(parameter.hip_name) ? parameter.hip_name.ToLower() : null);

            var result = serializer.ToCountResult(connection.Post(command, query).Result);

            return(result.count);
        }
        ///<summary>
        /// Get Patient Parameter Types Group  for current Tenant from DB or create it if there is no entry
        ///<summary>
        public static Guid Get_PatientParameterTypeGroup_for_GlobalPropertyMatchingID(DbConnection Connection, DbTransaction Transaction, String globalPropertyMatchingID, SessionSecurityTicket securityTicket)
        {
            var query = new ORM_HEC_Patient_ParameterType_Group.Query();

            query.GlobalPropertyMatchingID = globalPropertyMatchingID;
            query.IsDeleted    = false;
            query.Tenant_RefID = securityTicket.TenantID;
            var result = ORM_HEC_Patient_ParameterType_Group.Query.Search(Connection, Transaction, query);

            if (result == null || result.Count() == 0)
            {
                return(Save_PatientParameterTypeGroupForTenant(Connection, Transaction, globalPropertyMatchingID, securityTicket));
            }

            if (result.Count() == 1)
            {
                return(result.First().HEC_Patient_ParameterType_GroupID);
            }
            else
            {
                throw new Exception("Multiple PatientParameterTypeGroup with same \"type\" field are defined in the database!");
            }
        }
Beispiel #28
0
        public static Aftercare_Model[] GetAftercaresFilteredIDs(ElasticParameterObject parameter, string practice_id, string[] deselected_ids, bool is_submit, bool is_practice, string authorizing_doctor_id, string sort_by, bool isAsc, List <AftercareHipParameter> rangeParameters, SessionSecurityTicket securityTicket)
        {
            var connection    = Elastic_Utils.ElsaticConnection();
            var serializer    = new JsonNetSerializer();
            var searchCommand = Commands.Search(securityTicket.TenantID.ToString(), "aftercare").Pretty();
            var query         = QueryBuilderCase.BuildGetAftercaresCountQuery(parameter.search_params, practice_id, parameter.filter_by, parameter.date_from,
                                                                              parameter.date_to, int.MaxValue, is_submit, securityTicket.AccountID.ToString(), is_practice, deselected_ids, authorizing_doctor_id, sort_by, isAsc, rangeParameters, !String.IsNullOrEmpty(parameter.hip_name) ? parameter.hip_name.ToLower() : null);

            var operation_result = connection.Post(searchCommand, query);

            return(serializer.ToSearchResult <Aftercare_Model>(operation_result).Documents.ToArray());
        }
Beispiel #29
0
        private List <AftercareHipParameter> GetRangeParameters(DbConnection dbConnection, DbTransaction dbTransaction, SessionSecurityTicket securityTicket, Dictionary <string, List <MD_GHCPoT_1617> > hipData = null)
        {
            if (hipData == null)
            {
                hipData = cls_Get_Hip_Contract_Parameters_on_Tenant.Invoke(dbConnection, dbTransaction, securityTicket).Result.GroupBy(hip => hip.HipIK).ToDictionary(t => t.Key, t => t.ToList());
            }

            var rangeParameters = hipData.Select(t =>
            {
                var result = new AftercareHipParameter();
                if (t.Value.Any(x => x.ParameterValue != double.MaxValue && x.ParameterValue < 20000000 && x.ParameterValue != 0))
                {
                    try
                    {
                        var daysBetweenSurgeryAndAftercare = Convert.ToInt32(t.Value.First(x => x.ParameterName == "Number of days between surgery and aftercare - Days").ParameterValue);
                        var daysToSubmitAftercare          = Convert.ToInt32(t.Value.First(x => x.ParameterName == "Number of days between treatment and settlement claim - Days").ParameterValue);
                        result.MinimumTreatmentDate        = DateTime.Now.AddDays(-(daysToSubmitAftercare + daysBetweenSurgeryAndAftercare)).ToString("yyyy-MM-dd");
                        result.OverdueDate = DateTime.Now.AddDays(-daysBetweenSurgeryAndAftercare).ToString("yyyy-MM-dd");
                    }
                    catch { }
                }

                result.HipIk = t.Key;

                return(result);
            }).ToList();

            return(rangeParameters);
        }
Beispiel #30
0
        public static Aftercare_Model GetAftercareForAftercareID(string aftercare_id, SessionSecurityTicket securityTicket)
        {
            var    connection    = Elastic_Utils.ElsaticConnection();
            var    serializer    = new JsonNetSerializer();
            string searchCommand = Commands.Index(index: securityTicket.TenantID.ToString(), type: "aftercare", id: aftercare_id);

            return(serializer.ToGetResult <Aftercare_Model>(connection.Get(searchCommand).Result).Document);
        }