コード例 #1
0
        /// <summary>
        /// Override model instance
        /// </summary>
        public override object FromModelInstance(EntityAddress modelInstance, SQLiteDataContext context)
        {
            foreach (var itm in modelInstance.Component)
            {
                itm.Value = itm.Value.Trim();
            }

            modelInstance.Key = modelInstance.Key ?? Guid.NewGuid();

            return(new DbEntityAddress()
            {
                Uuid = modelInstance.Key?.ToByteArray(),
                SourceUuid = modelInstance.SourceEntityKey?.ToByteArray(),
                UseConceptUuid = modelInstance.AddressUseKey?.ToByteArray()
            });
        }
コード例 #2
0
 /// <summary>
 /// From model instance
 /// </summary>
 public override object FromModelInstance(Person modelInstance, SQLiteDataContext context)
 {
     /*var dbPerson = base.FromModelInstance(modelInstance, context) as DbPerson;
      *
      * if (modelInstance.DateOfBirthPrecision.HasValue && PrecisionMap.ContainsKey(modelInstance.DateOfBirthPrecision.Value))
      *  dbPerson.DateOfBirthPrecision = PrecisionMap[modelInstance.DateOfBirthPrecision.Value];
      */
     modelInstance.Key = modelInstance.Key ?? Guid.NewGuid();
     return(new DbPerson()
     {
         DateOfBirth = modelInstance.DateOfBirth,
         DateOfBirthPrecision = modelInstance.DateOfBirthPrecision.HasValue ? PrecisionMap[modelInstance.DateOfBirthPrecision.Value] : null,
         Uuid = modelInstance.Key?.ToByteArray(),
         OccupationUuid = modelInstance.OccupationKey?.ToByteArray()
     });
 }
コード例 #3
0
        /// <summary>
        /// Insert the relationship
        /// </summary>
        protected override ActParticipation InsertInternal(SQLiteDataContext context, ActParticipation data)
        {
            // Ensure we haven't already persisted this
            data.PlayerEntityKey = data.PlayerEntity?.Key ?? data.PlayerEntityKey;
            if (data.ParticipationRole != null)
            {
                data.ParticipationRole = data.ParticipationRole.EnsureExists(context, false);
            }
            data.ParticipationRoleKey = data.ParticipationRole?.Key ?? data.ParticipationRoleKey;
            data.ActKey = data.Act?.Key ?? data.ActKey;

            byte[] target = data.PlayerEntityKey.Value.ToByteArray(),
            source  = data.SourceEntityKey.Value.ToByteArray(),
            typeKey = data.ParticipationRoleKey.Value.ToByteArray();

            //SqlStatement sql = new SqlStatement<DbActParticipation>().SelectFrom()
            //   .Where<DbActParticipation>(o => o.ActUuid == source )
            //   .Limit(1).Build();

            //IEnumerable<DbActParticipation> dbrelationships = context.TryGetData($"EX:{sql.ToString()}") as IEnumerable<DbActParticipation>;
            //if (dbrelationships == null) {
            //    dbrelationships = context.Connection.Query<DbActParticipation>(sql.SQL, sql.Arguments.ToArray()).ToList();
            //    context.AddData($"EX{sql.ToString()}", dbrelationships);
            //}

            //var existing = dbrelationships.FirstOrDefault(
            //        o => o.ParticipationRoleUuid == typeKey &&
            //        o.EntityUuid == target);

            //if (existing == null)
            //{
            return(base.InsertInternal(context, data));
            //    (dbrelationships as List<DbActParticipation>).Add(new DbActParticipation()
            //    {
            //        Uuid = retVal.Key.Value.ToByteArray(),
            //        ParticipationRoleUuid = typeKey,
            //        ActUuid = source,
            //        EntityUuid = target
            //    });
            //    return retVal;
            //}
            //else
            //{
            //    data.Key = new Guid(existing.Uuid);
            //    return data;
            //}
        }
