/// <summary>
        /// Importa los datos de un hecho de otro documento de instancia.
        /// Busca unidad o contexto que sea equivalente, de otra forma crea unidades y contextos asociados
        /// </summary>
        /// <param name="hechoImportar">Hecho a importar</param>
        /// <param name="instancia">Documento de instancia orgien del hecho</param>
        /// <returns>ID del hecho importado en le documento de instancia</returns>
        public String ImportarHecho(HechoDto hechoImportar, DocumentoInstanciaXbrlDto instancia)
        {
            String nuevoId = null;

            if (this.Taxonomia.ConceptosPorId.ContainsKey(hechoImportar.IdConcepto))
            {
                nuevoId = "I" + Guid.NewGuid().ToString();
                String idContexto = null;
                String idUnidad   = null;

                if (hechoImportar.IdUnidad != null)
                {
                    UnidadDto unidadOrigen      = instancia.UnidadesPorId[hechoImportar.IdUnidad];
                    var       uniadesNuevoHecho = BuscarUnidades(unidadOrigen.Tipo, Unit.Medida == unidadOrigen.Tipo ?unidadOrigen.Medidas :unidadOrigen.MedidasNumerador, unidadOrigen.MedidasDenominador);
                    if (uniadesNuevoHecho != null && uniadesNuevoHecho.Count > 0)
                    {
                        idUnidad = uniadesNuevoHecho[0].Id;
                    }
                    else
                    {
                        var unidadDestino = new UnidadDto()
                        {
                            Id                 = "UI" + Guid.NewGuid().ToString(),
                            Tipo               = unidadOrigen.Tipo,
                            Medidas            = unidadOrigen.Medidas,
                            MedidasNumerador   = unidadOrigen.MedidasNumerador,
                            MedidasDenominador = unidadOrigen.MedidasDenominador
                        };
                        UnidadesPorId.Add(unidadDestino.Id, unidadDestino);
                        idUnidad = unidadDestino.Id;
                    }
                }

                if (hechoImportar.IdContexto != null)
                {
                    ContextoDto contextoOrigen = instancia.ContextosPorId[hechoImportar.IdContexto];
                    var         valoresDim     = new List <DimensionInfoDto>();
                    if (contextoOrigen.Entidad.ValoresDimension != null)
                    {
                        valoresDim.AddRange(contextoOrigen.Entidad.ValoresDimension);
                    }
                    if (contextoOrigen.ValoresDimension != null)
                    {
                        valoresDim.AddRange(contextoOrigen.ValoresDimension);
                    }

                    var contextos = BuscarContexto(contextoOrigen.Entidad.EsquemaId + ":" + contextoOrigen.Entidad.Id, contextoOrigen.Periodo.Tipo,
                                                   contextoOrigen.Periodo.Tipo == Period.Instante? contextoOrigen.Periodo.FechaInstante:contextoOrigen.Periodo.FechaInicio,
                                                   contextoOrigen.Periodo.Tipo == Period.Instante? contextoOrigen.Periodo.FechaInstante:contextoOrigen.Periodo.FechaFin,
                                                   valoresDim
                                                   );
                    if (contextos != null && contextos.Count > 0)
                    {
                        idContexto = contextos[0].Id;
                        //LogUtil.Info("{contextoOrigen.Entidad.Id: [" + contextoOrigen.Entidad.Id + "], contextoDocumento.Entidad.Id:[" + contextos[0].Entidad.Id + "]}");
                    }
                    else
                    {
                        var contextoDestino = new ContextoDto()
                        {
                            Entidad = new EntidadDto()
                            {
                                ContieneInformacionDimensional = contextoOrigen.Entidad.ContieneInformacionDimensional,
                                EsquemaId = contextoOrigen.Entidad.EsquemaId,
                                Id        = contextoOrigen.Entidad.Id
                            },
                            ContieneInformacionDimensional = contextoOrigen.ContieneInformacionDimensional,
                            Periodo = new PeriodoDto()
                            {
                                Tipo          = contextoOrigen.Periodo.Tipo,
                                FechaInicio   = contextoOrigen.Periodo.FechaInicio,
                                FechaFin      = contextoOrigen.Periodo.FechaFin,
                                FechaInstante = contextoOrigen.Periodo.FechaInstante
                            },
                            ValoresDimension = contextoOrigen.ValoresDimension,
                            Id = "CI" + Guid.NewGuid().ToString()
                        };
                        ContextosPorId[contextoDestino.Id] = contextoDestino;
                        idContexto = contextoDestino.Id;
                    }
                }

                var hechoNuevo = CrearHecho(hechoImportar.IdConcepto, idUnidad, idContexto, nuevoId);
                hechoNuevo.Valor         = hechoImportar.Valor;
                hechoNuevo.ValorNumerico = hechoImportar.ValorNumerico;


                HechosPorId[nuevoId] = hechoNuevo;
                if (!HechosPorIdConcepto.ContainsKey(hechoNuevo.IdConcepto))
                {
                    HechosPorIdConcepto[hechoNuevo.IdConcepto] = new List <String>();
                }
                HechosPorIdConcepto[hechoNuevo.IdConcepto].Add(nuevoId);
            }

            return(nuevoId);
        }