Creating a SMART on FHIR enabled HealthLake data store - AWS HealthLake

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 True to use the Fine grained authorization provided by HealthLake

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 \ --region us-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_credential\",\"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.your-region.amazonaws.com/datastore/your-datastore-id/r4/", "DatastoreId": "your-data-store-id", "DatastoreStatus": "data-store-creation-status" }