コード例 #4
0
        /// <summary>
        /// Update the roles to security user
        /// </summary>
        protected override SecurityApplication UpdateInternal(SQLiteDataContext context, SecurityApplication data)
        {
            var retVal = base.UpdateInternal(context, data);

            var entityUuid = retVal.Key.Value.ToByteArray();

            // Roles
            //if (retVal.Policies != null)
            //    base.UpdateAssociatedItems<SecurityPolicyInstance, SecurityApplication>(
            //        context.Table<DbSecurityApplicationPolicy>().Where(o => o.ApplicationId == entityUuid).ToList().Select(o => m_mapper.MapDomainInstance<DbSecurityApplicationPolicy, SecurityPolicyInstance>(o)).ToList(),
            //        retVal.Policies,
            //        retVal.Key,
            //        context);


            return(retVal);
        }
コード例 #5
0
        /// <summary>
        /// Updates the specified observation
        /// </summary>
        protected override TObservation UpdateInternal(SQLiteDataContext context, TObservation data)
        {
            if (data.InterpretationConcept != null)
            {
                data.InterpretationConcept = data.InterpretationConcept?.EnsureExists(context);
            }
            data.InterpretationConceptKey = data.InterpretationConcept?.Key ?? data.InterpretationConceptKey;

            var updated = base.UpdateInternal(context, data);

            // Not pure observation
            var dbobservation = context.Connection.Get <DbObservation>(data.Key?.ToByteArray());

            dbobservation.InterpretationConceptUuid = data.InterpretationConceptKey?.ToByteArray();
            context.Connection.Update(dbobservation);
            return(updated);
        }
コード例 #6
0
        /// <summary>
        /// Updates a reference term.
        /// </summary>
        /// <param name="context">Context.</param>
        /// <param name="data">Data.</param>
        /// <param name="principal">The principal.</param>
        /// <returns>Returns the updated reference term.</returns>
        protected override ReferenceTerm UpdateInternal(SQLiteDataContext context, ReferenceTerm data)
        {
            var referenceTerm = base.UpdateInternal(context, data);

            var uuid = referenceTerm.Key.Value.ToByteArray();

            if (referenceTerm.DisplayNames != null)
            {
                base.UpdateAssociatedItems <ReferenceTermName, ReferenceTerm>(
                    context.Connection.Table <DbReferenceTermName>().Where(o => o.ReferenceTermUuid == uuid).ToList().Select(o => m_mapper.MapDomainInstance <DbReferenceTermName, ReferenceTermName>(o)).ToList(),
                    referenceTerm.DisplayNames,
                    data.Key,
                    context);
            }

            return(referenceTerm);
        }
コード例 #7
0
        /// <summary>
        /// Update the specified person
        /// </summary>
        protected override Patient UpdateInternal(SQLiteDataContext context, Patient data)
        {
            // Ensure exists
            if (data.GenderConcept != null)
            {
                data.GenderConcept = data.GenderConcept?.EnsureExists(context);
            }
            data.GenderConceptKey = data.GenderConcept?.Key ?? data.GenderConceptKey;
            if (data.VipStatus != null)
            {
                data.VipStatus = data.VipStatus?.EnsureExists(context, false);
            }
            data.VipStatusKey = data.VipStatus?.Key ?? data.VipStatusKey;

            this.m_personPersister.Update(context, data);
            return(base.UpdateInternal(context, data));
        }
コード例 #8
0
        /// <summary>
        /// Insert the specified person into the database
        /// </summary>
        protected override Patient InsertInternal(SQLiteDataContext context, Patient data)
        {
            if (data.GenderConcept != null)
            {
                data.GenderConcept = data.GenderConcept?.EnsureExists(context);
            }
            data.GenderConceptKey = data.GenderConcept?.Key ?? data.GenderConceptKey;
            if (data.VipStatus != null)
            {
                data.VipStatus = data.VipStatus?.EnsureExists(context, false);
            }
            data.VipStatusKey = data.VipStatus?.Key ?? data.VipStatusKey;

            var inserted = this.m_personPersister.Insert(context, data);

            return(base.InsertInternal(context, data));
        }
