בדף הזה מוסבר איך לייצא מופעי DICOM אל Cloud Storage ואיך לייבא אובייקטים של DICOM מ-Cloud Storage. מופע DICOM הוא בדרך כלל תמונה, אבל יכול להיות גם סוג אחר של נתונים קבועים, כמו דוח מובנה. אובייקט DICOM ב-Cloud Storage הוא מופע DICOM שנמצא ב-Cloud Storage. מידע נוסף זמין במאמר בנושא Cloud Storage.
הגדרת הרשאות ב-Cloud Storage
לפני שמייצאים ומייבאים נתוני DICOM אל Cloud Storage וממנו, צריך להעניק הרשאות נוספות לחשבון השירות של סוכן שירות Cloud Healthcare. מידע נוסף זמין במאמר בנושא הרשאות Cloud Storage בחנות DICOM.
ייבוא אובייקטים של DICOM
כדי לייבא כמה קבצים של מופעי DICOM למאגר DICOM, אפשר להשתמש באחת מהשיטות הבאות:
- באופן פרוגרמטי, מאחסנים את הנתונים ישירות במאגר DICOM מהמחשב המקומי באמצעות Store Transaction, שירות אינטרנט מבוסס RESTful כפי שהוא מיושם ב-Cloud Healthcare API.
- מעלים את נתוני DICOM למאגר Cloud Storage ואז מייבאים את הקבצים למאגר DICOM באמצעות פעולת ייבוא אחת, כמו שמוסבר בקטע הזה.
בדוגמאות הבאות מוצגות דרכים לייבא אובייקטים בפורמט DICOM מקטגוריה ב-Cloud Storage.
המסוף
כדי לייבא אובייקטים של DICOM מקטגוריה ב-Cloud Storage, מבצעים את השלבים הבאים:
- נכנסים לדף Datasets במסוף Google Cloud .
מעבר לדף Datasets - לוחצים על מערך הנתונים שמכיל את מאגר DICOM שאליו מייבאים אובייקטים של DICOM.
- ברשימת מאגרי הנתונים, בוחרים באפשרות ייבוא מתוך הרשימה פעולות של מאגר DICOM.
מופיע הדף ייבוא למאגר DICOM. - ברשימה Project, בוחרים פרויקט של Cloud Storage.
- ברשימה מיקום, בוחרים קטגוריה של Cloud Storage.
- כדי להגדיר מיקום ספציפי לייבוא קבצים:
- מרחיבים את אפשרויות מתקדמות.
- בוחרים באפשרות Override Cloud Storage Path (עקיפת הנתיב של Cloud Storage).
- כדי להגדיר מקור ספציפי לייבוא קבצים, מגדירים את הנתיב באמצעות המשתנים הבאים בתיבת הטקסט מיקום:
-
*– תואם לתווים שאינם מפרידים. -
**– תואם לתווים, כולל מפרידים. אפשר להשתמש בזה עם סיומת של שם קובץ כדי להתאים לכל הקבצים מאותו סוג. -
?– מתאים לתו אחד.
-
- לוחצים על ייבוא כדי לייבא אובייקטים של DICOM מהמקור שהוגדר.
- כדי לעקוב אחרי סטטוס הפעולה, לוחצים על הכרטיסייה פעולות. אחרי שהפעולה מסתיימת, מופיעים הסימנים הבאים:
- בקטע Long-running operation status (סטטוס של פעולה ממושכת) מופיע סימן וי ירוק מתחת לכותרת OK.
- בקטע סקירה כללית מופיעים סימן וי ירוק והאינדיקטור OK באותה שורה שבה מופיע מזהה הפעולה.
gcloud
כדי לייבא אובייקטים של DICOM מקטגוריה של Cloud Storage, משתמשים בפקודה gcloud healthcare dicom-stores import gcs. מציינים את השם של מערך הנתונים הראשי, את השם של מאגר DICOM ואת המיקום של האובייקט בקטגוריה של Cloud Storage.
- המיקום של הקבצים ב-Bucket הוא שרירותי ולא חייב להיות זהה לפורמט שמופיע בדוגמה הבאה.
- כשמציינים את המיקום של אובייקטים מסוג DICOM ב-Cloud Storage, אפשר להשתמש בתווים כלליים כדי לייבא כמה קבצים מספרייה אחת או יותר.
יש תמיכה בתווים הכלליים לחיפוש הבאים:
- משתמשים ב-
*כדי להתאים 0 או יותר תווים שאינם מפרידים. לדוגמה,gs://BUCKET/DIRECTORY/Example*.dcmתואם ל-Example.dcm ול-Example22.dcm ב-DIRECTORY. - משתמשים ב-
**כדי להתאים 0 תווים או יותר (כולל מפרידים). חובה להשתמש בו בסוף הנתיב, בלי תווים כלליים אחרים בנתיב. אפשר להשתמש גם בסיומת של שם קובץ (כמו .dcm), כדי לייבא את כל הקבצים עם הסיומת של שם הקובץ בספרייה שצוינה ובספריות המשנה שלה. לדוגמה,gs://BUCKET/DIRECTORY/**.dcmמייבא את כל הקבצים עם סיומת שם הקובץ .dcm ב-DIRECTORY ובספריות המשנה שלו. - כדי להתאים תו אחד, משתמשים ב-
?. לדוגמה,gs://BUCKET/DIRECTORY/Example?.dcmתואם ל- Example1.dcm אבל לא תואם ל-Example.dcm או ל-Example01.dcm.
- משתמשים ב-
בדוגמה הבאה מוצגות הוראות לייבוא אובייקטים בפורמט DICOM מקטגוריה ב-Cloud Storage.
gcloud healthcare dicom-stores import gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri=gs://BUCKET/DIRECTORY/DICOM_INSTANCE.dcm
מזהה הפעולה מוצג בשורת הפקודה:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
כדי לראות את סטטוס הפעולה, מריצים את הפקודה gcloud healthcare operations describe ומזינים את OPERATION_ID מהתגובה:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
אחרי שהפקודה מסתיימת, התשובה כוללת את done: true.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ImportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
כדי לייבא אובייקטים בפורמט DICOM מקטגוריה של Cloud Storage, משתמשים בשיטה projects.locations.datasets.dicomStores.import.
- המיקום של הקבצים בתוך הקטגוריה יכול להיות שונה, והוא לא חייב להיות זהה לפורמט שמופיע בדוגמאות הבאות.
- כשמציינים את המיקום של אובייקטים מסוג DICOM ב-Cloud Storage, צריך להשתמש בתווים כלליים כדי לייבא כמה קבצים מספרייה אחת או יותר.
יש תמיכה בתווים הכלליים לחיפוש הבאים:
- משתמשים ב-
*כדי להתאים 0 או יותר תווים שאינם מפרידים. לדוגמה,gs://BUCKET/DIRECTORY/Example*.dcmתואם ל-Example.dcm ול-Example22.dcm ב-DIRECTORY. - משתמשים ב-
**כדי להתאים 0 תווים או יותר (כולל מפרידים). חובה להשתמש בו בסוף הנתיב, בלי תווים כלליים אחרים בנתיב. אפשר להשתמש גם בסיומת של שם קובץ (כמו .dcm), כדי לייבא את כל הקבצים עם הסיומת של שם הקובץ בספרייה שצוינה ובספריות המשנה שלה. לדוגמה,gs://BUCKET/DIRECTORY/**.dcmמייבא את כל הקבצים עם סיומת שם הקובץ .dcm ב-DIRECTORY ובספריות המשנה שלו. - כדי להתאים תו אחד, משתמשים ב-
?. לדוגמה,gs://BUCKET/DIRECTORY/Example?.dcmתואם ל- Example1.dcm אבל לא תואם ל-Example.dcm או ל-Example01.dcm.
- משתמשים ב-
REST
מייבאים את אובייקט ה-DICOM.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
LOCATION: המיקום של מערך הנתונים -
DATASET_ID: מערך הנתונים הראשי של מאגר DICOM -
DICOM_STORE_ID: מזהה מאגר DICOM -
BUCKET/PATH/TO/FILE: הנתיב לאובייקט DICOM ב-Cloud Storage
תוכן בקשת JSON:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת. פעולות ממושכות מוחזרות כשקריאות לשיטות עשויות להימשך זמן רב. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.curl
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:cat > request.json << 'EOF' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } '@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand Content-
אחזור הסטטוס של הפעולה הממושכת.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud
- LOCATION: המיקום של מערך הנתונים
- DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
- OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
אם הפעולה ארוכת הטווח עדיין פועלת, השרת מחזיר תגובה עם מספר מופעי DICOM שממתינים לייבוא. כש-LRO מסתיים בהצלחה, השרת מחזיר תגובה עם סטטוס הפעולה בפורמט JSON:curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth 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
Go
Java
Node.js
Python
כדי לאחזר מופע או מחקר יחיד ממאגר DICOM, צריך לאחזר נתוני DICOM באמצעות Retrieve Transaction, שירות אינטרנט מבוסס RESTful כפי שהוא מיושם ב-Cloud Healthcare API.
ציון סוג אחסון לייבוא אובייקטים בפורמט DICOM (תצוגה מקדימה)
כברירת מחדל, השיטה projects.locations.datasets.dicomStores.import מייבאת אובייקט DICOM למאגר DICOM עם סוג אחסון רגיל. אתם יכולים להגדיר את סוג האחסון (storage class) כשאתם מייבאים אובייקטים של DICOM מ-Cloud Storage.
מידע נוסף מופיע במאמר בנושא שינוי סוג האחסון של DICOM.
בדוגמאות הבאות מוצגות דרכים לציין את סוג האחסון כשמייבאים אובייקטים בפורמט DICOM מ-Cloud Storage.
REST
משתמשים בשיטה projects.locations.datasets.dicomStores.import.
מייבאים את אובייקט ה-DICOM.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
LOCATION: המיקום של מערך הנתונים -
DATASET_ID: מערך הנתונים הראשי של מאגר DICOM -
DICOM_STORE_ID: מזהה מאגר DICOM -
BUCKET/PATH/TO/FILE: הנתיב לאובייקט DICOM ב-Cloud Storage -
STORAGE_CLASS: מחלקת האחסון של אובייקט DICOM בחנות DICOM מ-STANDARD,NEARLINE,COLDLINEו-ARCHIVE
תוכן בקשת JSON:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת. פעולות ממושכות מוחזרות כשקריאות לשיטות עשויות להימשך זמן רב. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.curl
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:cat > request.json << 'EOF' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand Content-
אחזור הסטטוס של הפעולה הממושכת.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud
- LOCATION: המיקום של מערך הנתונים
- DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
- OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
אם הפעולה ארוכת הטווח עדיין פועלת, השרת מחזיר תגובה עם מספר מופעי DICOM שממתינים לייבוא. כשפעולת ה-LRO מסתיימת, השרת מחזיר תגובה עם סטטוס הפעולה בפורמט JSON:curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
פתרון בעיות בבקשות לייבוא DICOM
אם מתרחשות שגיאות במהלך בקשת ייבוא של DICOM, השגיאות נרשמות ביומן ב-Cloud Logging. מידע נוסף זמין במאמר צפייה ביומני שגיאות ב-Cloud Logging.
ייצוא מופעים של DICOM
בדוגמאות הבאות מוסבר איך לייצא מופעים של DICOM לקטגוריה ב-Cloud Storage. כשמייצאים מופעי DICOM ממאגר DICOM, כל המופעים במאגר מיוצאים.
המסוף
כדי לייצא מופעי DICOM ל-Cloud Storage:
- נכנסים לדף Datasets במסוף Google Cloud .
מעבר לדף Datasets - לוחצים על מערך הנתונים שמכיל את מאגר DICOM שממנו מייצאים מופעי DICOM.
- ברשימת מאגרי הנתונים, בוחרים באפשרות ייצוא מתוך הרשימה פעולות של מאגר DICOM.
- בדף Export DICOM Store שמופיע, בוחרים באפשרות Google Cloud Storage Bucket.
- ברשימה Project, בוחרים פרויקט של Cloud Storage.
- ברשימה מיקום, בוחרים קטגוריה של Cloud Storage.
- בקטע DICOM Export Settings (הגדרות ייצוא DICOM), בוחרים את סוג הקובץ שמשמש לייצוא של מופעי DICOM. אלה הסוגים שזמינים:
- קובץ DICOM (
.dcm) - octet-stream
- תמונה (
.jpg,.png)
- קובץ DICOM (
- כדי להגדיר תחביר העברה נוסף, בוחרים את התחביר מהרשימה Transfer Syntax.
- לוחצים על ייצוא כדי לייצא את מופעי DICOM למיקום שהוגדר ב-Cloud Storage.
- כדי לעקוב אחרי סטטוס הפעולה, לוחצים על הכרטיסייה פעולות. אחרי שהפעולה מסתיימת, מופיעים הסימנים הבאים:
- בקטע Long-running operation status (סטטוס של פעולה ממושכת) מופיע סימן וי ירוק מתחת לכותרת OK.
- בקטע סקירה כללית מופיעים סימן וי ירוק והאינדיקטור OK באותה שורה שבה מופיע מזהה הפעולה.
gcloud
כדי לייצא מופעי DICOM לקטגוריה של Cloud Storage, משתמשים בפקודה gcloud healthcare dicom-stores export gcs.
- צריך לציין את השם של מערך הנתונים הראשי, את השם של מאגר DICOM ואת קטגוריית Cloud Storage ליעד.
- כדאי לכתוב לקטגוריה או לספרייה ב-Cloud Storage ולא לאובייקט, כי Cloud Healthcare API יוצר קובץ
.dcmאחד לכל אובייקט. - אם הפקודה מציינת ספרייה שלא קיימת, הספרייה נוצרת.
בדוגמה הבאה אפשר לראות את הפקודה gcloud healthcare dicom-stores export gcs.
gcloud healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://BUCKET/DIRECTORY
מזהה הפעולה מוצג בשורת הפקודה:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
כדי לראות את סטטוס הפעולה, מריצים את הפקודה gcloud healthcare operations describe ומזינים את OPERATION_ID מהתגובה:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
אחרי שהפקודה מסתיימת, התשובה כוללת את done: true.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
כדי לייצא מופעי DICOM לקטגוריה של Cloud Storage, משתמשים בשיטה projects.locations.datasets.dicomStores.export.
- כדאי לכתוב לקטגוריה או לספרייה ב-Cloud Storage ולא לאובייקט, כי Cloud Healthcare API יוצר קובץ
.dcmאחד לכל אובייקט DICOM. - אם הפקודה מציינת ספרייה שלא קיימת, הספרייה נוצרת.
curl
כדי לייצא מופעי DICOM, שולחים בקשת POST ומספקים את הפרטים הבאים:
- השם והמיקום של מערך נתוני האב
- השם של מאגר DICOM
- קטגוריית היעד של 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 "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, משתמשים ב-Operation get method:
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.dicom.DicomService.ExportDicomData",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter":{
"success": SUCCESSFUL_INSTANCES
"failure": FAILED_INSTANCES
}
},
"done": true,
"response": {
"@type": "..."
}
}
PowerShell
כדי לייצא מופעי DICOM, שולחים בקשת POST ומספקים את הפרטים הבאים:
- השם והמיקום של מערך נתוני האב
- השם של מאגר DICOM
- קטגוריית היעד של 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 "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר את התגובה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, משתמשים ב-Operation get method:
$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.dicom.DicomService.ExportDicomData",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter":{
"success": SUCCESSFUL_INSTANCES
"failure": FAILED_INSTANCES
},
},
"done": true,
"response": {
"@type": "..."
}
}
Go
Java
Node.js
Python
ייצוא מופעי DICOM באמצעות מסננים
כברירת מחדל, כשמייצאים קובצי DICOM ל-Cloud Storage, כל קובצי ה-DICOM במאגר ה-DICOM מיוצאים. באופן דומה, כשמייצאים מטא-נתונים של DICOM ל-BigQuery, המטא-נתונים של כל נתוני ה-DICOM במאגר ה-DICOM מיוצאים.
אפשר לייצא קבוצת משנה של נתוני DICOM או מטא נתונים באמצעות קובץ מסנן.
הגדרת קובץ מסנן
- כל שורה בקובץ המסנן מגדירה את המחקר, הסדרה או המופע, ומשתמשת בפורמט
/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID. - אפשר לקטוע שורה כדי לציין את הרמה שבה המסנן פועל.
לדוגמה, אפשר לבחור מחקר שלם על ידי ציון
/studies/STUDY_INSTANCE_UID, או לבחור סדרה שלמה על ידי ציון/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID.
נניח שיש לכם קובץ מסנן כזה:
/studies/1.123.456.789 /studies/1.666.333.111/series/123.456 /studies/1.666.333.111/series/567.890 /studies/1.888.999.222/series/123.456/instances/111 /studies/1.888.999.222/series/123.456/instances/222 /studies/1.888.999.222/series/123.456/instances/333
קובץ המסנן לדוגמה הזה חל על:
- המחקר כולו עם מזהה ה-UID של מופע המחקר בתור
1.123.456.789 - שתי סדרות נפרדות עם מזהי UID של מופע הסדרה
123.456ו-567.890במחקר1.666.333.111 - שלוש מכונות נפרדות עם מזהי מכונה
111,222ו-333במחקר1.888.999.222ובסדרה123.456
יצירת קובץ סינון באמצעות BigQuery
כדי ליצור קובץ מסנן באמצעות BigQuery, קודם צריך לייצא את המטא-נתונים של מאגר DICOM ל-BigQuery. במטא-נתונים המיוצאים מוצגים מזהי ה-UID של המחקר, הסדרה והמופע של נתוני DICOM במאגר DICOM.
אחרי שמייצאים את המטא-נתונים, מבצעים את השלבים הבאים:
מריצים שאילתה כדי לקבל את מזהי ה-UID של המחקר, הסדרה והמופעים שרוצים להוסיף לקובץ המסנן.
לדוגמה, השאילתה הבאה מראה איך לשרשר את מזהי ה-UID של המחקר, הסדרה והמופע כדי להתאים לדרישות הפורמט של קובץ המסנן:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
אופציונלי: אם השאילתה מחזירה קבוצת תוצאות גדולה שחורגת מגודל התגובה המקסימלי, שומרים את תוצאות השאילתה בטבלת יעד חדשה ב-BigQuery.
שומרים את תוצאות השאילתה בקובץ ומייצאים אותו ל-Cloud Storage. אם שמרתם את תוצאות השאילתה בטבלת יעד חדשה בשלב 2, תוכלו לעיין במאמר בנושא ייצוא נתונים מטבלה כדי לייצא את תוכן הטבלה ל-Cloud Storage.
עורכים את הקובץ המיוצא לפי הצורך, וכוללים אותו בבקשה לשינוי סוג האחסון של כמה אובייקטים מסוג DICOM.
יצירה ידנית של קובץ מסנן
כדי ליצור קובץ מסנן באופן ידני:
- יוצרים קובץ מסנן שמכיל את אובייקטי ה-DICOM שרוצים לסנן.
- מעלים את קובץ המסנן ל-Cloud Storage. הוראות מפורטות זמינות במאמר העלאת אובייקטים ממערכת קבצים.
העברה בקובץ המסנן
אחרי שיוצרים קובץ מסנן, קוראים לפעולת הייצוא של DICOM ומעבירים את קובץ המסנן באמצעות REST API. בדוגמאות הבאות מוצגות דרכים לייצוא נתוני DICOM באמצעות מסנן.
gcloud
כדי לייצא מטא-נתונים של DICOM ל-Cloud Storage באמצעות מסנן, משתמשים בפקודה gcloud beta healthcare dicom-stores export gcs:
gcloud beta healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://DESTINATION_BUCKET/DIRECTORY \ --filter-config-gcs-uri=gs://BUCKET/DIRECTORY/FILTER_FILE
מחליפים את מה שכתוב בשדות הבאים:
- DICOM_STORE_ID: המזהה של מאגר DICOM
- DATASET_ID: השם של מערך הנתונים הראשי של מאגר DICOM
- LOCATION: המיקום של מערך הנתונים הראשי של מאגר DICOM
- DESTINATION_BUCKET/DIRECTORY: קטגוריית היעד של Cloud Storage
- BUCKET/DIRECTORY/FILTER_FILE: המיקום של קובץ הסינון בקטגוריה של Cloud Storage
הפלט שיתקבל:
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
כדי לראות את סטטוס הפעולה, מריצים את הפקודה gcloud healthcare operations describe ומזינים את OPERATION_ID מהתגובה:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
מחליפים את מה שכתוב בשדות הבאים:
- OPERATION_ID: מספר המזהה שהוחזר מהתגובה הקודמת
- DATASET_ID: השם של מערך הנתונים הראשי של מאגר DICOM
- LOCATION: המיקום של מערך הנתונים הראשי של מאגר DICOM
הפלט שיתקבל:
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: 'CREATE_TIME' endTime: 'END_TIME' logsUrl: 'https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL' name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': '...'
API
כדי לייצא נתוני DICOM באמצעות מסנן, משתמשים בשיטה projects.locations.datasets.dicomStores.export.
curl
כדי לייצא נתוני DICOM באמצעות קובץ מסנן, שולחים בקשת POST ומספקים את הפרטים הבאים:
- השם והמיקום של מערך נתוני האב
- השם של מאגר DICOM
- קטגוריית היעד של Cloud Storage
- המיקום של קובץ המסנן בקטגוריה של 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 "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' } }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
אם הבקשה מצליחה, השרת מחזיר את התגובה הבאה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, משתמשים בשיטה get של Operation:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME"
אם הבקשה מצליחה, השרת מחזיר את התשובה הבאה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData",
"createTime": "CREATE_TIME",
"endTime": "END_TIME"
},
"done": true,
"response": {
"@type": "..."
}
}
PowerShell
כדי לייצא נתוני DICOM באמצעות קובץ מסנן, שולחים בקשת POST ומספקים את הפרטים הבאים:
- השם והמיקום של מערך נתוני האב
- השם של מאגר DICOM
- קטגוריית היעד של Cloud Storage
- המיקום של קובץ המסנן בקטגוריה של 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 "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' }" ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר את התגובה הבאה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID"
}
התשובה מכילה שם פעולה. כדי לעקוב אחרי סטטוס הפעולה, משתמשים בשיטה get של Operation:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME" | Select-Object -Expand Content
אם הבקשה מצליחה, השרת מחזיר את התגובה הבאה עם הסטטוס של הפעולה בפורמט JSON:
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData",
"createTime": "CREATE_TIME",
"endTime": "END_TIME"
},
"done": true,
"response": {
"@type": "..."
}
}
פתרון בעיות בבקשות לייצוא DICOM
אם מתרחשות שגיאות במהלך בקשת ייצוא של DICOM, השגיאות נרשמות ביומן של Cloud Logging. מידע נוסף זמין במאמר צפייה ביומני שגיאות ב-Cloud Logging.
אם כל הפעולה מחזירה שגיאה, אפשר לעיין במאמר בנושא פתרון בעיות בפעולות ארוכות טווח.