Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Commencer à utiliser le SDK et AWS CLI
Installation et configuration
Pour les instructions d'installation et de configuration, voir Installer le AWS CLI.
Étape 1 : Création d'un profil de transformation
Commencez à partir de AWS Profil de démarrage (CCDA uniquement)
aws healthlake create-data-transformation-profile \ --region us-west-2 \ --source-format CCDA \ --profile-name "My CCDA Profile" \ --source '{"StarterProfile": {"StarterProfileName": "ccda-starter-kit-v1"}}'
Commencez à partir d'exemples de données (CSV uniquement)
Créer un profil :
aws healthlake create-data-transformation-profile \ --region us-west-2 \ --source-format CSV \ --profile-name "Patient CSV Mapping" \ --source '{"SampleData": {"S3Uri": "s3://my-bucket/samples/patient-data.csv"}}'
Exécutez l'agent AI pour créer le mappage YAML initial.
Lancez une nouvelle conversation avec l'agent pour obtenir un nouvel identifiant de conversation. Appelez à nouveau l'API, en transmettant cette fois la réponse précédente et votre demande réelle. ConversationId Pour un profil CSV, c'est ici que l'agent analyse les exemples de fichiers que vous avez fournis lors de la création et génère le mappage YAML :
aws healthlake update-profile-with-agent \ --region us-west-2 \ --profile-id "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \ --source-format CSV \ --conversation-id "00154593-c867-4e4c-b870-25fb5237e54f" \ --input-message '{"Body": "Generate a profile to convert my CSVs into FHIR.", "Type": "normal"}'
Poursuivez la conversation avec la même méthode ConversationId pour affiner le mappage sur plusieurs tours (par exemple, « Associez la colonne RACE_CD à une extension FHIR »). Si l'agent vous demande de confirmer une modification, répondez par « Type » : « confirmation_response ».
Commencez à partir de la cartographie locale
aws healthlake create-data-transformation-profile \ --region us-west-2 \ --source-format CCDA \ --profile-name "CI/CD Profile" \ --source '{"ProfileMapping": {"ProfileMapping": {"Resources/Patient.vm": "#set($patient = $input)..."}}}'
Cloner à partir d'un profil existant
aws healthlake create-data-transformation-profile \ --region us-east-1 \ --source-format CCDA \ --profile-name test-profile-clone \ --source '{"ExistingVersionedProfileId": {"ProfileId": "e41af4b891d6f9211b42b90435cf0cea", "Version": 0}}'
Réponse :
{ "ProfileId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "Version": 0, "SourceFormat": "CCDA", "TargetFormat": "FHIR_R4", "ProfileName": "My CCDA Profile", "LastUpdatedAt": "2026-07-01T12:00:00Z" }
Le profil est créé à l'état de brouillon (version 0).
Étape 2 : Personnaliser le profil avec l'agent AI (facultatif)
Lancez une nouvelle conversation avec l'agent pour obtenir un nouvel identifiant de conversation. Appelez à nouveau l'API, en passant cette fois le ConversationId
aws healthlake update-profile-with-agent \ --region us-west-2 \ --profile-id "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \ --source-format CCDA \ --conversation-id "conv-a1b2c3d4-e5f6-7890" \ --input-message '{"Body": "Add a mapping for Medication resources", "Type": "normal"}'
Réponse :
{ "chatOutput": { "body": "I can help you add a Medication resource mapping. Which CCDA section should I map from?", "type": "options", "optionsList": ["Medications Section", "Discharge Medications", "Immunizations"] }, "conversationId": "conv-a1b2c3d4-e5f6-7890" }
Poursuivez la conversation avec le ConversationID renvoyé :
aws healthlake update-profile-with-agent \ --region us-west-2 \ --profile-id "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \ --source-format CCDA \ --input-message '{"body": "Medications Section", "type": "confirmation_response"}' \ --conversation-id "conv-a1b2c3d4-e5f6-7890"
Étape 3 : Test avec conversion synchronisée (facultatif)
Le point de terminaison de conversion de synchronisation est REST-only. Testez un profil par rapport à un exemple de document avant de le publier :
curl -X POST "https://datatransformation.healthlake.us-west-2.amazonaws.com/transform-data" \ --aws-sigv4 "aws:amz:us-west-2:healthlake" \ --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \ -H "x-amz-security-token: ${AWS_SESSION_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "ProfileId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "InputData": {"CcdaInput": "<?xml version=\"1.0\"?><ClinicalDocument>...</ClinicalDocument>"}, "DriftDetectionEnabled": true }'
Réponse :
{ "TransformedData": "{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[...]}", "DriftReport": "{\"coverageRate\":0.95,\"unmappedElements\":[...]}" }
-
TransformedData: les ressources FHIR converties sous forme de chaîne JSON-encoded FHIR Bundle.
-
DriftReport: présent uniquement lorsque DriftDetectionEnabled c'est vrai. Rapport de JSON-encoded dérive indiquant le taux de couverture et les éléments sources non mappés.
Note
ProvenanceEnabled La valeur par défaut est true. Les ressources de provenance sont générées à moins que vous ne ProvenanceEnabled définissiez explicitement « : false » dans la demande.
Pour un profil CSV, transmettez votre saisie sous forme de carte des noms de tables au contenu CSV. Chaque entrée CsvInput doit correspondre à un TableName dans la configuration de mappage de votre profil :
curl -X POST "https://datatransformation.healthlake.us-west-2.amazonaws.com/transform-data" \ --aws-sigv4 "aws:amz:us-west-2:healthlake" \ --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \ -H "x-amz-security-token: ${AWS_SESSION_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "ProfileId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "InputData": { "CsvInput": { "patients": "PAT_ID,MRN,LAST_NM,FIRST_NM,SEX,DOB,ZIP\nP001,MRN-001,Smith,John,M,1985-03-15,98101\nP002,MRN-002,Garcia,Maria,F,1990-07-22,90210" } } }'
Pour envoyer plusieurs tables en une seule demande, ajoutez des entrées à CsvInput :
{ "ProfileId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "InputData": { "CsvInput": { "patients": "PAT_ID,MRN,LAST_NM,...\nP001,MRN-001,Smith,...", "encounters": "ENC_ID,PAT_ID,ENC_DATE,...\nE001,P001,2024-01-15,..." } } }
Réponse :
{ "TransformedData": "{\"resourceType\":\"Bundle\",\"type\":\"transaction\",\"entry\":[...]}" }
Lorsque vous convertissez une entrée CSV, tenez compte des points suivants :
-
Chaque entrée CsvInput doit correspondre exactement à un TableName dans la configuration de mappage de votre profil. La correspondance fait la distinction majuscules/minuscules.
-
Transmettez le contenu CSV de chaque tableau sous forme de chaîne unique. Séparez les lignes par
\n. -
DriftDetectionEnabled n'est pas pris en charge pour la saisie CSV. Omettez-le ou définissez-le sur false. Si vous le définissez sur true, la demande échoue avec un ValidationException.
Étape 4 : Publier le profil
aws healthlake publish-data-transformation-profile \ --region us-west-2 \ --profile-id "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \ --source-format CCDA \ --change-description "Initial release - Patient, Observation, Medication mappings"
La publication crée une version immuable (v1). Votre brouillon reste modifiable et les tâches groupées utilisent automatiquement la dernière version publiée.
Étape 5 : Convertir les données en FHIR
L'agent de transformation des données propose trois méthodes pour convertir vos données sources au format FHIR R4.
1. Synchroniser la conversion
Pour un C-CDA profil :
curl -X POST "https://datatransformation.healthlake.us-west-2.amazonaws.com/transform-data" \ --aws-sigv4 "aws:amz:us-west-2:healthlake" \ --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \ -H "x-amz-security-token: ${AWS_SESSION_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "ProfileId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "InputData": {"CcdaInput": "<?xml version=\"1.0\"?><ClinicalDocument>...</ClinicalDocument>"}, "DriftDetectionEnabled": true }'
Pour un profil CSV :
curl -X POST "https://datatransformation.healthlake.us-west-2.amazonaws.com/transform-data" \ --aws-sigv4 "aws:amz:us-west-2:healthlake" \ --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \ -H "x-amz-security-token: ${AWS_SESSION_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "ProfileId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "InputData": { "CsvInput": { "patients": "PAT_ID,MRN,LAST_NM,FIRST_NM,SEX,DOB,ZIP\nP001,MRN-001,Smith,John,M,1985-03-15,98101" } } }'
2. Exécuter une tâche de transformation en masse vers Amazon S3
aws healthlake start-data-transformation-job \ --region us-west-2 \ --profile-id "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \ --input-data-config '{"S3Uri": "s3://my-source-bucket/ccda-files/", "SourceFormat": "CCDA"}' \ --output-data-config '{"S3Configuration": {"S3Uri": "s3://my-output-bucket/fhir-output/", "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/abcd1234"}}' \ --data-access-role-arn "arn:aws:iam::123456789012:role/DTA-DataAccessRole" \ --client-token "unique-token-$(date +%s)" \ --job-name "cardiology-batch-july" \ --drift-detection-enabled
Surveillez le travail :
# Check status aws healthlake describe-data-transformation-job \ --region us-west-2 \ --job-id "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" # List recent completed jobs aws healthlake list-data-transformation-jobs \ --region us-west-2 \ --job-status COMPLETED \ --submitted-after "2026-07-01T00:00:00Z"
3. Exécutez une tâche de transformation en bloc et intégrez-la dans une HealthLake banque de données
Pour convertir les fichiers source et charger les ressources FHIR qui en résultent directement dans une HealthLake banque de données en une seule étape, utilisez l' StartFHIRImportJob API existante avec les champs du profil de transformation :
aws healthlake start-fhir-import-job \ --region us-west-2 \ --datastore-id "your-datastore-id" \ --input-data-config '{"S3Uri": "s3://my-source-bucket/ccda-files/"}' \ --job-output-data-config '{"S3Configuration": {"S3Uri": "s3://my-output-bucket/import-output/", "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/abcd1234"}}' \ --data-access-role-arn "arn:aws:iam::123456789012:role/DTA-DataAccessRole" \ --profile-id "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \ --input-format "CCDA" \ --drift-detection-enabled \ --job-name "cardiology-import-july" \ --client-token "import-$(date +%s)"
Cela démarre une tâche en deux phases : le service convertit d'abord vos fichiers sources à l'aide du profil publié, puis il ingère les ressources FHIR qui en résultent dans la banque de données. Les données sont immédiatement consultables via l'API REST FHIR une fois l'ingestion terminée.
Surveillez le travail :
aws healthlake describe-fhir-import-job \ --region us-west-2 \ --datastore-id "your-datastore-id" \ --job-id "returned-job-id"
Note
La banque de données doit être à l'état ACTIF. La provenance est activée par défaut. Le rôle d'accès aux données nécessite le même Amazon S3 et AWS KMS les mêmes autorisations que les tâches autonomes.