コード例 #9
0
        /// <summary>
        /// To model instance
        /// </summary>
        public override EntityAddressComponent ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            if (dataInstance == null)
            {
                return(null);
            }

            var addrComp  = (dataInstance as DbEntityAddressComponent.QueryResult)?.GetInstanceOf <DbEntityAddressComponent>() ?? dataInstance as DbEntityAddressComponent;
            var addrValue = (dataInstance as DbEntityAddressComponent.QueryResult)?.GetInstanceOf <DbAddressValue>() ?? context.Connection.Table <DbAddressValue>().Where(o => o.Uuid == addrComp.ValueUuid).FirstOrDefault();

            return(new EntityAddressComponent()
            {
                ComponentTypeKey = new Guid(addrComp.ComponentTypeUuid),
                Value = addrValue.Value,
                Key = addrComp.Key,
                SourceEntityKey = new Guid(addrComp.AddressUuid)
            });
        }
コード例 #10
0
        /// <summary>
        /// Load relationship mnemonics
        /// </summary>
        public string GetRelationshipMnemonic(SQLiteDataContext context, Guid id)
        {
            if (this.m_relationshipMnemonicDictionary.Count == 0)
            {
                lock (this.m_relationshipMnemonicDictionary)
                    if (this.m_relationshipMnemonicDictionary.Count == 0)
                    {
                        foreach (var itm in context.Connection.Query <DbConcept>("select concept.uuid, mnemonic from concept_concept_set inner join concept on (concept.uuid = concept_concept_set.concept_uuid) where concept_concept_set.concept_set_uuid = ?", ConceptSetKeys.EntityRelationshipType.ToByteArray()))
                        {
                            this.m_relationshipMnemonicDictionary.Add(itm.Key, itm.Mnemonic);
                        }
                    }
            }
            String retVal = null;

            this.m_relationshipMnemonicDictionary.TryGetValue(id, out retVal);
            return(retVal);
        }
コード例 #11
0
        /// <summary>
        /// Load to a model instance
        /// </summary>
        public override Place ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var iddat = dataInstance as DbVersionedData;
            var place = dataInstance as DbPlace ?? dataInstance.GetInstanceOf <DbPlace>() ?? context.Connection.Table <DbPlace>().Where(o => o.Uuid == iddat.Uuid).FirstOrDefault();
            var dbe   = dataInstance.GetInstanceOf <DbEntity>() ?? dataInstance as DbEntity ?? context.Connection.Table <DbEntity>().Where(o => o.Uuid == place.Uuid).First();

            var retVal = m_entityPersister.ToModelInstance <Place>(dbe, context);

            if (place != null)
            {
                retVal.IsMobile = place.IsMobile;
                retVal.Lat      = place.Lat;
                retVal.Lng      = place.Lng;
            }
            //retVal.LoadAssociations(context);

            return(retVal);
        }
コード例 #12
0
        /// <summary>
        /// Update the specified data
        /// </summary>
        protected override AssigningAuthority UpdateInternal(SQLiteDataContext context, AssigningAuthority data)
        {
            var retVal = base.UpdateInternal(context, data);
            var ruuid  = retVal.Key.Value.ToByteArray();

            // Scopes?
            if (retVal.AuthorityScopeXml != null)
            {
                foreach (var itm in context.Connection.Table <DbAuthorityScope>().Where(o => o.Uuid == ruuid))
                {
                    context.Connection.Delete(itm);
                }
                context.Connection.InsertAll(retVal.AuthorityScopeXml.Select(o => new DbAuthorityScope()
                {
                    Key = Guid.NewGuid(), ScopeConceptUuid = o.ToByteArray(), AssigningAuthorityUuid = retVal.Key.Value.ToByteArray()
                }));
            }
            return(retVal);
        }
コード例 #13
0
        /// <summary>
        /// Represent as a model instance
        /// </summary>
        public override EntityName ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var dbEntName     = dataInstance as DbEntityName;
            var compPersister = new EntityNameComponentPersistenceService();

            return(new EntityName()
            {
                Key = new Guid(dbEntName.Uuid),
                NameUseKey = dbEntName.UseConceptUuid == null ? null : (Guid?)new Guid(dbEntName.UseConceptUuid),
                SourceEntityKey = new Guid(dbEntName.SourceUuid),
                NameUse = dbEntName.UseConceptUuid == null ? null : new Concept()
                {
                    Key = new Guid(dbEntName.UseConceptUuid),
                    Mnemonic = this.m_nameUseMap[new Guid(dbEntName.UseConceptUuid)]
                },
                LoadState = SanteDB.Core.Model.LoadState.FullLoad,
                Component = compPersister.GetFromSource(context, new Guid(dbEntName.Uuid), null).OfType <EntityNameComponent>().ToList()
            });
        }
