Пример #1
0
        /// <summary>
        /// Convert entity identifier to a CX
        /// </summary>
        public static CX FromModel <TBind>(this CX me, IdentifierBase <TBind> id)
            where TBind : VersionedEntityData <TBind>, new()
        {
            me.IDNumber.Value = id.Value;
            me.AssigningAuthority.FromModel(id.LoadProperty <AssigningAuthority>("Authority"));

            if (id.ExpiryDate.HasValue)
            {
                me.ExpirationDate.SetYearMonthDayPrecision(id.ExpiryDate.Value.Year, id.ExpiryDate.Value.Month, id.ExpiryDate.Value.Day);
            }
            if (id.IssueDate.HasValue)
            {
                me.EffectiveDate.SetYearMonthDayPrecision(id.IssueDate.Value.Year, id.IssueDate.Value.Month, id.IssueDate.Value.Day);
            }

            me.CheckDigit.Value       = id.CheckDigit;
            me.CheckDigitScheme.Value = id.LoadProperty <AssigningAuthority>("Authority").GetCustomValidator()?.Name;

            // Identifier type
            if (id.IdentifierType?.TypeConceptKey.HasValue == true)
            {
                var refTerm = ApplicationServiceContext.Current.GetService <IConceptRepositoryService>().GetConceptReferenceTerm(id.IdentifierType.TypeConceptKey.Value, IdentifierTypeCodeSystem);
                me.IdentifierTypeCode.Value = refTerm?.Mnemonic;
            }
            else
            {
                me.IdentifierTypeCode.Value = "PT"; // EXTERNAL ID
            }
            return(me);
        }
Пример #2
0
        /// <summary>
        /// Convert entity identifier to a CX
        /// </summary>
        public static CX FromModel <TBind>(this CX me, IdentifierBase <TBind> id)
            where TBind : VersionedEntityData <TBind>, new()
        {
            me.IDNumber.Value = id.Value;
            me.AssigningAuthority.FromModel(id.LoadProperty <AssigningAuthority>("Authority"));

            // Identifier type
            if (id.IdentifierType?.TypeConceptKey.HasValue == true)
            {
                var refTerm = ApplicationServiceContext.Current.GetService <IConceptRepositoryService>().GetConceptReferenceTerm(id.IdentifierType.TypeConceptKey.Value, IdentifierTypeCodeSystem);
                me.IdentifierTypeCode.Value = refTerm?.Mnemonic;
            }
            else
            {
                me.IdentifierTypeCode.Value = "PT"; // EXTERNAL ID
            }
            return(me);
        }
Пример #3
0
        /// <summary>
        /// Converts a <see cref="IdentifierBase{TBoundModel}" /> instance to an <see cref="FhirIdentifier" /> instance.
        /// </summary>
        /// <typeparam name="TBoundModel">The type of the bound model.</typeparam>
        /// <param name="identifier">The identifier.</param>
        /// <returns>Returns the mapped FHIR identifier.</returns>
        public static FhirIdentifier ToFhirIdentifier <TBoundModel>(IdentifierBase <TBoundModel> identifier) where TBoundModel : VersionedEntityData <TBoundModel>, new()
        {
            traceSource.TraceEvent(EventLevel.Verbose, "Mapping entity identifier");

            if (identifier == null)
            {
                return(null);
            }

            var imetaService = ApplicationServiceContext.Current.GetService <IAssigningAuthorityRepositoryService>();
            var authority    = imetaService.Get(identifier.AuthorityKey.Value);

            return(new FhirIdentifier
            {
                System = new FhirUri(new Uri(authority?.Url ?? $"urn:oid:{authority?.Oid}")),
                Type = ToFhirCodeableConcept(identifier.LoadProperty <IdentifierType>(nameof(EntityIdentifier.IdentifierType))?.TypeConcept),
                Value = identifier.Value
            });
        }