Creating a SMART on FHIR enabled HealthLake data store
To use the SMART on FHIR framework with HealthLake, create a HealthLake data store with the
IdentityProviderConfiguration parameter specified in your
CreateFHIRDatastore request. In the IdentityProviderConfiguration parameter
you specify the following information:
-
Set the AuthorizationStrategy equal to
SMART_ON_FHIR_V1. -
Set the IdpLambdaArn equal to the ARN of the AWS Lambda you created to manage token decoding with your authorization server.
-
Define the Metadata elements specified in the authorization server as a JSON block. These metadata elements are returned in the Discovery Document.
-
Optional: Enable FineGrainedAuthorizationEnabled. Specify
Trueto use the Fine grained authorization provided by HealthLake
Note
After you create the data store, you can change its identity provider
configuration—including the AuthorizationStrategy,
IdpLambdaArn, Metadata, and
FineGrainedAuthorizationEnabled values—by using
UpdateFHIRDatastore. Updating the identity provider configuration replaces it in full,
so include every field you want to keep; any field you omit is cleared. Identity
provider updates take effect immediately and do not move the data store to the
UPDATING status. For more information, see Updating a HealthLake data store.
You can make a SMART on FHIR enabled data store using the AWS Command Line Interface (AWS CLI) or via one of the AWS supported SDKs. Creating a SMART on FHIR enabled HealthLake data store is not supported using the HealthLake console.
Using the AWS CLI to create a SMART on FHIR enabled HealthLake data store
You can use the following code example to create SMART on FHIR enabled HealthLake data
store using the AWS CLI. When creating a SMART on FHIR enabled HealthLake data store you must
specify the identity-provider-configuration parameter.
In the identity-provider-configuration parameter you can
optionally enable fine-grained authorization by setting
FineGrainedAuthorizationEnabled equal to True. To learn
more about Fine grained authorization, see Using fine-grained authorization with a SMART on FHIR enabled HealthLake data store. The example below contains a
special character \ to indicate line breaks or as an escape character. This
is for clarity.
aws healthlake create-fhir-datastore \ --regionus-east-1\ --datastore-name "your-data-store-name" \ --datastore-type-version R4 \ --preload-data-config PreloadDataType="SYNTHEA" \ --sse-configuration '{ "KmsEncryptionConfig": { \ "CmkType": "customer-managed-kms-key1", "KmsKeyId": "arn:aws:kms:us-east-1:your-account-id:key/your-key-id" } }' \ --identity-provider-configuration \ '{"AuthorizationStrategy": "SMART_ON_FHIR_V1", \ "FineGrainedAuthorizationEnabled":boolean-false-by-default, \ "IdpLambdaArn": "arn:aws:lambda:your-region:your-account-id:function:your-lambda-name", \ "Metadata": "{\"issuer\":\"https://ehr.example.com\",\"jwks_uri\":\"https://ehr.example.com/.well-known/jwks.json\",\"authorization_endpoint\":\"https://ehr.example.com/auth/authorize\",\"token_endpoint\":\"https://ehr.token.com/auth/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_basic\",\"foo\"],\"grant_types_supported\":[\"client_credentials\",\"foo\"],\"registration_endpoint\":\"https://ehr.example.com/auth/register\",\"scopes_supported\":[\"openid\",\"profile\",\"launch\"],\"response_types_supported\":[\"code\"],\"management_endpoint\":\"https://ehr.example.com/user/manage\",\"introspection_endpoint\":\"https://ehr.example.com/user/introspect\",\"revocation_endpoint\":\"https://ehr.example.com/user/revoke\",\"code_challenge_methods_supported\":[\"S256\"],\"capabilities\":[\"launch-ehr\",\"sso-openid-connect\",\"client-public\"]}"}'
When successful you get the following JSON response:
{ "DatastoreArn": "arn:aws:healthlake:your-region:111122223333:datastore/fhir/your-datastore-id", "DatastoreEndpoint": "https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/", "DatastoreId": "your-data-store-id", "DatastoreStatus": "data-store-creation-status" }