コード例 #14
0
 /// <summary>
 /// Convert entity into a dbentity
 /// </summary>
 public override object FromModelInstance(Entity modelInstance, SQLiteDataContext context)
 {
     modelInstance.Key = modelInstance.Key ?? Guid.NewGuid();
     return(new DbEntity()
     {
         ClassConceptUuid = modelInstance.ClassConceptKey?.ToByteArray(),
         CreatedByUuid = modelInstance.CreatedByKey?.ToByteArray(),
         CreationTime = modelInstance.CreationTime,
         DeterminerConceptUuid = modelInstance.DeterminerConceptKey?.ToByteArray(),
         ObsoletedByUuid = modelInstance.ObsoletedByKey?.ToByteArray(),
         ObsoletionTime = modelInstance.ObsoletionTime,
         PreviousVersionUuid = modelInstance.PreviousVersionKey?.ToByteArray(),
         StatusConceptUuid = modelInstance.StatusConceptKey?.ToByteArray(),
         TemplateUuid = modelInstance.TemplateKey?.ToByteArray(),
         TypeConceptUuid = modelInstance.TypeConceptKey?.ToByteArray(),
         Uuid = modelInstance.Key?.ToByteArray(),
         VersionSequenceId = (int)modelInstance.VersionSequence.GetValueOrDefault(),
         VersionUuid = modelInstance.VersionKey?.ToByteArray()
     });
 }
コード例 #15
0
        /// <summary>
        /// To model instance
        /// </summary>
        public override UserEntity ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var iddat      = dataInstance as DbVersionedData;
            var userEntity = dataInstance as DbUserEntity ?? dataInstance.GetInstanceOf <DbUserEntity>() ?? context.Connection.Table <DbUserEntity>().Where(o => o.Uuid == iddat.Uuid).First();
            var dbe        = dataInstance.GetInstanceOf <DbEntity>() ?? dataInstance as DbEntity ?? context.Connection.Table <DbEntity>().Where(o => o.Uuid == userEntity.Uuid).First();
            var dbp        = context.Connection.Table <DbPerson>().Where(o => o.Uuid == userEntity.Uuid).First();
            var retVal     = m_entityPersister.ToModelInstance <UserEntity>(dbe, context);

            retVal.SecurityUserKey = new Guid(userEntity.SecurityUserUuid);
            retVal.DateOfBirth     = dbp.DateOfBirth;
            // Reverse lookup
            if (!String.IsNullOrEmpty(dbp.DateOfBirthPrecision))
            {
                retVal.DateOfBirthPrecision = PersonPersistenceService.PrecisionMap.Where(o => o.Value == dbp.DateOfBirthPrecision).Select(o => o.Key).First();
            }

            // retVal.LoadAssociations(context);

            return(retVal);
        }
コード例 #16
0
        /// <summary>
        /// To model instance
        /// </summary>
        public override EntityNameComponent ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            if (dataInstance == null)
            {
                return(null);
            }

            var entName   = (dataInstance as DbEntityNameComponent.QueryResult)?.GetInstanceOf <DbEntityNameComponent>() ?? dataInstance as DbEntityNameComponent;
            var nameValue = (dataInstance as DbEntityNameComponent.QueryResult)?.GetInstanceOf <DbPhoneticValue>() ?? context.Connection.Table <DbPhoneticValue>().Where(o => o.Uuid == entName.ValueUuid).FirstOrDefault();

            return(new EntityNameComponent()
            {
                ComponentTypeKey = new Guid(entName.ComponentTypeUuid ?? Guid.Empty.ToByteArray()),
                Value = nameValue.Value,
                Key = entName.Key,
                //PhoneticAlgorithmKey = new Guid(nameValue.PhoneticAlgorithmUuid ?? Guid.Empty.ToByteArray()),
                //PhoneticCode = nameValue.PhoneticCode,
                SourceEntityKey = new Guid(entName.NameUuid)
            });
        }
