/// <summary> /// Gets the permissions which the authenticated person /// has when using the calling application for the specified item types /// in this record. /// </summary> /// <param name="connection"> /// The connection to use to access the data. /// </param> /// <param name="accessor"> /// The record to use. /// </param> /// <param name="healthRecordItemTypeIds"> /// A collection of unique identifiers to identify the health record /// item types, for which the permissions are being queried. /// </param> /// <returns> /// Returns a dictionary of <see cref="ThingTypePermission"/> /// with thing types as the keys. /// </returns> /// /// <remarks> /// If the list of thing types is empty, an empty dictionary is /// returned. If for a thing type, the person has /// neither online access nor offline access permissions, /// <b> null </b> will be returned for that type in the dictionary. /// </remarks> /// /// <exception cref="ArgumentNullException"> /// If <paramref name="healthRecordItemTypeIds"/> is <b>null</b>. /// </exception> /// /// <exception cref="HealthServiceException"> /// If there is an exception during executing the request to HealthVault. /// </exception> /// public virtual async Task <IDictionary <Guid, ThingTypePermission> > QueryPermissionsByTypesAsync( IHealthVaultConnection connection, HealthRecordAccessor accessor, IList <Guid> healthRecordItemTypeIds) { HealthRecordPermissions recordPermissions = await QueryRecordPermissionsAsync(connection, accessor, healthRecordItemTypeIds).ConfigureAwait(false); Collection <ThingTypePermission> typePermissions = recordPermissions.ItemTypePermissions; Dictionary <Guid, ThingTypePermission> permissions = new Dictionary <Guid, ThingTypePermission>(); foreach (Guid typeId in healthRecordItemTypeIds) { if (!permissions.ContainsKey(typeId)) { permissions.Add(typeId, null); } } foreach (ThingTypePermission typePermission in typePermissions) { permissions[typePermission.TypeId] = typePermission; } return(permissions); }
/// <summary> /// Gets the permissions which the authenticated person /// has when using the calling application for the specified item types /// in this health record. /// </summary> /// <param name="connection"> /// The connection to use to access the data. /// </param> /// <param name="accessor"> /// The record to use. /// </param> /// <param name="healthRecordItemTypeIds"> /// A collection of uniqueidentifiers to identify the health record /// item types, for which the permissions are being queried. /// </param> /// <returns> /// A list of <see cref="ThingTypePermission"/> /// objects which represent the permissions that the current /// authenticated person has for the HealthRecordItemTypes specified /// in the current health record when using the current application. /// </returns> /// /// <remarks> /// If the list of thing types is empty, an empty list is /// returned. If for a thing type, the person has /// neither online access nor offline access permissions, /// ThingTypePermission object is not returned for that /// thing type. /// </remarks> /// /// <exception cref="ArgumentNullException"> /// If <paramref name="healthRecordItemTypeIds"/> is <b>null</b>. /// </exception> /// /// <exception cref="HealthServiceException"> /// If there is an exception during executing the request to HealthVault. /// </exception> /// public virtual async Task <Collection <ThingTypePermission> > QueryPermissionsAsync( IHealthVaultConnection connection, HealthRecordAccessor accessor, IList <Guid> healthRecordItemTypeIds) { HealthRecordPermissions permissions = await QueryRecordPermissionsAsync(connection, accessor, healthRecordItemTypeIds).ConfigureAwait(false); return(permissions.ItemTypePermissions); }
/// <summary> /// Gets the permissions which the authenticated person /// has when using the calling application for the specified item types /// in this health record as well as the other permission settings such as MeaningfulUseOptIn. /// </summary> /// <param name="connection"> /// The connection to use to access the data. /// </param> /// <param name="accessor"> /// The record to use. /// </param> /// <param name="healthRecordItemTypeIds"> /// A collection of uniqueidentifiers to identify the health record /// item types, for which the permissions are being queried. /// </param> /// <returns> /// A <see cref="HealthRecordPermissions"/> object /// which contains a collection of <see cref="ThingTypePermission"/> objects and /// other permission settings. /// </returns> /// /// <remarks> /// If the list of thing types is empty, an empty list is /// returned for <see cref="HealthRecordPermissions"/> object's ItemTypePermissions property. /// If for a thing type, the person has /// neither online access nor offline access permissions, /// ThingTypePermission object is not returned for that /// thing type. /// </remarks> /// /// <exception cref="ArgumentNullException"> /// If <paramref name="healthRecordItemTypeIds"/> is <b>null</b>. /// </exception> /// /// <exception cref="HealthServiceException"> /// There is an error in the server request. /// </exception> /// public virtual async Task <HealthRecordPermissions> QueryRecordPermissionsAsync( IHealthVaultConnection connection, HealthRecordAccessor accessor, IList <Guid> healthRecordItemTypeIds) { Validator.ThrowIfArgumentNull(healthRecordItemTypeIds, nameof(healthRecordItemTypeIds), Resources.CtorhealthRecordItemTypeIdsArgumentNull); string parameters = GetQueryPermissionsParametersXml(healthRecordItemTypeIds); HealthServiceResponseData responseData = await connection.ExecuteAsync(HealthVaultMethods.QueryPermissions, 1, parameters).ConfigureAwait(false); XPathNavigator infoNav = responseData.InfoNavigator.SelectSingleNode( GetQueryPermissionsInfoXPathExpression( responseData.InfoNavigator)); HealthRecordPermissions recordPermissions = new HealthRecordPermissions(); XPathNodeIterator thingTypePermissionsNodes = infoNav.Select("thing-type-permission"); foreach (XPathNavigator nav in thingTypePermissionsNodes) { ThingTypePermission thingTypePermissions = ThingTypePermission.CreateFromXml(nav); recordPermissions.ItemTypePermissions.Add(thingTypePermissions); } XPathNavigator valueNav = infoNav.SelectSingleNode("other-settings/meaningfuluse-opt-in"); if (valueNav != null) { recordPermissions.MeaningfulUseOptIn = valueNav.ValueAsBoolean; } else { recordPermissions.MeaningfulUseOptIn = null; } return(recordPermissions); }