Creating a HealthLake data store
Use CreateFHIRDatastore
to create an AWS HealthLake data store conformant to the FHIR R4
specification. HealthLake data stores are used for importing, managing, searching, and exporting
FHIR data. You can choose to import (preload) Synthea open source FHIR R4 health data into
your data store when you create it. For more information, see Preloaded data
types.
HealthLake supports two types of FHIR data store authorization strategies, AWS SigV4 or
SMART on FHIR. You must choose one of the authorization strategies prior to creating a HealthLake
FHIR data store. For more information, see Data store authorization
strategy.
When you create a HealthLake data store, a FHIR data repository is made available via a RESTful
API endpoint. After you've created your
HealthLake data store, you can request its Capability Statement to find all associated FHIR-related capabilities (behaviors).
The following menus provide examples for the AWS CLI and AWS SDKs and a procedure for the
AWS Management Console. For more information, see CreateFHIRDatastore
in the AWS HealthLake API Reference.
To create a HealthLake data store
Choose a menu based on your access preference to AWS HealthLake.
- CLI
-
- AWS CLI
-
To create a FHIR Data Store.
The following create-fhir-datastore
example demonstrates how to create a new Data Store in Amazon HealthLake.
aws healthlake create-fhir-datastore \
--region us-east-1
\
--datastore-type-version R4
\
--datastore-type-version R4
\
--datastore-name "FhirTestDatastore"
Output:
{
"DatastoreEndpoint": "https://healthlake.us-east-1.amazonaws.com/datastore/(Datastore ID)/r4/",
"DatastoreArn": "arn:aws:healthlake:us-east-1:(AWS Account ID):datastore/(Datastore ID)",
"DatastoreStatus": "CREATING",
"DatastoreId": "(Datastore ID)"
}
For more information, see Creating and monitoring a FHIR Data Store in the Amazon HealthLake Developer Guide.
- Python
-
- SDK for Python (Boto3)
-
@classmethod
def from_client(cls) -> "HealthLakeWrapper":
"""
Creates a HealthLakeWrapper instance with a default AWS HealthLake client.
:return: An instance of HealthLakeWrapper initialized with the default HealthLake client.
"""
health_lake_client = boto3.client("healthlake")
return cls(health_lake_client)
def create_fhir_datastore(
self,
datastore_name: str,
sse_configuration: dict[str, any] = None,
identity_provider_configuration: dict[str, any] = None,
) -> dict[str, str]:
"""
Creates a new HealthLake data store.
When creating a SMART on FHIR data store, the following parameters are required:
- sse_configuration: The server-side encryption configuration for a SMART on FHIR-enabled data store.
- identity_provider_configuration: The identity provider configuration for a SMART on FHIR-enabled data store.
:param datastore_name: The name of the data store.
:param sse_configuration: The server-side encryption configuration for a SMART on FHIR-enabled data store.
:param identity_provider_configuration: The identity provider configuration for a SMART on FHIR-enabled data store.
:return: A dictionary containing the data store information.
"""
try:
parameters = {"DatastoreName": datastore_name, "DatastoreTypeVersion": "R4"}
if (
sse_configuration is not None
and identity_provider_configuration is not None
):
# Creating a SMART on FHIR-enabled data store
parameters["SseConfiguration"] = sse_configuration
parameters[
"IdentityProviderConfiguration"
] = identity_provider_configuration
response = self.health_lake_client.create_fhir_datastore(**parameters)
return response
except ClientError as err:
logger.exception(
"Couldn't create data store %s. Here's why %s",
datastore_name,
err.response["Error"]["Message"],
)
raise
The following code shows an example of parameters for a SMART on FHIR-enabled HealthLake data store.
sse_configuration = {
"KmsEncryptionConfig": {"CmkType": "AWS_OWNED_KMS_KEY"}
}
# TODO: Update the metadata to match your environment.
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",
],
}
# TODO: Update the IdpLambdaArn.
identity_provider_configuration = {
"AuthorizationStrategy": "SMART_ON_FHIR_V1",
"FineGrainedAuthorizationEnabled": True,
"IdpLambdaArn": "arn:aws:lambda:your-region:your-account-id:function:your-lambda-name",
"Metadata": json.dumps(metadata),
}
data_store = self.create_fhir_datastore(
datastore_name, sse_configuration, identity_provider_configuration
)
Can't find what you need? Request a code example using the Provide
feedback link on the right sidebar of this page.
The following procedure creates a HealthLake data store with AWS SigV4 authorization. The
HealthLake Console does not support the creation of a SMART on FHIR data store.
To create a HealthLake data store with AWS SigV4 authorization
-
Sign in to the Create data store page on the HealthLake Console.
-
Choose Create Data Store.
-
In the Data Store settings section, for Data Store
name, specify a name.
-
(Optional) In the Data Store settings section, for
Preload sample data, select the check box to preload Synthea
data. Synthea data is an open-source sample dataset. For more information, see Synthea preloaded data types for
HealthLake.
-
In the Data Store encryption section, choose either
Use AWS owned key (default) or Choose a different AWS
KMS key (advanced).
-
In the Tags - optional section, you can
add tags to your data store. To learn more about tagging your data store, see Tagging HealthLake data stores.
-
Choose Create Data Store.
The status of your data store is available on the Data stores
page.