コード例 #17
0
        /// <summary>
        /// To model instance
        /// </summary>
        public override Concept ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var modelInstance = m_mapper.MapDomainInstance <DbConcept, Concept>(dataInstance as DbConcept);

            // Set the concepts
            var dbInstance = dataInstance as DbConcept;

            //modelInstance.ConceptSets = context.Connection.Query<DbConceptSet>("SELECT concept_set.* FROM concept_concept_set INNER JOIN concept_set ON (concept_concept_set.concept_set_uuid = concept_set.uuid) WHERE concept_concept_set.concept_uuid = ?", dbInstance.Uuid).Select(
            //    o => m_mapper.MapDomainInstance<DbConceptSet, ConceptSet>(o)
            //).ToList();

            // Set the concept names
            modelInstance.ConceptNames = context.Connection.Table <DbConceptName>().Where(o => o.ConceptUuid == dbInstance.Uuid).Select(o => m_mapper.MapDomainInstance <DbConceptName, ConceptName>(o)).ToList();
            //modelInstance.StatusConcept = m_mapper.MapDomainInstance<DbConcept, Concept>(context.Table<DbConcept>().Where(o => o.Uuid == dbInstance.StatusUuid).FirstOrDefault());
            //modelInstance.Class = m_mapper.MapDomainInstance<DbConceptClass, ConceptClass>(context.Table<DbConceptClass>().Where(o => o.Uuid == dbInstance.ClassUuid).FirstOrDefault());
            //modelInstance.LoadAssociations(context);
            modelInstance.LoadState = SanteDB.Core.Model.LoadState.FullLoad;

            return(modelInstance);
        }
コード例 #18
0
        /// <summary>
        /// Model instance
        /// </summary>
        public override Provider ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var iddat    = dataInstance as DbVersionedData;
            var provider = dataInstance as DbProvider ?? dataInstance.GetInstanceOf <DbProvider>() ?? context.Connection.Table <DbProvider>().Where(o => o.Uuid == iddat.Uuid).First();
            var dbe      = dataInstance.GetInstanceOf <DbEntity>() ?? dataInstance as DbEntity ?? context.Connection.Table <DbEntity>().Where(o => o.Uuid == provider.Uuid).First();
            var dbp      = context.Connection.Table <DbPerson>().Where(o => o.Uuid == provider.Uuid).First();
            var retVal   = m_entityPersister.ToModelInstance <Provider>(dbe, context);

            retVal.DateOfBirth = dbp.DateOfBirth;
            // Reverse lookup
            // Reverse lookup
            if (!String.IsNullOrEmpty(dbp.DateOfBirthPrecision))
            {
                retVal.DateOfBirthPrecision = PersonPersistenceService.PrecisionMap.Where(o => o.Value == dbp.DateOfBirthPrecision).Select(o => o.Key).First();
            }
            retVal.ProviderSpecialtyKey = provider.Specialty == null ? null : (Guid?)new Guid(provider.Specialty);
            //retVal.LoadAssociations(context);

            return(retVal);
        }
コード例 #19
0
        /// <summary>
        /// Insert the specified concept
        /// </summary>
        protected override ConceptSet InsertInternal(SQLiteDataContext context, ConceptSet data)
        {
            // Concept set insertion
            var retVal = base.InsertInternal(context, data);

            // Concept members (nb: this is only a UUID if from the wire)
            if (data.ConceptsXml != null)
            {
                foreach (var r in data.ConceptsXml)
                {
                    context.Connection.Insert(new DbConceptSetConceptAssociation()
                    {
                        Uuid           = Guid.NewGuid().ToByteArray(),
                        ConceptSetUuid = retVal.Key.Value.ToByteArray(),
                        ConceptUuid    = r.ToByteArray()
                    });
                }
            }

            return(retVal);
        }
