View a markdown version of this page

Memulai dengan SDK dan AWS CLI - AWS HealthLake

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memulai dengan SDK dan AWS CLI

Menginstal dan mengonfigurasi

Untuk petunjuk instalasi dan konfigurasi, lihat Menginstal AWS CLI.

Langkah 1: Buat profil transformasi

Mulai dari AWS Profil Pemula (hanya CCDA)

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"}}'

Mulai dari data sampel (hanya CSV)

Buat 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"}}'

Jalankan agen AI untuk membuat pemetaan YAML awal.

Memulai percakapan baru dengan agen untuk mendapatkan ID percakapan baru. Panggil API lagi, kali ini meneruskan ConversationId dari respons sebelumnya dan permintaan Anda yang sebenarnya. Untuk profil CSV, di sinilah agen menganalisis file sampel yang Anda berikan saat pembuatan dan menghasilkan pemetaan 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"}'

Lanjutkan percakapan dengan hal yang sama ConversationId untuk menyempurnakan pemetaan di beberapa belokan (misalnya, “Petakan kolom RACE_CD ke ekstensi FHIR”). Jika agen meminta Anda untuk mengkonfirmasi perubahan, tanggapi dengan “Type”: “confirmation_response”.

Mulai dari Pemetaan Lokal

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)..."}}}'

Klon dari Profil yang ada

aws healthlake create-data-transformation-profile \ --region us-east-1 \ --source-format CCDA \ --profile-name test-profile-clone \ --source '{"ExistingVersionedProfileId": {"ProfileId": "e41af4b891d6f9211b42b90435cf0cea", "Version": 0}}'

Respons:

{ "ProfileId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "Version": 0, "SourceFormat": "CCDA", "TargetFormat": "FHIR_R4", "ProfileName": "My CCDA Profile", "LastUpdatedAt": "2026-07-01T12:00:00Z" }

Profil dibuat dalam keadaan draf (versi 0).

Langkah 2: Sesuaikan Profil dengan agen AI (opsional)

Memulai percakapan baru dengan agen untuk mendapatkan ID percakapan baru. Panggil API lagi, kali ini melewati 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"}'

Respons:

{ "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" }

Lanjutkan percakapan dengan ConversationId yang dikembalikan:

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"

Langkah 3: Uji dengan konversi sinkronisasi (opsional)

Titik akhir konversi sinkronisasi adalah REST-only. Menguji profil terhadap dokumen sampel sebelum menerbitkan:

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 }'

Respons:

{ "TransformedData": "{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[...]}", "DriftReport": "{\"coverageRate\":0.95,\"unmappedElements\":[...]}" }
  • TransformedData: sumber daya FHIR yang dikonversi sebagai string Bundel JSON-encoded FHIR.

  • DriftReport: hadir hanya ketika DriftDetectionEnabled itu benar. Laporan JSON-encoded drift yang menunjukkan tingkat cakupan dan elemen sumber yang belum dipetakan.

catatan

ProvenanceEnabled defaultnya true. Sumber daya asal dihasilkan kecuali Anda secara eksplisit menetapkan "ProvenanceEnabled“: false dalam permintaan.

Untuk profil CSV, berikan masukan Anda sebagai peta nama tabel ke konten CSV. Setiap kunci masuk CsvInput harus cocok dengan TableName dalam konfigurasi pemetaan profil Anda:

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" } } }'

Untuk mengirim lebih dari satu tabel dalam satu permintaan, tambahkan entri ke 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,..." } } }

Respons:

{ "TransformedData": "{\"resourceType\":\"Bundle\",\"type\":\"transaction\",\"entry\":[...]}" }

Ingatlah hal berikut saat mengonversi masukan CSV:

  • Setiap kunci masuk CsvInput harus sama persis dengan TableName dalam konfigurasi pemetaan profil Anda. Pencocokan peka huruf besar/kecil.

  • Meneruskan konten CSV untuk setiap tabel sebagai string tunggal. Pisahkan baris dengan\n.

  • DriftDetectionEnabled tidak didukung untuk input CSV. Hilangkan atau atur ke false. Jika Anda mengaturnya ke true, permintaan gagal dengan a ValidationException.

Langkah 4: Publikasikan 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"

Penerbitan membuat versi yang tidak dapat diubah (v1). Draf Anda tetap dapat diedit, dan pekerjaan massal menggunakan versi terbaru yang diterbitkan secara otomatis.

Langkah 5: Konversi data ke FHIR

Agen Transformasi Data menawarkan 3 cara untuk mengonversi data sumber Anda ke FHIR R4.

1. Sinkronisasi konversi

Untuk 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 }'

Untuk 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. Menjalankan pekerjaan transformasi massal ke 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

Pantau pekerjaan:

# 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. Jalankan pekerjaan transformasi massal dan mengkonsumsi data ke datastore HealthLake

Untuk mengonversi file sumber dan memuat sumber daya FHIR yang dihasilkan langsung ke HealthLake datastore dalam satu langkah, gunakan StartFHIRImportJob API yang ada dengan bidang profil transformasi:

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)"

Ini memulai pekerjaan dua fase: pertama layanan mengonversi file sumber Anda menggunakan profil yang diterbitkan, kemudian menelan sumber daya FHIR yang dihasilkan ke datastore. Data segera dapat dikueri melalui FHIR REST API setelah penyerapan selesai.

Pantau pekerjaan:

aws healthlake describe-fhir-import-job \ --region us-west-2 \ --datastore-id "your-datastore-id" \ --job-id "returned-job-id"
catatan

Datastore harus dalam keadaan AKTIF. Asal diaktifkan secara default. Peran akses data memerlukan Amazon S3 dan AWS KMS izin yang sama seperti pekerjaan mandiri.