בדף הזה מוסבר איך לייצא ולייבא משאבי FHIR אל Cloud Storage וממנו באמצעות השיטות projects.locations.datasets.fhirStores.import ו-projects.locations.datasets.fhirStores.export.
בהתאם לפורמט של נתוני FHIR, כדי לטעון נתונים למאגר FHIR, אפשר להשתמש בשיטה projects.locations.datasets.fhirStores.import או בשיטה projects.locations.datasets.fhirStores.fhir.executeBundle. הנחיות לבחירת שיטה זמינות במאמר בנושא ייבוא FHIR.
הגדרת הרשאות ב-Cloud Storage
לפני שמייצאים ומייבאים משאבי FHIR אל Cloud Storage וממנו, צריך להעניק הרשאות נוספות לחשבון השירות של סוכן Cloud Healthcare Service. מידע נוסף זמין במאמר בנושא הרשאות Cloud Storage למאגר FHIR.
יצירת נתוני מטופלים מסימולציה
Synthea™ הוא סימולטור ליצירת נתונים של אוכלוסיית מטופלים. אם אתם לא משתמשים ב-Synthea™ כדי ליצור נתונים של אוכלוסיית מטופלים, דלגו אל ייבוא משאבי FHIR או אל ייצוא משאבי FHIR.
אפשר לייבא נתונים רק בגרסה שהוגדרה בחנות FHIR שלכם.
כדי להוריד ולהתקין את Synthea™, מבצעים את השלבים הבאים:
משכפלים את מאגר הכלים Synthea™ מ-GitHub:
git clone https://github.com/synthetichealth/synthea.gitמשלימים את שלבי ההתקנה.
כדי ליצור נתונים לגרסה ספציפית של FHIR, ממשיכים לאחד מהקטעים הבאים:
יצירת נתוני מטופלים בסימולציה עבור R4
כברירת מחדל, נתוני Synthea™ שנוצרו משתמשים בייצוג JSON של FHIR R4 למשאבים. כדי ליצור נתונים בפורמט Synthea™ FHIR R4 ולייבא אותם למאגר FHIR של Cloud Healthcare API, מבצעים את השלבים הבאים:
פועלים לפי ההוראות ליצירת נתוני מטופלים סינתטיים. הפלט של הנתונים שנוצרו הוא
synthea/output/fhir_r4עבור FHIR R4.מעתיקים את הנתונים שנוצרו לקטגוריה של Cloud Storage כדי שתוכלו לייבא אותם למאגר FHIR של Cloud Healthcare API. לדוגמה, כדי להעתיק את הנתונים לספרייה בשם
synthea-dataבקטגוריה של Cloud Storage קיימת, מריצים את הפקודה הבאהgcloud storage cpמהספרייהsynthea:gcloud storage cp output/fhir_r4/* gs://BUCKET/synthea-data
פועלים לפי ההוראות לייבוא משאבי FHIR.
יצירת נתוני מטופלים מסימולציה עבור DSTU2 או STU3
כדי ליצור נתוני Synthea™ FHIR DSTU2 או STU3 ולייבא אותם למאגר FHIR של Cloud Healthcare API, מבצעים את השלבים הבאים:
בספרייה
synthea, משתמשים בכלי לעריכת טקסט כדי לפתוח את הקובץsrc/main/resources/synthea.propertiesומבצעים את השינויים הבאים, בהתאם לסוג הנתונים שאתם יוצרים (DSTU2 או STU3).כדי ליצור נתוני FHIR STU3:
- מגדירים את כל הערכים של
*.fhir.exportו-*.fhir_dstu2.exportל-false - הגדרת כל הערכים של
*.fhir_stu3.exportכ-true
כדי ליצור נתוני FHIR DSTU2:
- מגדירים את כל הערכים של
*.fhir.exportו-*.fhir_stu3.exportל-false - הגדרת כל הערכים של
*.fhir_dstu2.exportכ-true
לדוגמה, כדי ליצור נתוני FHIR STU3:
exporter.fhir.export = false exporter.fhir_stu3.export = true exporter.fhir_dstu2.export = false exporter.hospital.fhir.export = false exporter.hospital.fhir_stu3.export = true exporter.hospital.fhir_dstu2.export = false exporter.practitioner.fhir.export = false exporter.practitioner.fhir_stu3.export = true exporter.practitioner.fhir_dstu2.export = false
- מגדירים את כל הערכים של
פועלים לפי ההוראות ליצירת נתוני מטופלים סינתטיים. הפלט של הנתונים שנוצר מועבר אל
synthea/output/fhir_stu3עבור FHIR STU3 או אל הספרייהsynthea/output/fhir_dstu2עבור FHIR DSTU2.מעתיקים את הנתונים שנוצרו לקטגוריה של Cloud Storage כדי שתוכלו לייבא אותם למאגר FHIR של Cloud Healthcare API. לדוגמה, כדי להעתיק את הנתונים לספרייה בשם
synthea-dataבקטגוריה של Cloud Storage קיימת, מריצים את הפקודה הבאהgcloud storage cpמהספרייהsynthea:gcloud storage cp output/fhir_stu3/* gs://BUCKET/synthea-data
פועלים לפי ההוראות לייבוא משאבי FHIR.
ייבוא משאבי FHIR
כשמגדירים את גוף בקשת הייבוא, צריך להגדיר את הערך של ContentStructure לאחד מהערכים הבאים:
CONTENT_STRUCTURE_UNSPECIFIED-
BUNDLE: קובץ המקור מכיל שורה אחת או יותר של JSON שמופרד בתו שורה חדשה (ndjson). כל שורה היא חבילה שמכילה משאב אחד או יותר. אם לא מציינים אתContentStructure, ברירת המחדל היאBUNDLE. -
RESOURCE: קובץ המקור מכיל שורה אחת או יותר של JSON (ndjson) עם תווי מעבר שורה כמפריד. כל שורה היא משאב יחיד. -
BUNDLE_PRETTY: קובץ המקור כולו הוא חבילת JSON אחת. קובץ ה-JSON יכול לכלול כמה שורות. -
RESOURCE_PRETTY: קובץ המקור כולו הוא משאב JSON אחד. קובץ ה-JSON יכול לכלול כמה שורות.
לדוגמה, נניח שאתם מייבאים קובץ בשם resources.ndjson עם התוכן הבא:
{"class":{"code":"IMP","display":"inpatient encounter","system":"http://hl7.org/fhir/v3/ActCode"},"id":"6090e773-3e91-40a7-8fce-1e22f6774c29","reason":[{"text":"The patient had an abnormal heart rate. She was concerned about this."}],"resourceType":"Encounter","status":"finished","subject":{"reference":"Patient/2938bb9e-1f16-429e-8d44-9508ab0e4151"}}
{"class":{"code":"IMP","display":"inpatient encounter","system":"http://hl7.org/fhir/v3/ActCode"},"id":"7101f884-4f02-51b8-9gdf-2f33g7885d30","reason":[{"text":"The patient was experiencing recurrent fevers."}],"resourceType":"Encounter","status":"finished","subject":{"reference":"Patient/3049cc0f-2g27-530f-9e55-0619bc1f5262"}}
{"birthDate":"1970-01-01","gender":"female","id":"2938bb9e-1f16-429e-8d44-9508ab0e4151","name":[{"family":"Smith","given":["Darcy"],"use":"official"}],"resourceType":"Patient"}
הקובץ מכיל שני משאבי Encounter ומשאב Patient אחד. כל
משאב נמצא בשורה נפרדת, ולכן מגדירים את ContentStructure לערך
RESOURCE.
יכול להיות שהנתונים יובאו בצורה שגויה או שלא יובאו בכלל אם ContentStructure
לא תואם לפורמט של הנתונים. לדוגמה, לא ניתן לייבא את קובץ הדוגמה שלמעלה בצורה תקינה אלא אם הערך של ContentStructure מוגדר כ-RESOURCE בבקשת הייבוא.
בדוגמאות הבאות מוצגות דרכים לייבא משאבי FHIR מקטגוריה של Cloud Storage.
המסוף
כדי לייבא משאבי FHIR מקטגוריית Cloud Storage, מבצעים את השלבים הבאים:
- נכנסים לדף Datasets במסוף Google Cloud .
מעבר לדף Datasets - לוחצים על מערך הנתונים שמכיל את מאגר ה-FHIR שאליו מייבאים משאבי FHIR.
- ברשימת מאגרי הנתונים, בוחרים באפשרות ייבוא מתוך הרשימה פעולות של מאגר FHIR.
מופיע הדף ייבוא למאגר FHIR. - ברשימה Project, בוחרים פרויקט של Cloud Storage.
- ברשימה מיקום, בוחרים קטגוריה של Cloud Storage.
- בקטע FHIR import settings (הגדרות ייבוא של FHIR), בוחרים את מבנה התוכן הרלוונטי.
- לוחצים על ייבוא כדי לייבא משאבי FHIR.
- כדי לעקוב אחרי סטטוס הפעולה, לוחצים על הכרטיסייה פעולות. אחרי שהפעולה מסתיימת, מופיעים הסימנים הבאים:
- בקטע Long-running operation status (סטטוס של פעולה ממושכת) מופיע סימן וי ירוק מתחת לכותרת OK.
- בקטע סקירה כללית מופיעים סימן וי ירוק והאינדיקטור OK באותה שורה של מזהה הפעולה.
gcloud
כדי לייבא משאבי FHIR למאגר FHIR, משתמשים בפקודה gcloud healthcare fhir-stores import gcs. מציינים את הפרטים הבאים:
- השם של קבוצת הנתונים הראשית
- השם של מאגר FHIR
- המיקום של האובייקט בקטגוריה של Cloud Storage. המיקום של הקבצים בתוך הדלי הוא שרירותי, והוא לא חייב להיות זהה לפורמט שמופיע בדוגמה הבאה. כשמציינים את המיקום של משאבי FHIR ב-Cloud Storage, אפשר להשתמש בתווים כלליים כדי לייבא כמה קבצים מספרייה אחת או מכמה ספריות.
יש תמיכה בתווים הכלליים לחיפוש הבאים:
- משתמשים ב-
*כדי להתאים 0 או יותר תווים שאינם מפרידים. לדוגמה,gs://BUCKET/DIRECTORY/Example*.ndjsonתואם לקבצים Example.ndjson ו-Example22.ndjson ב-DIRECTORY. - משתמשים ב-
**כדי להתאים 0 תווים או יותר (כולל מפרידים). חובה להשתמש בו בסוף הנתיב, בלי תווים כלליים אחרים בנתיב. אפשר להשתמש גם בסיומת של שם קובץ (כמו .ndjson), כדי לייבא את כל הקבצים עם הסיומת של שם הקובץ בספרייה שצוינה ובספריות המשנה שלה. לדוגמה, הפקודהgs://BUCKET/DIRECTORY/**.ndjsonמייבאת את כל הקבצים עם סיומת שם הקובץ .ndjson בתיקייה DIRECTORY ובתיקיות המשנה שלה. - כדי להתאים תו אחד, משתמשים ב-
?. לדוגמה, gs://BUCKET/DIRECTORY/Example?.ndjsonתואם ל- Example1.ndjson אבל לא תואם ל-Example.ndjson או ל-Example01.ndjson.
- משתמשים ב-
בדוגמה הבאה אפשר לראות את הפקודה gcloud healthcare fhir-stores import gcs.
gcloud healthcare fhir-stores import gcs FHIR_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri=gs://BUCKET/DIRECTORY/FHIR_RESOURCE_NAME.ndjson
כדי לציין את המבנה של קובצי המקור של FHIR, משתמשים בדגל --content-structure.
בשורת הפקודה מוצג מזהה הפעולה, ואחרי שהפעולה מסתיימת,
done:
Request issued for: [FHIR_STORE_ID] Waiting for operation [OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
כדי לראות פרטים נוספים על הפעולה, מריצים את הפקודה
gcloud healthcare operations describe ומזינים את הערך OPERATION_ID מהתשובה:
gcloud healthcare operations describe OPERATION_ID \ --dataset=DATASET_ID
התשובה כוללת את done: true.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.fhir.FhirService.ImportResources createTime: 'CREATE_TIME' endTime: 'END_TIME' logsUrl: https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL, counter: success: 'SUCCESS_COUNT' name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID response: '@type': type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse fhirStore: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
API
כדי לייבא משאבי FHIR למאגר FHIR, משתמשים בשיטה projects.locations.datasets.fhirStores.import.
- המיקום של הקבצים בתוך הדלי הוא שרירותי, והוא לא חייב להיות בדיוק בפורמט שמופיע בדוגמאות הבאות.
- כשמציינים את המיקום של משאבי FHIR ב-Cloud Storage, אפשר להשתמש בתווים כלליים כדי לייבא כמה קבצים מספרייה אחת או יותר.
יש תמיכה בתווים הכלליים לחיפוש הבאים:
- משתמשים ב-
*כדי להתאים 0 או יותר תווים שאינם מפרידים. לדוגמה,gs://BUCKET/DIRECTORY/Example*.ndjsonתואם לקבצים Example.ndjson ו-Example22.ndjson ב-DIRECTORY. - משתמשים ב-
**כדי להתאים 0 תווים או יותר (כולל מפרידים). חובה להשתמש בו בסוף הנתיב, בלי תווים כלליים אחרים בנתיב. אפשר להשתמש גם בסיומת של שם קובץ (כמו .ndjson), כדי לייבא את כל הקבצים עם הסיומת של שם הקובץ בספרייה שצוינה ובספריות המשנה שלה. לדוגמה, הפקודהgs://BUCKET/DIRECTORY/**.ndjsonמייבאת את כל הקבצים עם סיומת שם הקובץ .ndjson בתיקייה DIRECTORY ובתיקיות המשנה שלה. - כדי להתאים תו אחד, משתמשים ב-
?. לדוגמה, gs://BUCKET/DIRECTORY/Example?.ndjsonתואם ל- Example1.ndjson אבל לא תואם ל-Example.ndjson או ל-Example01.ndjson.
- משתמשים ב-
curl
כדי לייבא משאבי FHIR למאגר FHIR, שולחים בקשת POST ומציינים את הפרטים הבאים:
- השם של קבוצת הנתונים הראשית
- השם של מאגר FHIR
- המיקום של האובייקט בקטגוריה של Cloud Storage
- טוקן גישה
בדוגמה הבאה אפשר לראות איך מייבאים קובץ יחיד באמצעות בקשת POST באמצעות curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'contentStructure': 'CONTENT_STRUCTURE', 'gcsSource': { 'uri': 'gs://BUCKET/DIRECTORY/FHIR_RESOURCE_FILE' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import"
אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, אפשר להשתמש ב-method Operation get:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
אם הבקשה מצליחה, השרת מחזיר תגובה עם סטטוס הפעולה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ImportResources",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
}
}
PowerShell
כדי לייבא משאבי FHIR למאגר FHIR, שולחים בקשת POST ומציינים את הפרטים הבאים:
- השם של קבוצת הנתונים הראשית
- השם של מאגר FHIR
- המיקום של האובייקט בקטגוריה של Cloud Storage
- טוקן גישה
בדוגמה הבאה מוצגת בקשת POST באמצעות Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'contentStructure': 'CONTENT_STRUCTURE', 'gcsSource': { 'uri': 'gs://BUCKET/DIRECTORY/FHIR_RESOURCE_FILE' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, אפשר להשתמש ב-method Operation get:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר תגובה עם סטטוס הפעולה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ImportResources",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
}
}
Go
Java
Node.js
Python
ייצוא משאבי FHIR
בדוגמאות הבאות מוסבר איך לייצא משאבי FHIR לקטגוריה של Cloud Storage. כשמייצאים משאבי FHIR מחנות FHIR, כל המשאבים בחנות FHIR מיוצאים.
אם אתם מייצאים משאבי FHIR לפי לוח זמנים, כדאי לייצא את הנתונים באופן מצטבר. הוראות מפורטות מופיעות במאמר ייצוא מצטבר.
במהלך הייצוא, Cloud Healthcare API יוצר קובץ אחד לכל סוג משאב ממאגר FHIR. שם הקובץ מורכב ממזהה הפעולה ומסוג המשאב, מופרדים באמצעות קו תחתון. כל קובץ מורכב מ-JSON מופרד בשורות חדשות, כאשר כל שורה היא משאב FHIR שמתאים לסוג המשאב בשם הקובץ. לדוגמה, אם מייצאים כמה רשומות של מטופלים, קובץ הפלט ייקרא בשם שדומה ל-1264567891234567_Patient ויכיל שורה לכל משאב Patient ממאגר ה-FHIR.
המסוף
כדי לייצא משאבי FHIR ל-Cloud Storage:
- נכנסים לדף Datasets במסוף Google Cloud .
מעבר לדף Datasets - לוחצים על מערך הנתונים שמכיל את מאגר ה-FHIR שממנו מייצאים משאבי FHIR.
- ברשימת מאגרי הנתונים, בוחרים באפשרות ייצוא מתוך הרשימה פעולות של מאגר FHIR.
מוצג הדף ייצוא משאבי FHIR. - בוחרים באפשרות Google Cloud Storage Bucket (קטגוריה של Google Cloud Storage).
- ברשימה Project, בוחרים פרויקט של Cloud Storage.
- ברשימה מיקום, בוחרים קטגוריה של Cloud Storage.
- לוחצים על ייצוא כדי לייצא משאבי FHIR למיקום שהוגדר ב-Cloud Storage.
- כדי לעקוב אחרי סטטוס הפעולה, לוחצים על הכרטיסייה פעולות. אחרי שהפעולה מסתיימת, מופיעים הסימנים הבאים:
- בקטע Long-running operation status (סטטוס של פעולה ממושכת) מופיע סימן וי ירוק מתחת לכותרת OK.
- בקטע סקירה כללית מופיעים סימן וי ירוק והאינדיקטור OK באותה שורה של מזהה הפעולה.
gcloud
כדי לייצא משאבי FHIR לקטגוריה של Cloud Storage, משתמשים בפקודה gcloud healthcare fhir-stores export gcs. מציינים את הפרטים הבאים:
- השם של קבוצת הנתונים הראשית
- השם של מאגר FHIR
- שם הפרויקט הראשי
- קטגוריית היעד או הספרייה ב-Cloud Storage. כדאי לכתוב לקטגוריה של Cloud Storage או לספרייה, ולא לאובייקט, כי Cloud Healthcare API יוצר אובייקט אחד לכל סוג משאב. כל אובייקט מורכב מ-JSON שמופרד בתו שורה חדשה, כאשר כל שורה היא משאב FHIR. אם מציינים ספרייה שלא קיימת, היא נוצרת.
- דגל אופציונלי,
--resource-type, שמייצא רק סוגים ספציפיים של משאבים, שמוגדרים כרשימה מופרדת בפסיקים של סוג משאב FHIR אחד או יותר - דגל אופציונלי,
--since, שמייצא רק משאבים שעודכנו אחרי שעה מסוימת, שמוגדרת כ-YYYY-MM-DDThh:mm:ss.sss+zz:zz
בדוגמה הבאה אפשר לראות את הפקודה gcloud healthcare fhir-stores export gcs.
gcloud healthcare fhir-stores export gcs FHIR_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --project=PROJECT_ID --gcs-uri=gs://BUCKET/DIRECTORY
מזהה הפעולה מוצג בשורת הפקודה:
Waiting for operation [OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
כדי לראות את סטטוס הפעולה, מריצים את הפקודה gcloud healthcare operations describe ומזינים את הערך OPERATION_ID מהתגובה:
gcloud healthcare operations describe OPERATION_ID \ --dataset=DATASET_ID
אחרי שהפקודה מסתיימת, התשובה כוללת את done.
metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.fhir.FhirService.ExportFhirData createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ExportResourcesResponse fhirStore: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID resourceCount: 'RESOURCE_COUNT'
API
כדי לייצא משאבי FHIR, משתמשים בשיטה projects.locations.datasets.fhirStores.export.
- כדאי לכתוב לקטגוריה של Cloud Storage או לספרייה, ולא לאובייקט, כי Cloud Healthcare API יוצר קובץ JSON אחד עם תווי שורה כמפרידים לכל סוג משאב. בכל קובץ JSON, כל שורה היא משאב FHIR.
- אם הפקודה מציינת ספרייה שלא קיימת, הספרייה נוצרת.
curl
כדי לייצא משאבי FHIR, שולחים בקשת POST ומציינים את הפרטים הבאים:
- השם של קבוצת הנתונים הראשית
- השם של מאגר FHIR
- קטגוריית היעד של Cloud Storage
- טוקן גישה
- שדה אופציונלי,
_type, שמייצא רק סוגים ספציפיים של משאבים, שמוגדרים כרשימה מופרדת בפסיקים של סוג משאב FHIR אחד או יותר - שדה אופציונלי,
_since, שמייצא רק משאבים שעודכנו אחרי שעה מסוימת, שמוגדרת כ-YYYY-MM-DDThh:mm:ss.sss+zz:zz
בדוגמה הבאה מוצגת בקשת POST באמצעות curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export"
אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, אפשר להשתמש ב-method Operation get:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
אם הבקשה מצליחה, השרת מחזיר תשובה עם סטטוס הפעולה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ExportResources",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ExportResourcesResponse",
}
}
PowerShell
כדי לייצא משאבי FHIR, שולחים בקשת POST ומציינים את הפרטים הבאים:
- השם של קבוצת הנתונים הראשית
- השם של מאגר FHIR
- קטגוריית היעד או הספרייה ב-Cloud Storage. כדאי לכתוב לקטגוריה של Cloud Storage או לספרייה, ולא לאובייקט, כי Cloud Healthcare API יוצר אובייקט אחד לכל סוג משאב. כל אובייקט מורכב מ-JSON שמופרד בתו שורה חדשה, כאשר כל שורה היא משאב FHIR.
- טוקן גישה
- שדה אופציונלי,
_type, שמייצא רק סוגים ספציפיים של משאבים, שמוגדרים כרשימה מופרדת בפסיקים של סוג משאב FHIR אחד או יותר - שדה אופציונלי,
_since, שמייצא רק משאבים שעודכנו אחרי שעה מסוימת, שמוגדרת כ-YYYY-MM-DDThh:mm:ss.sss+zz:zz
בדוגמה הבאה מוצגת בקשת POST באמצעות Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:export" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, אפשר להשתמש ב-method Operation get:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר תגובה עם סטטוס הפעולה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ExportResources",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ExportResourcesResponse",
}
}
Go
Java
Node.js
Python
ייצוא מצטבר
אפשר לציין חותמת זמן כדי לייצא רק משאבי FHIR שנוספו למאגר FHIR מאז ייצוא קודם מוצלח. כך משפרים את הביצועים ונמנעים מהעלות של ייצוא מחדש של כל מאגר ה-FHIR, וגם מוודאים שהנתונים המיוצאים תמיד עדכניים.
כשמתקשרים אל fhirStores.export, צריך לציין את חותמת הזמן בשדה _since.
פתרון בעיות בבקשות ייבוא וייצוא של FHIR
אם מתרחשות שגיאות במהלך בקשת ייבוא או ייצוא של FHIR, השגיאות נרשמות ביומן של Cloud Logging. מידע נוסף זמין במאמר צפייה ביומני שגיאות ב-Cloud Logging.
אם כל הפעולה מחזירה שגיאה, אפשר לעיין במאמר בנושא פתרון בעיות בפעולות ארוכות טווח.
המאמרים הבאים
- אם ייבאתם בהצלחה נתוני FHIR ואתם רוצים לנתח את הנתונים ב-BigQuery, אתם יכולים להמשיך אל ייצוא נתוני FHIR ל-BigQuery.