コード例 #20
0
        /// <summary>
        /// Model instance
        /// </summary>
        public override Person ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var iddat  = dataInstance as DbIdentified;
            var person = iddat as DbPerson ?? iddat.GetInstanceOf <DbPerson>() ?? context.Connection.Table <DbPerson>().Where(o => o.Uuid == iddat.Uuid).First();
            var dbe    = iddat.GetInstanceOf <DbEntity>() ?? context.Connection.Table <DbEntity>().Where(o => o.Uuid == person.Uuid).First();
            var retVal = m_entityPersister.ToModelInstance <Person>(dbe, context);

            retVal.DateOfBirth = person.DateOfBirth.HasValue ? (DateTime?)person.DateOfBirth.Value.ToLocalTime() : null;

            // Reverse lookup
            if (!String.IsNullOrEmpty(person.DateOfBirthPrecision))
            {
                retVal.DateOfBirthPrecision = PrecisionMap.Where(o => o.Value == person.DateOfBirthPrecision).Select(o => o.Key).First();
            }

            retVal.OccupationKey = person.OccupationUuid?.ToGuid();

            //etVal.LoadAssociations(context);

            return(retVal);
        }
コード例 #21
0
        /// <summary>
        /// Insert the specified object
        /// </summary>
        protected override SecurityDevice InsertInternal(SQLiteDataContext context, SecurityDevice data)
        {
            var retVal = base.InsertInternal(context, data);

            // Roles
            if (retVal.Policies != null)
            {
                foreach (var itm in retVal.Policies)
                {
                    context.Connection.Insert(new DbSecurityDevicePolicy()
                    {
                        Key       = Guid.NewGuid(),
                        DeviceId  = retVal.Key.Value.ToByteArray(),
                        GrantType = (int)itm.GrantType,
                        PolicyId  = itm.PolicyKey.Value.ToByteArray()
                    });
                }
            }

            return(retVal);
        }
コード例 #22
0
        /// <summary>
        /// Insert the specified object
        /// </summary>
        protected override SecurityUser InsertInternal(SQLiteDataContext context, SecurityUser data)
        {
            var retVal = base.InsertInternal(context, data);

            // Roles
            if (retVal.Roles != null)
            {
                foreach (var r in retVal.Roles)
                {
                    r.EnsureExists(context);

                    context.Connection.Insert(new DbSecurityUserRole()
                    {
                        Uuid     = Guid.NewGuid().ToByteArray(),
                        UserUuid = retVal.Key.Value.ToByteArray(),
                        RoleUuid = r.Key.Value.ToByteArray()
                    });
                }
            }

            return(retVal);
        }
コード例 #23
0
        /// <summary>
        /// Update the person entity
        /// </summary>
        protected override Person UpdateInternal(SQLiteDataContext context, Person data)
        {
            if (data.Occupation != null)
            {
                data.Occupation = data.Occupation?.EnsureExists(context, false);
            }
            data.OccupationKey = data.Occupation?.Key ?? data.OccupationKey;

            var retVal    = base.UpdateInternal(context, data);
            var sourceKey = retVal.Key.Value.ToByteArray();

            // Language communication
            if (data.LanguageCommunication != null)
            {
                base.UpdateAssociatedItems <PersonLanguageCommunication, Entity>(
                    context.Connection.Table <DbPersonLanguageCommunication>().Where(o => o.SourceUuid == sourceKey).ToList().Select(o => m_mapper.MapDomainInstance <DbPersonLanguageCommunication, PersonLanguageCommunication>(o)).ToList(),
                    data.LanguageCommunication,
                    retVal.Key,
                    context);
            }
            return(retVal);
        }
コード例 #24
0
        /// <summary>
        /// Insert the specified object
        /// </summary>
        protected override EntityName InsertInternal(SQLiteDataContext context, EntityName data)
        {
            // Ensure exists
            if (data.NameUse != null)
            {
                data.NameUse = data.NameUse?.EnsureExists(context);
            }
            data.NameUseKey = data.NameUse?.Key ?? data.NameUseKey;
            var retVal = base.InsertInternal(context, data);

            // Data component
            if (data.Component != null)
            {
                base.UpdateAssociatedItems <EntityNameComponent, EntityName>(
                    new List <EntityNameComponent>(),
                    data.Component,
                    data.Key,
                    context);
            }

            return(retVal);
        }
