Пример #1
0
        /// <summary>
        /// Cache convert an act version
        /// </summary>
        protected override Act CacheConvert(DbIdentified dataInstance, LocalDataContext context)
        {
            if (dataInstance == null)
            {
                return(null);
            }
            DbAct dbAct  = dataInstance as DbAct;
            Act   retVal = null;
            IDataCachingService cache = ApplicationContext.Current.GetService <IDataCachingService>();

            if (dbAct != null)
            {
                switch (new Guid(dbAct.ClassConceptUuid).ToString().ToUpper())
                {
                case ControlAct:
                    retVal = cache?.GetCacheItem <ControlAct>(dbAct.Key);
                    break;

                case SubstanceAdministration:
                    retVal = cache?.GetCacheItem <SubstanceAdministration>(dbAct.Key);
                    break;

                case Observation:
                    var dbObs = context.Connection.Table <DbObservation>().Where(o => o.Uuid == dbAct.Uuid).FirstOrDefault();
                    if (dbObs != null)
                    {
                        switch (dbObs.ValueType)
                        {
                        case "ST":
                            retVal = cache?.GetCacheItem <TextObservation>(dbAct.Key);
                            break;

                        case "CD":
                            retVal = cache?.GetCacheItem <CodedObservation>(dbAct.Key);
                            break;

                        case "PQ":
                            retVal = cache?.GetCacheItem <QuantityObservation>(dbAct.Key);
                            break;
                        }
                    }
                    break;

                case Encounter:
                    retVal = cache?.GetCacheItem <PatientEncounter>(dbAct.Key);
                    break;

                case Condition:
                default:
                    retVal = cache?.GetCacheItem <Act>(dbAct.Key);
                    break;
                }
            }
            else if (dataInstance is DbControlAct)
            {
                retVal = cache?.GetCacheItem <ControlAct>(dataInstance.Key);
            }
            else if (dataInstance is DbSubstanceAdministration)
            {
                retVal = cache?.GetCacheItem <SubstanceAdministration>(dataInstance.Key);
            }
            else if (dataInstance is DbTextObservation)
            {
                retVal = cache?.GetCacheItem <TextObservation>(dataInstance.Key);
            }
            else if (dataInstance is DbCodedObservation)
            {
                retVal = cache?.GetCacheItem <CodedObservation>(dataInstance.Key);
            }
            else if (dataInstance is DbQuantityObservation)
            {
                retVal = cache?.GetCacheItem <QuantityObservation>(dataInstance.Key);
            }
            else if (dataInstance is DbPatientEncounter)
            {
                retVal = cache?.GetCacheItem <PatientEncounter>(dataInstance.Key);
            }

            // Return cache value
            if (retVal != null)
            {
                if (retVal.LoadState < context.DelayLoadMode)
                {
                    retVal.LoadAssociations(context,
                                            // Exclude
                                            nameof(OpenIZ.Core.Model.Acts.Act.Extensions),
                                            nameof(OpenIZ.Core.Model.Acts.Act.Tags),
                                            nameof(OpenIZ.Core.Model.Acts.Act.Identifiers),
                                            nameof(OpenIZ.Core.Model.Acts.Act.Notes),
                                            nameof(OpenIZ.Core.Model.Acts.Act.Policies)
                                            );
                }
                return(retVal);
            }
            else
            {
                return(base.CacheConvert(dataInstance, context));
            }
        }
