protected override ExternalPractitionerData Export(ExternalPractitioner entity, IReadContext context) { var data = new ExternalPractitionerData { Deactivated = entity.Deactivated, FamilyName = entity.Name.FamilyName, GivenName = entity.Name.GivenName, MiddleName = entity.Name.MiddleName, LicenseNumber = entity.LicenseNumber, BillingNumber = entity.BillingNumber, IsVerified = entity.IsVerified, LastVerifiedTime = entity.LastVerifiedTime, LastEditedTime = entity.LastEditedTime, ContactPoints = CollectionUtils.Map(entity.ContactPoints, (ExternalPractitionerContactPoint cp) => new ExternalPractitionerContactPointData { Name = cp.Name, IsDefaultContactPoint = cp.IsDefaultContactPoint, PreferredResultCommunicationMode = cp.PreferredResultCommunicationMode.ToString(), InformationAuthority = cp.InformationAuthority == null ? null : cp.InformationAuthority.Code, Description = cp.Description, Addresses = CollectionUtils.Map(cp.Addresses, (Address a) => new AddressData(a)), TelephoneNumbers = CollectionUtils.Map(cp.TelephoneNumbers, (TelephoneNumber tn) => new TelephoneNumberData(tn)), EmailAddresses = CollectionUtils.Map(cp.EmailAddresses, (EmailAddress a) => new EmailAddressData(a)) }), ExtendedProperties = ExtendedPropertyUtils.Copy(entity.ExtendedProperties) }; return(data); }
protected override void Import(ExternalPractitionerData data, IUpdateContext context) { var prac = LoadExternalPractitioner( data.LicenseNumber, data.BillingNumber, context); var name = new PersonName(data.FamilyName, data.GivenName, data.MiddleName, null, null, null); if (prac == null) { // Creating a new practitioenr: Import prac = new ExternalPractitioner(name, data.LicenseNumber, data.BillingNumber, data.IsVerified, data.LastVerifiedTime, data.LastEditedTime, new HashedSet <ExternalPractitionerContactPoint>(), new Dictionary <string, string>(), null); context.Lock(prac, DirtyState.New); } else { prac.Name = name; prac.MarkEdited(); } prac.MarkDeactivated(data.Deactivated); if (data.ContactPoints != null) { foreach (var cpData in data.ContactPoints) { var cp = CollectionUtils.SelectFirst(prac.ContactPoints, p => p.Name == cpData.Name) ?? new ExternalPractitionerContactPoint(prac); UpdateExternalPractitionerContactPoint(cpData, cp, context); } } ExtendedPropertyUtils.Update(prac.ExtendedProperties, data.ExtendedProperties); }