コード例 #25
0
        /// <summary>
        /// Model instance
        /// </summary>
        public override Patient ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var iddat   = dataInstance as DbVersionedData;
            var patient = dataInstance as DbPatient ?? dataInstance.GetInstanceOf <DbPatient>() ?? context.Connection.Table <DbPatient>().Where(o => o.Uuid == iddat.Uuid).First();
            var dbe     = dataInstance.GetInstanceOf <DbEntity>() ?? dataInstance as DbEntity ?? context.Connection.Table <DbEntity>().Where(o => o.Uuid == patient.Uuid).First();
            var dbp     = dataInstance.GetInstanceOf <DbPerson>() ?? context.Connection.Table <DbPerson>().Where(o => o.Uuid == patient.Uuid).First();
            var retVal  = m_entityPersister.ToModelInstance <Patient>(dbe, context);

            retVal.DateOfBirth = dbp.DateOfBirth.HasValue ? (DateTime?)dbp.DateOfBirth.Value.ToLocalTime() : null;
            // Reverse lookup
            if (!String.IsNullOrEmpty(dbp.DateOfBirthPrecision))
            {
                retVal.DateOfBirthPrecision = PersonPersistenceService.PrecisionMap.Where(o => o.Value == dbp.DateOfBirthPrecision).Select(o => o.Key).First();
            }
            else
            {
                retVal.DateOfBirthPrecision = SanteDB.Core.Model.DataTypes.DatePrecision.Day;
            }

            retVal.DeceasedDate = patient.DeceasedDate.HasValue ? (DateTime?)patient.DeceasedDate.Value.ToLocalTime() : null;
            // Reverse lookup
            if (!String.IsNullOrEmpty(patient.DeceasedDatePrecision))
            {
                retVal.DeceasedDatePrecision = PersonPersistenceService.PrecisionMap.Where(o => o.Value == patient.DeceasedDatePrecision).Select(o => o.Key).First();
            }
            retVal.MultipleBirthOrder = patient.MultipleBirthOrder;
            retVal.GenderConceptKey   = new Guid(patient.GenderConceptUuid);

            retVal.EducationLevelKey    = patient.EducationLevelUuid?.ToGuid();
            retVal.EthnicGroupCodeKey   = patient.EthnicGroupCodeUuid?.ToGuid();
            retVal.LivingArrangementKey = patient.LivingArrangementUuid?.ToGuid();
            retVal.MaritalStatusKey     = patient.MaritalStatusUuid?.ToGuid();
            retVal.VipStatusKey         = patient.VipStatusUuid?.ToGuid();
            retVal.OccupationKey        = dbp.OccupationUuid?.ToGuid();

            //retVal.LoadAssociations(context);

            return(retVal);
        }
コード例 #26
0
        /// <summary>
        /// Creates the specified model instance
        /// </summary>
        internal TModel ToModelInstance <TModel>(object rawInstance, SQLiteDataContext context)
            where TModel : Material, new()
        {
            var iddat        = rawInstance as DbIdentified;
            var dataInstance = rawInstance as DbMaterial ?? rawInstance.GetInstanceOf <DbMaterial>() ?? context.Connection.Table <DbMaterial>().Where(o => o.Uuid == iddat.Uuid).First();
            var dbe          = rawInstance.GetInstanceOf <DbEntity>() ?? rawInstance as DbEntity ?? context.Connection.Table <DbEntity>().Where(o => o.Uuid == dataInstance.Uuid).First();
            var retVal       = this.m_entityPersister.ToModelInstance <TModel>(dbe, context);

            retVal.ExpiryDate       = dataInstance.ExpiryDate;
            retVal.IsAdministrative = dataInstance.IsAdministrative;
            retVal.Quantity         = dataInstance.Quantity;
            if (dataInstance.QuantityConceptUuid != null)
            {
                retVal.QuantityConceptKey = new Guid(dataInstance.QuantityConceptUuid);
            }
            if (dataInstance.FormConceptUuid != null)
            {
                retVal.FormConceptKey = new Guid(dataInstance.FormConceptUuid);
            }
            // retVal.LoadAssociations(context);
            return(retVal);
        }