Пример #2
0
        /// <summary>
        /// Perform the cache convert
        /// </summary>
        internal Entity DoCacheConvert(DbIdentified dataInstance, LocalDataContext context)
        {
            if (dataInstance == null)
            {
                return(null);
            }
            // Alright first, which type am I mapping to?
            var    dbEntity           = dataInstance as DbEntity;
            Entity retVal             = null;
            IDataCachingService cache = ApplicationContext.Current.GetService <IDataCachingService>();

            if (dbEntity != null)
            {
                switch (new Guid(dbEntity.ClassConceptUuid).ToString().ToUpper())
                {
                case Device:
                    retVal = cache?.GetCacheItem <DeviceEntity>(dbEntity.Key);
                    break;

                case NonLivingSubject:
                    retVal = cache?.GetCacheItem <ApplicationEntity>(dbEntity.Key);
                    break;

                case Person:
                    retVal = cache?.GetCacheItem <UserEntity>(dbEntity.Key);
                    if (retVal == null)
                    {
                        retVal = cache?.GetCacheItem <Person>(dbEntity.Key);
                    }
                    break;

                case Patient:
                    retVal = cache?.GetCacheItem <Patient>(dbEntity.Key);
                    break;

                case Provider:
                    retVal = cache?.GetCacheItem <Provider>(dbEntity.Key);

                    break;

                case Place:
                case CityOrTown:
                case Country:
                case CountyOrParish:
                case State:
                case ServiceDeliveryLocation:
                    retVal = cache?.GetCacheItem <Place>(dbEntity.Key);

                    break;

                case Organization:
                    retVal = cache?.GetCacheItem <Organization>(dbEntity.Key);

                    break;

                case Material:
                    retVal = cache?.GetCacheItem <Material>(dbEntity.Key);

                    break;

                case ManufacturedMaterial:
                    retVal = cache?.GetCacheItem <ManufacturedMaterial>(dbEntity.Key);

                    break;

                default:
                    retVal = cache?.GetCacheItem <Entity>(dbEntity.Key);
                    break;
                }
            }
            else if (dataInstance is DbDeviceEntity)
            {
                retVal = cache?.GetCacheItem <DeviceEntity>(dataInstance.Key);
            }
            else if (dataInstance is DbApplicationEntity)
            {
                retVal = cache?.GetCacheItem <ApplicationEntity>(dataInstance.Key);
            }
            else if (dataInstance is DbPerson)
            {
                retVal = cache?.GetCacheItem <UserEntity>(dataInstance.Key);
            }
            else if (dataInstance is DbPatient)
            {
                retVal = cache?.GetCacheItem <Patient>(dataInstance.Key);
            }
            else if (dataInstance is DbProvider)
            {
                retVal = cache?.GetCacheItem <Provider>(dataInstance.Key);
            }
            else if (dataInstance is DbPlace)
            {
                retVal = cache?.GetCacheItem <Place>(dataInstance.Key);
            }
            else if (dataInstance is DbOrganization)
            {
                retVal = cache?.GetCacheItem <Organization>(dataInstance.Key);
            }
            else if (dataInstance is DbMaterial)
            {
                retVal = cache?.GetCacheItem <Material>(dataInstance.Key);
            }
            else if (dataInstance is DbManufacturedMaterial)
            {
                retVal = cache?.GetCacheItem <ManufacturedMaterial>(dataInstance.Key);
            }

            // Return cache value
            if (retVal != null)
            {
                if (retVal.LoadState < context.DelayLoadMode)
                {
                    retVal.LoadAssociations(context,
                                            // Exclude
                                            nameof(OpenIZ.Core.Model.Entities.Entity.Extensions),
                                            nameof(OpenIZ.Core.Model.Entities.Entity.Notes),
                                            nameof(OpenIZ.Core.Model.Entities.Entity.Participations),
                                            nameof(OpenIZ.Core.Model.Entities.Entity.Telecoms),
                                            nameof(OpenIZ.Core.Model.Entities.UserEntity.SecurityUser)
                                            );
                }
                return(retVal);
            }
            else
            {
                return(base.CacheConvert(dataInstance, context));
            }
        }
 /// <summary>
 /// Do cache convert
 /// </summary>
 protected override TModel CacheConvert(DbIdentified o, LocalDataContext context)
 {
     return((TModel)this.m_entityPersister.DoCacheConvert(o, context));
 }
Пример #4
0
 /// <summary>
 /// Conversion based on type
 /// </summary>
 protected override Entity CacheConvert(DbIdentified dataInstance, LocalDataContext context)
 {
     return(this.DoCacheConvert(dataInstance, context));
 }