/// <summary>
        /// Retorna HealthInstitution por guid
        /// </summary>
        /// <param name="id">HealthInstitution ID</param>
        /// <returns></returns>
        public static HealthInstitutionBE GetById_Simplifaied(Guid id)
        {
            HealthInstitutionBE wHealthInstitutionBE = null;

            using (Health.Back.BE.HealthEntities dc = new Health.Back.BE.HealthEntities(Common.CnnString_Entities))
            {
                Health.Back.BE.HealthInstitution wHealthInstitution = dc.HealthInstitutions.Where(s => s.HealthInstitutionId.Equals(id)).FirstOrDefault <Health.Back.BE.HealthInstitution>();

                wHealthInstitutionBE = (HealthInstitutionBE)wHealthInstitution;



                return(wHealthInstitutionBE);
            }
        }
        /// <summary>
        /// Retorna HealthInstitutionList filtrando por healttInstId
        ///
        /// obtiene la institucion por id mas sus hermanas y padre
        /// </summary>
        /// <param name="textToSearh">Filtro</param>
        /// <returns></returns>
        public static HealthInstitutionList RetriveHealthInstitution_Relateds(Guid healttInstId)
        {
            HealthInstitutionList wHealthInstitutionList = new HealthInstitutionList();

            using (Health.Back.BE.HealthEntities dc = new Health.Back.BE.HealthEntities(Common.CnnString_Entities))
            {
                Health.Back.BE.HealthInstitution inst = dc.HealthInstitutions.Where(s => s.HealthInstitutionId.Equals(healttInstId)).FirstOrDefault();
                if (inst != null)
                {
                    wHealthInstitutionList.Add((HealthInstitutionBE)inst);
                }


                //Si es padre buscar hijas.. Si no tiene valor es por q es padre
                if (!inst.HealthInstitutionIdParent.HasValue)
                {
                    var childs = dc.HealthInstitutions.Where(s => s.HealthInstitutionIdParent.Equals(healttInstId));
                    foreach (Health.Back.BE.HealthInstitution p in childs)
                    {
                        wHealthInstitutionList.Add((HealthInstitutionBE)p);
                    }
                }
                //Buscar hermanas
                else
                {
                    var subyasents = dc.HealthInstitutions.Where(s => s.HealthInstitutionIdParent.Equals(inst.HealthInstitutionIdParent));
                    foreach (Health.Back.BE.HealthInstitution p in subyasents)
                    {
                        wHealthInstitutionList.Add((HealthInstitutionBE)p);
                    }
                }
                //Agregar el padre
                inst = dc.HealthInstitutions.Where(s => s.HealthInstitutionId.Equals(inst.HealthInstitutionIdParent)).FirstOrDefault();
                if (inst != null)
                {
                    wHealthInstitutionList.Add((HealthInstitutionBE)inst);
                }



                return(wHealthInstitutionList);
            }
        }
        /// <summary>
        /// Crea una Institución
        /// Establece como profesional owner de  pHealthInstitution a pProfesionalId/pUserId
        /// </summary>
        /// <param name="pHealthInstitution">Institución</param>
        /// <param name="pProfesionalId">Profecional</param>
        /// <param name="pUserId"></param>
        public static void Create_From_Owner(Health.Back.BE.HealthInstitution pHealthInstitution, Int32 pProfesionalId, Guid pUserId)
        {
            Back.BE.HealthInstitution_Profesional wHealthInstitution_Profesional = new Back.BE.HealthInstitution_Profesional();
            Back.BE.HealtInstitute_UsersInRoles   wHealtInstitute_UsersInRoles   = new BE.HealtInstitute_UsersInRoles();

            using (Health.Back.BE.HealthEntities dc = new Health.Back.BE.HealthEntities(Common.CnnString_Entities))
            {
                //Busco la institución padre si existe
                var parentHI = dc.HealthInstitutions.Where(p => !p.HealthInstitutionIdParent.HasValue &&
                                                           p.HealthInstitution_Profesional.Any(prof => prof.ProfesionalId.Equals(pProfesionalId))).FirstOrDefault();
                if (parentHI != null)
                {
                    pHealthInstitution.HealthInstitutionIdParent = parentHI.HealthInstitutionId;
                }

                pHealthInstitution.HealthInstitutionId = Guid.NewGuid();
                pHealthInstitution.CreatedDate         = System.DateTime.Now;
                dc.HealthInstitutions.AddObject(pHealthInstitution);

                wHealthInstitution_Profesional.HealthInstitutionId = pHealthInstitution.HealthInstitutionId;
                wHealthInstitution_Profesional.ProfesionalId       = pProfesionalId;
                wHealthInstitution_Profesional.ActiveFlag          = true;
                wHealthInstitution_Profesional.UserId      = pUserId;
                wHealthInstitution_Profesional.IsLockedOut = false;
                wHealthInstitution_Profesional.IsOwner     = true;
                dc.HealthInstitution_Profesional.AddObject(wHealthInstitution_Profesional);


                wHealtInstitute_UsersInRoles.UserId = pUserId;
                wHealtInstitute_UsersInRoles.HealthInstitutionId = pHealthInstitution.HealthInstitutionId;
                wHealtInstitute_UsersInRoles.RoleName            = "inst_owner";

                dc.HealtInstitute_UsersInRoles.AddObject(wHealtInstitute_UsersInRoles);

                dc.SaveChanges();
            }
        }
        /// <summary>
        /// Retorna HealthInstitution por guid y/o userGuid
        /// </summary>
        /// <param name="id">HealthInstitution ID</param>
        /// <param name="userId">Guid of the user</param>
        /// <returns></returns>
        public static HealthInstitutionBE GetById(Guid id, Guid?userId)
        {
            HealthInstitution_ProfesionalBE wProfesional         = null;
            HealthInstitutionBE             wHealthInstitutionBE = null;

            using (Health.Back.BE.HealthEntities dc = new Health.Back.BE.HealthEntities(Common.CnnString_Entities))
            {
                Health.Back.BE.HealthInstitution wHealthInstitution = dc.HealthInstitutions.Where(s => s.HealthInstitutionId.Equals(id)).FirstOrDefault <Health.Back.BE.HealthInstitution>();

                wHealthInstitutionBE = (HealthInstitutionBE)wHealthInstitution;

                if (userId.HasValue)
                {
                    //Si es owner o admin cargo la informacion extra roles y profesionales asociados
                    bool adminOrowner = wHealthInstitution.HealthInstitution_Profesional.Any(p => p.UserId.Equals(userId) && (p.IsOwner || p.IsOwner));
                    wHealthInstitutionBE.ProfesionalList = new HealthInstitution_ProfesionalList();
                    foreach (HealthInstitution_Profesional p in wHealthInstitution.HealthInstitution_Profesional)
                    {
                        wProfesional = (HealthInstitution_ProfesionalBE)p;
                        wHealthInstitutionBE.ProfesionalList.Add(wProfesional);
                        wProfesional.FullName = string.Concat(p.Profesional.Persona.Nombre.Trim(), ", ", p.Profesional.Persona.Apellido.Trim());
                    }

                    if (adminOrowner)
                    {
                        wHealthInstitutionBE.UsersInRoles = new HealtInstitute_UsersInRolesList();
                        foreach (HealtInstitute_UsersInRoles p in wHealthInstitution.HealtInstitute_UsersInRoles)
                        {
                            wHealthInstitutionBE.UsersInRoles.Add((HealtInstitute_UsersInRolesBE)p);
                        }
                    }
                }

                return(wHealthInstitutionBE);
            }
        }
 /// <summary>
 /// Deprecated Method for adding a new object to the HealthInstitutions EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToHealthInstitutions(HealthInstitution healthInstitution)
 {
     base.AddObject("HealthInstitutions", healthInstitution);
 }
 /// <summary>
 /// Create a new HealthInstitution object.
 /// </summary>
 /// <param name="healthInstitutionId">Initial value of the HealthInstitutionId property.</param>
 /// <param name="createdDate">Initial value of the CreatedDate property.</param>
 public static HealthInstitution CreateHealthInstitution(global::System.Guid healthInstitutionId, global::System.DateTime createdDate)
 {
     HealthInstitution healthInstitution = new HealthInstitution();
     healthInstitution.HealthInstitutionId = healthInstitutionId;
     healthInstitution.CreatedDate = createdDate;
     return healthInstitution;
 }