コード例 #27
0
        /// <summary>
        /// Update the specified data elements
        /// </summary>
        protected override ConceptSet UpdateInternal(SQLiteDataContext context, ConceptSet data)
        {
            var retVal  = base.UpdateInternal(context, data);
            var keyuuid = retVal.Key.Value.ToByteArray();

            // Wipe and re-associate
            if (data.ConceptsXml != null)
            {
                context.Connection.Table <DbConceptSetConceptAssociation>().Delete(o => o.ConceptSetUuid == keyuuid);
                foreach (var r in data.ConceptsXml)
                {
                    context.Connection.Insert(new DbConceptSetConceptAssociation()
                    {
                        Uuid           = Guid.NewGuid().ToByteArray(),
                        ConceptSetUuid = retVal.Key.Value.ToByteArray(),
                        ConceptUuid    = r.ToByteArray()
                    });
                }
            }

            return(retVal);
        }
コード例 #28
0
        /// <summary>
        /// Update the roles to security user
        /// </summary>
        protected override SecurityUser UpdateInternal(SQLiteDataContext context, SecurityUser data)
        {
            var retVal = base.UpdateInternal(context, data);

            byte[] keyuuid = retVal.Key.Value.ToByteArray();

            if (retVal.Roles != null)
            {
                var existingRoles = context.Connection.Table <DbSecurityUserRole>().Where(o => o.UserUuid == keyuuid).Select(o => o.RoleUuid);
                foreach (var r in retVal.Roles.Where(r => !existingRoles.Any(o => new Guid(o) == r.Key)))
                {
                    r.EnsureExists(context);
                    context.Connection.Insert(new DbSecurityUserRole()
                    {
                        Uuid     = Guid.NewGuid().ToByteArray(),
                        UserUuid = retVal.Key.Value.ToByteArray(),
                        RoleUuid = r.Key.Value.ToByteArray()
                    });
                }
            }

            return(retVal);
        }
コード例 #29
0
        /// <summary>
        /// Inserts the specified person
        /// </summary>
        /// <param name="context"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        protected override Person InsertInternal(SQLiteDataContext context, Person data)
        {
            if (data.Occupation != null)
            {
                data.Occupation = data.Occupation?.EnsureExists(context, false);
            }
            data.OccupationKey = data.Occupation?.Key ?? data.OccupationKey;

            var retVal = base.InsertInternal(context, data);

            byte[] sourceKey = retVal.Key.Value.ToByteArray();

            // Insert language communication
            context.Connection.InsertAll(data.LanguageCommunication.Select(l => new DbPersonLanguageCommunication()
            {
                IsPreferred  = l.IsPreferred,
                Uuid         = l.Key?.ToByteArray() ?? Guid.NewGuid().ToByteArray(),
                LanguageCode = l.LanguageCode,
                SourceUuid   = sourceKey
            }));

            return(retVal);
        }
        /// <summary>
        /// Convert databased model to model
        /// </summary>
        public override SubstanceAdministration ToModelInstance(object dataInstance, SQLiteDataContext context)
        {
            var iddat   = dataInstance as DbIdentified;
            var dbSbadm = dataInstance as DbSubstanceAdministration ?? dataInstance.GetInstanceOf <DbSubstanceAdministration>() ?? context.Connection.Table <DbSubstanceAdministration>().Where(o => o.Uuid == iddat.Uuid).First();
            var dba     = dataInstance.GetInstanceOf <DbAct>() ?? dataInstance as DbAct ?? context.Connection.Table <DbAct>().Where(a => a.Uuid == dbSbadm.Uuid).First();
            var retVal  = m_actPersister.ToModelInstance <SubstanceAdministration>(dba, context);

            if (dbSbadm.DoseUnitConceptUuid != null)
            {
                retVal.DoseUnitKey = new Guid(dbSbadm.DoseUnitConceptUuid);
            }
            if (dbSbadm.RouteConceptUuid != null)
            {
                retVal.RouteKey = new Guid(dbSbadm.RouteConceptUuid);
            }
            retVal.DoseQuantity = dbSbadm.DoseQuantity;
            retVal.SequenceId   = (int)dbSbadm.SequenceId;
            if (dbSbadm.SiteConceptUuid != null)
            {
                retVal.SiteKey = new Guid(dbSbadm.SiteConceptUuid);
            }
            return(retVal);
        }