ייצוא מטא-נתונים של DICOM ל-BigQuery

בדף הזה מוסבר איך לייצא מטא-נתונים של DICOM ל-BigQuery כדי לבצע בהם ניתוח ולחקור אותם. מידע על סכימת BigQuery שנוצרת כשמייצאים מטא-נתונים של DICOM זמין במאמר הסבר על סכימת DICOM ב-BigQuery.

הגדרת הרשאות ב-BigQuery

לפני שמייצאים מטא-נתונים של DICOM לטבלת BigQuery, צריך לתת הרשאות נוספות לסוכן שירות Cloud Healthcare חשבון השירות. מידע נוסף זמין במאמר הרשאות BigQuery בחנות DICOM.

הגדרת היעד ב-BigQuery

כשמגדירים את היעד ב-BigQuery, משתמשים במזהה ה-URI המלא, באופן הבא:
bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID
ההתנהגות של פעולת הייצוא עשויה להשתנות בהתאם ל:
  • האם טבלת היעד כבר קיימת
  • האם הגדרתם את השדה force (באמצעות ה-API) או את הדגל --overwrite-table (באמצעות Google Cloud CLI)
  • האם הגדרתם ערך ל-enum‏ writeDisposition. אם משתמשים בערך writeDisposition של enum, לא מגדירים את השדה force.
ההתנהגות בכל אחד מהמקרים האלה היא כדלקמן:
  • אם טבלת היעד כבר קיימת והפרמטר force מוגדר לערך true או שהוגדר הדגל --overwrite-table, פעולת הייצוא מחליפה את הטבלה הקיימת.
  • אם טבלת היעד כבר קיימת וההגדרה force היא false או שהדגל --overwrite-table לא צוין, תתרחש שגיאה.
  • אם טבלת היעד לא קיימת, המערכת תיצור טבלה חדשה, בלי קשר לשאלה אם ציינתם את השדה force או את הדגל --overwrite-table.
  • ההתנהגות של writeDisposition מתוארת במסמכי התיעוד. הספירה writeDisposition פועלת באופן דומה לאפשרויות כשמשתמשים ב-force, עם היוצא מן הכלל הבא: אם טבלת היעד כבר קיימת והיא ריקה, פעולת הייצוא מסתיימת במקום להחזיר שגיאה.

ייצוא מטא-נתונים של DICOM

בדוגמאות הבאות אפשר לראות איך לייצא מטא-נתונים של DICOM לטבלת BigQuery. בדוגמאות האלה, מאגר DICOM וטבלת BigQuery נמצאים באותו פרויקט. כדי לייצא מטא-נתוני DICOM לטבלת BigQuery בפרויקט אחר, אפשר לעיין במאמר ייצוא מטא-נתוני DICOM לפרויקט אחר.

המסוף

כדי לייצא מטא-נתונים של DICOM לטבלה ב-BigQuery, צריך לבצע את השלבים הבאים:

  1. נכנסים לדף Datasets במסוף Google Cloud .

    למעבר אל Datasets

  2. לוחצים על מערך הנתונים שכולל את מאגר DICOM עם המטה-נתונים שרוצים לייצא.

  3. באותה שורה של מאגר DICOM, פותחים את הרשימה פעולות ובוחרים באפשרות ייצוא.

  4. בדף Export DICOM store שמופיע, בוחרים באפשרות BigQuery table.

  5. בשדה Project, לוחצים על Browse ובוחרים את הפרויקט.

  6. ברשימה Dataset, בוחרים את מערך הנתונים ב-BigQuery שאליו מייצאים את המטא-נתונים של DICOM.

  7. בשדה Table, מזינים שם חדש לטבלה. מערכת BigQuery בודקת כל בחירה כדי לוודא שהטבלה של היעד תקינה.

  8. בקטע הגדרת כתיבה של טבלת יעד, בוחרים באחת מהאפשרויות הבאות. האפשרויות האלה תואמות ל-enum‏ WriteDisposition.

    • ייצוא נתונים רק אם טבלת היעד ריקה: שווה ל-WRITE_EMPTY
    • ‫Append data to destination table (הוספת נתונים לטבלת היעד): שווה ל-WRITE_APPEND
    • Erase all existing data in the destination table before writing the instances (מחיקת כל הנתונים הקיימים בטבלת היעד לפני כתיבת המופעים): שווה ל-WRITE_TRUNCATE.
  9. לוחצים על ייצוא כדי לייצא את המטא-נתונים של DICOM לטבלת BigQuery.

  10. כדי לעקוב אחרי סטטוס הפעולה, לוחצים על הכרטיסייה פעולות. אחרי שהפעולה מסתיימת, מופיעים הסימנים הבאים:
    • בקטע Long-running operation status (סטטוס של פעולה ממושכת) מופיע סימן וי ירוק מתחת לכותרת OK.
    • בקטע סקירה כללית מופיעים סימן וי ירוק והאינדיקטור OK באותה שורה שבה מופיע מזהה הפעולה.
    אם נתקלתם בשגיאות, לוחצים על פעולות ואז על הצגת הפרטים ב-Cloud Logging.

gcloud

כדי לייצא מטא-נתונים של DICOM לטבלה ב-BigQuery, מריצים את הפקודה gcloud healthcare dicom-stores export bq.

  1. מייצאים את מטא-נתוני DICOM.

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • ‫DICOM_STORE_ID: מזהה מאגר DICOM
    • ‫BIGQUERY_DATASET_ID: השם של מערך נתונים קיים ב-BigQuery שאליו אתם מייצאים את המטא-נתונים של DICOM
    • ‫BIGQUERY_TABLE_ID: השם של טבלה חדשה או קיימת במערך הנתונים ב-BigQuery. אם פעולת הייצוא יוצרת טבלה חדשה, אפשר לעיין בדרישות לשם הטבלה במאמר בנושא מתן שמות לטבלאות.
    • ‫WRITE_DISPOSITION: ערך של הטיפוס בן המנייה WriteDisposition. משתמשים באחד מהערכים הבאים:
      • ‫write-empty: ייצוא נתונים רק אם הטבלה ב-BigQuery ריקה.
      • ‫write-truncate: מחיקת כל הנתונים הקיימים בטבלת BigQuery לפני כתיבת מופעי DICOM.
      • ‫write-append: הוספת נתונים לטבלה ב-BigQuery.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud healthcare dicom-stores export bq DICOM_STORE_ID \
      --location=LOCATION \
      --dataset=DATASET_ID \
      --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \
      --write-disposition=WRITE_DISPOSITION

    ‏Windows (PowerShell)

    gcloud healthcare dicom-stores export bq DICOM_STORE_ID `
      --location=LOCATION `
      --dataset=DATASET_ID `
      --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID `
      --write-disposition=WRITE_DISPOSITION

    Windows‏ (cmd.exe)

    gcloud healthcare dicom-stores export bq DICOM_STORE_ID ^
      --location=LOCATION ^
      --dataset=DATASET_ID ^
      --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^
      --write-disposition=WRITE_DISPOSITION
    התשובה היא: התשובה מכילה מזהה של פעולה ממושכת. פעולות ממושכות מוחזרות כשקריאות לשיטות עשויות להימשך זמן רב. הפקודה מבצעת דגימה של הפעולה הממושכת, ואז מדפיסה את שם הפעולה בשדה name אחרי שהייצוא מסתיים. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.

    תשובה

    Request issued for: [DICOM_STORE_ID]
    Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
    

  2. כדי לראות פרטים נוספים על הפעולה, מריצים את הפקודה gcloud healthcare operations describe ומזינים את OPERATION_ID מהתשובה:

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫DATASET_ID: מזהה קבוצת הנתונים
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud healthcare operations describe OPERATION_ID \
        --project=PROJECT_ID \
        --dataset=DATASET_ID \
        --location=LOCATION

    ‏Windows (PowerShell)

    gcloud healthcare operations describe OPERATION_ID `
        --project=PROJECT_ID `
        --dataset=DATASET_ID `
        --location=LOCATION

    Windows‏ (cmd.exe)

    gcloud healthcare operations describe OPERATION_ID ^
        --project=PROJECT_ID ^
        --dataset=DATASET_ID ^
        --location=LOCATION

    אמורים לקבל תגובה שדומה לזו:

    תשובה

    done: true
    // If there were any errors, an `error` field displays instead of a `response` field.
    // See Troubleshooting long-running operations for a list of response codes.
    error: ERROR
      code: ERROR_CODE
      message: DESCRIPTION
    metadata:
      '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata'
      apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq'
      counter:
        success: 'SUCCESS_COUNT'
        // If there were any failures, they display in the `failure` field.
        failure: 'FAILURE_COUNT'
      createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
    // The `response` field only displays if there were no errors.
    response:
      '@type': 'type.googleapis.com/google.protobuf.Empty'
    

REST

כדי לייצא מטא-נתונים של DICOM לטבלה ב-BigQuery, משתמשים בשיטה projects.locations.datasets.dicomStores.export.

  1. מייצאים את מטא-נתוני DICOM.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • ‫DICOM_STORE_ID: מזהה מאגר DICOM
    • ‫BIGQUERY_DATASET_ID: השם של מערך נתונים קיים ב-BigQuery שאליו אתם מייצאים את המטא-נתונים של DICOM
    • ‫BIGQUERY_TABLE_ID: השם של טבלה חדשה או קיימת במערך הנתונים ב-BigQuery. אם פעולת הייצוא יוצרת טבלה חדשה, אפשר לעיין בדרישות לשם הטבלה במאמר מתן שמות לטבלאות.
    • ‫WRITE_DISPOSITION: ערך של הטיפוס בן המנייה WriteDisposition. משתמשים באחד מהערכים הבאים:
      • ‫WRITE_EMPTY: ייצוא נתונים רק אם הטבלה ב-BigQuery ריקה.
      • ‫WRITE_TRUNCATE: מחיקת כל הנתונים הקיימים בטבלת BigQuery לפני כתיבת מופעי DICOM.
      • ‫WRITE_APPEND: הוספת נתונים לטבלה ב-BigQuery.

    תוכן בקשת JSON:

    {
      "bigqueryDestination": {
          "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    

    כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

    curl

    שומרים את גוף הבקשה בקובץ בשם request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:

    cat > request.json << 'EOF'
    {
      "bigqueryDestination": {
          "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    EOF

    לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"

    PowerShell

    שומרים את גוף הבקשה בקובץ בשם request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:

    @'
    {
      "bigqueryDestination": {
          "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    '@  | 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; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content

    APIs Explorer

    מעתיקים את גוף הבקשה ופותחים את דף העזר של השיטה. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. מדביקים את גוף הבקשה בכלי הזה, ממלאים את כל שדות החובה ולוחצים על Execute.

    הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת (LRO). פעולות ארוכות טווח מוחזרות כשקריאות לשיטות עשויות להימשך זמן נוסף עד להשלמה. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.

  2. כדי לקבל את הסטטוס של הפעולה הממושכת, משתמשים בשיטה projects.locations.datasets.operations.get.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫DATASET_ID: מזהה קבוצת הנתונים
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת

    כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:

    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

    APIs Explorer

    פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.

    הפלט שיתקבל: כשהתשובה מכילה את הערך "done": true, סימן שהפעולה הממושכת הסתיימה.

ייצוא מטא-נתונים של DICOM לפרויקט אחר

כדי לייצא מטא-נתונים של DICOM מחנות DICOM בפרויקט אחד למערך נתונים ב-BigQuery בפרויקט אחר, קודם צריך לעיין במאמר ייצוא מטא-נתונים של DICOM להרשאות של פרויקט אחר כדי לקבל מידע על הגדרת הרשאות IAM בפרויקט היעד.

gcloud

כדי לייצא מטא-נתונים של DICOM ממאגר DICOM בפרויקט אחד לטבלת BigQuery בפרויקט אחר, משתמשים בפקודה gcloud healthcare dicom-stores export bq.

  1. מייצאים את מטא-נתוני DICOM.

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫SOURCE_PROJECT_ID: המזהה של פרויקט המקור Google Cloud
    • ‫SOURCE_LOCATION: המיקום של מערך הנתונים של המקור
    • ‫SOURCE_DATASET_ID: מערך הנתונים הראשי של מאגר DICOM של המקור
    • ‫SOURCE_DICOM_STORE_ID: מזהה חנות ה-DICOM של המקור
    • ‫DESTINATION_PROJECT_ID: המזהה של הפרויקט השונה
    • ‫DESTINATION_BIGQUERY_DATASET_ID: השם של מערך נתונים קיים ב-BigQuery בפרויקט היעד שאליו מייצאים את המטא-נתונים של DICOM
    • ‫DESTINATION_BIGQUERY_TABLE_ID: השם של טבלה חדשה או קיימת במערך הנתונים ב-BigQuery. אם פעולת הייצוא יוצרת טבלה חדשה, אפשר לעיין בדרישות לשם הטבלה במאמר מתן שמות לטבלאות.
    • ‫WRITE_DISPOSITION: ערך של הטיפוס בן המנייה WriteDisposition. משתמשים באחד מהערכים הבאים:
      • ‫write-empty: ייצוא נתונים רק אם הטבלה ב-BigQuery ריקה.
      • ‫write-truncate: מחיקת כל הנתונים הקיימים בטבלת BigQuery לפני כתיבת מופעי DICOM.
      • ‫write-append: הוספת נתונים לטבלה ב-BigQuery.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID \
      --project=SOURCE_PROJECT_ID \
      --location=SOURCE_LOCATION \
      --dataset=SOURCE_DATASET_ID \
      --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID \
      --write-disposition=WRITE_DISPOSITION

    ‏Windows (PowerShell)

    gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID `
      --project=SOURCE_PROJECT_ID `
      --location=SOURCE_LOCATION `
      --dataset=SOURCE_DATASET_ID `
      --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID `
      --write-disposition=WRITE_DISPOSITION

    Windows‏ (cmd.exe)

    gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ^
      --project=SOURCE_PROJECT_ID ^
      --location=SOURCE_LOCATION ^
      --dataset=SOURCE_DATASET_ID ^
      --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ^
      --write-disposition=WRITE_DISPOSITION
    התשובה היא: התשובה מכילה מזהה של פעולה ממושכת. פעולות ממושכות מוחזרות כשקריאות לשיטות עשויות להימשך זמן רב. הפקודה מבצעת דגימה של הפעולה הממושכת, ואז מדפיסה את שם הפעולה בשדה name אחרי שהייצוא מסתיים. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.

    תשובה

    Request issued for: [SOURCE_DICOM_STORE_ID]
    Waiting for operation [projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...⠏
    name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
    

  2. כדי לראות פרטים נוספים על הפעולה, מריצים את הפקודה gcloud healthcare operations describe ומזינים את OPERATION_ID מהתשובה:

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫SOURCE_PROJECT_ID: המזהה של פרויקט המקור Google Cloud
    • ‫SOURCE_LOCATION: המיקום של מערך הנתונים של המקור
    • ‫SOURCE_DATASET_ID: מזהה מערך הנתונים של המקור
    • ‫OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud healthcare operations describe OPERATION_ID \
        --project=SOURCE_PROJECT_ID \
        --dataset=SOURCE_DATASET_ID \
        --location=SOURCE_LOCATION

    ‏Windows (PowerShell)

    gcloud healthcare operations describe OPERATION_ID `
        --project=SOURCE_PROJECT_ID `
        --dataset=SOURCE_DATASET_ID `
        --location=SOURCE_LOCATION

    Windows‏ (cmd.exe)

    gcloud healthcare operations describe OPERATION_ID ^
        --project=SOURCE_PROJECT_ID ^
        --dataset=SOURCE_DATASET_ID ^
        --location=SOURCE_LOCATION

    אמורים לקבל תגובה שדומה לזו:

    תשובה

    done: true
    // If there were any errors, an `error` field displays instead of a `response` field.
    // See Troubleshooting long-running operations for a list of response codes.
    error: ERROR
      code: ERROR_CODE
      message: DESCRIPTION
    metadata:
      '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata'
      apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq'
      counter:
        success: 'SUCCESS_COUNT'
        // If there were any failures, they display in the `failure` field.
        failure: 'FAILURE_COUNT'
      createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL
    name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
    // The `response` field only displays if there were no errors.
    response:
      '@type': 'type.googleapis.com/google.protobuf.Empty'
    

REST

כדי לייצא מטא-נתונים של DICOM מחנות DICOM בפרויקט אחד לטבלת BigQuery בפרויקט אחר, משתמשים בשיטה projects.locations.datasets.dicomStores.export.

  1. מייצאים את מטא-נתוני DICOM.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫SOURCE_PROJECT_ID: המזהה של פרויקט המקור Google Cloud
    • ‫SOURCE_LOCATION: המיקום של מערך הנתונים של המקור
    • ‫SOURCE_DATASET_ID: מערך הנתונים הראשי של מאגר DICOM של המקור
    • ‫SOURCE_DICOM_STORE_ID: מזהה חנות ה-DICOM של המקור
    • ‫DESTINATION_PROJECT_ID: המזהה של הפרויקט השונה
    • ‫DESTINATION_BIGQUERY_DATASET_ID: השם של מערך נתונים קיים ב-BigQuery בפרויקט היעד שאליו מייצאים את המטא-נתונים של DICOM
    • ‫DESTINATION_BIGQUERY_TABLE_ID: השם של טבלה חדשה או קיימת במערך הנתונים ב-BigQuery. אם פעולת הייצוא יוצרת טבלה חדשה, אפשר לעיין בדרישות לשם הטבלה במאמר מתן שמות לטבלאות.
    • ‫WRITE_DISPOSITION: ערך של הטיפוס בן המנייה WriteDisposition. משתמשים באחד מהערכים הבאים:
      • ‫WRITE_EMPTY: ייצוא נתונים רק אם הטבלה ב-BigQuery ריקה.
      • ‫WRITE_TRUNCATE: מחיקת כל הנתונים הקיימים בטבלת BigQuery לפני כתיבת מופעי DICOM.
      • ‫WRITE_APPEND: הוספת נתונים לטבלה ב-BigQuery.

    תוכן בקשת JSON:

    {
      "bigqueryDestination": {
          "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    

    כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

    curl

    שומרים את גוף הבקשה בקובץ בשם request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:

    cat > request.json << 'EOF'
    {
      "bigqueryDestination": {
          "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    EOF

    לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export"

    PowerShell

    שומרים את גוף הבקשה בקובץ בשם request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:

    @'
    {
      "bigqueryDestination": {
          "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      }
    }
    '@  | 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; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export" | Select-Object -Expand Content

    APIs Explorer

    מעתיקים את גוף הבקשה ופותחים את דף העזר של השיטה. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. מדביקים את גוף הבקשה בכלי הזה, ממלאים את כל שדות החובה ולוחצים על Execute.

    הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת (LRO). פעולות ארוכות טווח מוחזרות כשקריאות לשיטות עשויות להימשך זמן נוסף עד להשלמה. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.

  2. כדי לקבל את הסטטוס של הפעולה הממושכת, משתמשים בשיטה projects.locations.datasets.operations.get.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫SOURCE_PROJECT_ID: המזהה של פרויקט המקור Google Cloud
    • ‫SOURCE_LOCATION: המיקום של מערך הנתונים של המקור
    • ‫SOURCE_DATASET_ID: מזהה מערך הנתונים של המקור
    • ‫OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת

    כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:

    curl

    מריצים את הפקודה הבאה:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs Explorer

    פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.

    הפלט שיתקבל: כשהתשובה מכילה את הערך "done": true, סימן שהפעולה הממושכת הסתיימה.

ייצוא מטא-נתונים של DICOM באמצעות מסננים

כברירת מחדל, כשמייצאים קובצי DICOM אל Cloud Storage, כל קובצי ה-DICOM במאגר ה-DICOM שצוין מיוצאים. באופן דומה, כשמייצאים מטא-נתונים של DICOM ל-BigQuery, המטא-נתונים של כל נתוני ה-DICOM במאגר ה-DICOM שצוין מיוצאים.

אפשר לייצא קבוצת משנה של נתוני DICOM או מטא נתונים באמצעות מסנן. אתם מגדירים את המסנן בקובץ מסנן.

הגדרת קובצי מסננים

קובץ סינון מגדיר אילו קובצי DICOM לייצא ל-Cloud Storage או ל-BigQuery. אפשר להגדיר קובצי מסננים ברמות הבאות:

  • ברמת המחקר
  • ברמת הסדרה
  • ברמת המופע

קובץ המסנן מורכב מכמה שורות, וכל שורה מגדירה את המחקר, הסדרה או המופע שרוצים לייצא. כל שורה היא בפורמט /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]].

אם לא מציינים מחקר, סדרה או מופע בקובץ המסנן כשמעבירים את קובץ המסנן, המחקר, הסדרה או המופע האלה לא ייצאו.

חובה לציין רק את החלק /studies/STUDY_UID בנתיב. כדי לייצא מחקר שלם, מציינים /studies/STUDY_UID. כדי לייצא סדרה שלמה, מציינים /studies/STUDY_UID/series/SERIES_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

יצירת קובץ סינון באמצעות BigQuery

בדרך כלל יוצרים קובץ מסנן על ידי ייצוא המטא-נתונים מחנות DICOM ל-BigQuery. כך תוכלו להשתמש ב-BigQuery כדי לראות את מזהי ה-UID של המחקר, הסדרה והמופע של נתוני ה-DICOM בחנות ה-DICOM. לאחר מכן, אפשר לבצע את השלבים הבאים:

  1. שולחים שאילתה לגבי ה-UID של המחקר, הסדרה והמופע שמעניינים אתכם. לדוגמה, אחרי שמייצאים מטא-נתונים של DICOM ל-BigQuery, אפשר להריץ את השאילתה הבאה כדי לשרשר את ה-UID של המחקר, הסדרה והמופע לפורמט שתואם לדרישות של קובץ הסינון:
    SELECT CONCAT
        ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
        [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. אם השאילתה מחזירה קבוצת תוצאות גדולה, אפשר ליצור טבלה חדשה על ידי שמירת תוצאות השאילתה בטבלת יעד ב-BigQuery.
  3. אם שמרתם את תוצאות השאילתה בטבלת יעד, אתם יכולים לשמור את התוכן של טבלת היעד בקובץ ולייצא אותו ל-Cloud Storage. הוראות מפורטות מופיעות במאמר בנושא ייצוא נתונים מטבלה. הקובץ שייצאתם הוא קובץ המסנן. כשמציינים את המסנן בפעולת הייצוא, משתמשים במיקום של קובץ המסנן ב-Cloud Storage.

יצירה ידנית של קובץ מסנן

אתם יכולים ליצור קובץ מסנן עם תוכן בהתאמה אישית ולהעלות אותו לקטגוריה של Cloud Storage. כשמציינים את המסנן בפעולת הייצוא, משתמשים במיקום של קובץ המסנן ב-Cloud Storage. בדוגמה הבאה מוצג איך להעלות קובץ מסנן לקטגוריה של Cloud Storage באמצעות הפקודה gcloud storage cp:
gcloud storage cp FILTER_FILE gs://BUCKET

העברה בקובץ המסנן

אחרי שיוצרים קובץ מסנן, אפשר לקרוא לפעולת הייצוא של DICOM ולהעביר את קובץ המסנן באמצעות REST API. בדוגמאות הבאות מוצגות דרכים לייצא מטא-נתונים של DICOM באמצעות מסנן.

gcloud

כדי לייצא מטא-נתונים של DICOM לטבלה ב-BigQuery באמצעות מסנן, מריצים את הפקודה gcloud beta healthcare dicom-stores export bq.

  1. מייצאים את מטא-נתוני DICOM.

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • ‫DICOM_STORE_ID: מזהה מאגר DICOM
    • ‫BIGQUERY_DATASET_ID: השם של מערך נתונים קיים ב-BigQuery שאליו אתם מייצאים את המטא-נתונים של DICOM
    • ‫BIGQUERY_TABLE_ID: השם של טבלה חדשה או קיימת במערך הנתונים ב-BigQuery. אם פעולת הייצוא יוצרת טבלה חדשה, אפשר לעיין בדרישות לשם הטבלה במאמר בנושא מתן שמות לטבלאות.
    • ‫BUCKET: השם של קטגוריית Cloud Storage שמכילה את קובץ המסנן. אם קובץ המסנן נמצא בספרייה, צריך לכלול את הספרייה בנתיב.
    • ‫FILTER_FILE: המיקום והשם של קובץ המסנן בקטגוריית Cloud Storage
    • ‫WRITE_DISPOSITION: ערך של הטיפוס בן המנייה WriteDisposition. משתמשים באחד מהערכים הבאים:
      • ‫write-empty: ייצוא נתונים רק אם הטבלה ב-BigQuery ריקה.
      • ‫write-truncate: מחיקת כל הנתונים הקיימים בטבלת BigQuery לפני כתיבת מופעי DICOM.
      • ‫write-append: הוספת נתונים לטבלה ב-BigQuery.

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \
      --location=LOCATION \
      --dataset=DATASET_ID \
      --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \
      --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE \
      --write-disposition=WRITE_DISPOSITION

    ‏Windows (PowerShell)

    gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID `
      --location=LOCATION `
      --dataset=DATASET_ID `
      --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID `
      --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE `
      --write-disposition=WRITE_DISPOSITION

    Windows‏ (cmd.exe)

    gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ^
      --location=LOCATION ^
      --dataset=DATASET_ID ^
      --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^
      --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ^
      --write-disposition=WRITE_DISPOSITION
    התשובה היא: התשובה מכילה מזהה של פעולה ממושכת. פעולות ממושכות מוחזרות כשקריאות לשיטות עשויות להימשך זמן רב. הפקודה מבצעת דגימה של הפעולה הממושכת, ואז מדפיסה את שם הפעולה בשדה name אחרי שהייצוא מסתיים. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.

    תשובה

    Request issued for: [DICOM_STORE_ID]
    Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏
    name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
    

  2. כדי לראות פרטים נוספים על הפעולה, מריצים את הפקודה gcloud healthcare operations describe ומזינים את OPERATION_ID מהתשובה:

    לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫DATASET_ID: מזהה קבוצת הנתונים
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת

    מריצים את הפקודה הבאה:

    ‫Linux,‏ macOS או Cloud Shell

    gcloud healthcare operations describe OPERATION_ID \
        --project=PROJECT_ID \
        --dataset=DATASET_ID \
        --location=LOCATION

    ‏Windows (PowerShell)

    gcloud healthcare operations describe OPERATION_ID `
        --project=PROJECT_ID `
        --dataset=DATASET_ID `
        --location=LOCATION

    Windows‏ (cmd.exe)

    gcloud healthcare operations describe OPERATION_ID ^
        --project=PROJECT_ID ^
        --dataset=DATASET_ID ^
        --location=LOCATION

    אמורים לקבל תגובה שדומה לזו:

    תשובה

    done: true
    // If there were any errors, an `error` field displays instead of a `response` field.
    // See Troubleshooting long-running operations for a list of response codes.
    error: ERROR
      code: ERROR_CODE
      message: DESCRIPTION
    metadata:
      '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata'
      apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq'
      counter:
        success: 'SUCCESS_COUNT'
        // If there were any failures, they display in the `failure` field.
        failure: 'FAILURE_COUNT'
      createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ'
      logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL
    name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
    // The `response` field only displays if there were no errors.
    response:
      '@type': 'type.googleapis.com/google.protobuf.Empty'
    

REST

כדי לייצא מטא-נתונים של DICOM לטבלת BigQuery באמצעות מסנן, משתמשים בשיטה projects.locations.datasets.dicomStores.export.

  1. מייצאים את מטא-נתוני DICOM.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • ‫DICOM_STORE_ID: מזהה מאגר DICOM
    • ‫BIGQUERY_DATASET_ID: השם של מערך נתונים קיים ב-BigQuery שאליו אתם מייצאים את המטא-נתונים של DICOM
    • ‫BIGQUERY_TABLE_ID: השם של טבלה חדשה או קיימת במערך הנתונים ב-BigQuery. אם פעולת הייצוא יוצרת טבלה חדשה, אפשר לעיין בדרישות לשם הטבלה במאמר מתן שמות לטבלאות.
    • ‫BUCKET: השם של קטגוריית Cloud Storage שמכילה את קובץ המסנן. אם קובץ המסנן נמצא בספרייה, צריך לכלול את הספרייה בנתיב.
    • ‫FILTER_FILE: המיקום והשם של קובץ המסנן בקטגוריה של Cloud Storage
    • ‫WRITE_DISPOSITION: ערך של הטיפוס בן המנייה WriteDisposition. משתמשים באחד מהערכים הבאים:
      • ‫WRITE_EMPTY: ייצוא נתונים רק אם הטבלה ב-BigQuery ריקה.
      • ‫WRITE_TRUNCATE: מחיקת כל הנתונים הקיימים בטבלת BigQuery לפני כתיבת מופעי DICOM.
      • ‫WRITE_APPEND: הוספת נתונים לטבלה ב-BigQuery.

    תוכן בקשת JSON:

    {
      "bigqueryDestination": {
          "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      },
      "filterConfig": {
          "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE"
      }
    }
    

    כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

    curl

    שומרים את גוף הבקשה בקובץ בשם request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:

    cat > request.json << 'EOF'
    {
      "bigqueryDestination": {
          "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      },
      "filterConfig": {
          "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE"
      }
    }
    EOF

    לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"

    PowerShell

    שומרים את גוף הבקשה בקובץ בשם request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:

    @'
    {
      "bigqueryDestination": {
          "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID",
          "writeDisposition": "WRITE_DISPOSITION"
      },
      "filterConfig": {
          "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE"
      }
    }
    '@  | 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; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content

    APIs Explorer

    מעתיקים את גוף הבקשה ופותחים את דף העזר של השיטה. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. מדביקים את גוף הבקשה בכלי הזה, ממלאים את כל שדות החובה ולוחצים על Execute.

    הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת (LRO). פעולות ארוכות טווח מוחזרות כשקריאות לשיטות עשויות להימשך זמן נוסף עד להשלמה. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.

  2. כדי לקבל את הסטטוס של הפעולה הממושכת, משתמשים בשיטה projects.locations.datasets.operations.get.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • ‫DATASET_ID: מזהה קבוצת הנתונים
    • ‫LOCATION: המיקום של מערך הנתונים
    • ‫OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת

    כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:

    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

    APIs Explorer

    פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.

    הפלט שיתקבל: כשהתשובה מכילה את הערך "done": true, סימן שהפעולה הממושכת הסתיימה.

הרצת שאילתות וניתוח של נתוני DICOM ב-BigQuery

אחרי שמייצאים את המטא-נתונים של DICOM לטבלה ב-BigQuery, אפשר להריץ שאילתות לדוגמה כדי לקבל פרטים נוספים על המטא-נתונים. בדוגמאות הבאות אפשר לראות איך להריץ שאילתות לכמה תרחישי שימוש נפוצים.

חיפוש במטא-נתונים

נניח שאתם רוצים לחפש כמות גדולה של מטא-נתונים שקשה לחפש במערכות אחרות, כמו מערכת לארכוב תמונות ותקשורת (PACS) או ארכיון נייטרלי של ספקים (VNA). השאילתה הבאה מראה איך לחפש את הערך PatientID של מטופל ולהשתמש בנתיב DICOMweb כדי לאחזר מקרים ספציפיים של תמונות. בדוגמה נעשה שימוש בטבלה chc-nih-chest-xray.nih_chest_xray.nih_chest_xray מתוך מערך הנתונים של צילומי רנטגן של החזה של NIH.

#standardSQL
SELECT CONCAT('/dicomWeb/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) as DICOMwebPath
FROM `chc-nih-chest-xray.nih_chest_xray.nih_chest_xray`
WHERE PatientID = '19045';

השאילתה מחזירה את המחקרים שמשויכים למטופל. בדוגמה הבאה מוצגת תגובה בפורמט JSON:

[
  {
    "DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.169629990647803559688464142879817265366193/series/1.3.6.1.4.1.11129.5.5.141990184899344268273968625887396932057061/instances/1.3.6.1.4.1.11129.5.5.162448513493627342869165322873398445570578"
  },
  {
    "DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.114160532832901355654444239008681456919023/series/1.3.6.1.4.1.11129.5.5.178361108150351071908200174504411112440700/instances/1.3.6.1.4.1.11129.5.5.145959606905209488520697484018030440952428"
  },
  {
    "DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.177801331756958922168115732894519725643007/series/1.3.6.1.4.1.11129.5.5.134128639331055702643451404466208677561042/instances/1.3.6.1.4.1.11129.5.5.148534317486838863760908141408862094292875"
  },
  {
    "DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.119570482687494886334491471870663517807852/series/1.3.6.1.4.1.11129.5.5.148050768676645373034111775531663876425927/instances/1.3.6.1.4.1.11129.5.5.111153708388576066195389700503245704293300"
  },
  {
    "DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.144704399171290022427247626928443085419319/series/1.3.6.1.4.1.11129.5.5.190285793344339390593165731988543561416633/instances/1.3.6.1.4.1.11129.5.5.110245902713751842026864359179754889505217"
  },
  {
    "DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.172276126220388966649736649950361623806435/series/1.3.6.1.4.1.11129.5.5.171512371498506519035489729484464872160452/instances/1.3.6.1.4.1.11129.5.5.111721417729733087384317002785068394901165"
  }
]

שליחת שאילתה לגבי המחקרים האחרונים

נניח שאתם רוצים לאכלס רשימת עבודה של קריאת PACS במחקרים העדכניים ביותר ממערך הנתונים שלכם.

השאילתה הבאה מראה איך לאחזר ולהציג את המחקרים האחרונים יחד עם ספירת המופעים ומטא-נתונים רלוונטיים. בדוגמה נעשה שימוש בטבלה bigquery-public-data.idc_v5.dicom_metadata ממערך הנתונים TCIA.

#standardSQL
SELECT
  MIN(CONCAT(StudyDate, ' ', StudyTime)) as StudyDateTime, MIN(PatientID) as PatientID, StudyInstanceUID, COUNT(*) as InstanceCount
FROM
 `bigquery-public-data.idc_v5.dicom_metadata` AS dicom
GROUP BY StudyInstanceUID
ORDER BY StudyDateTime DESC
LIMIT 10;

השאילתה מחזירה את המידע הבא:

  • המחקרים האחרונים שהוזנו למערכת, ומתי הם הוזנו
  • המטופל שמשויך לכל מחקר
  • מזהה המחקר (UID)
  • מספר המופעים שמשויכים למחקר

התגובה הבאה היא בפורמט JSON:

[
  {
    "StudyDateTime": "2021-07-11 00:38:22",
    "PatientID": "C3L-01924",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2466232160.763753303.1625963902816.3.0",
    "InstanceCount": "4"
  }, {
    "StudyDateTime": "2021-07-10 23:52:10",
    "PatientID": "C3L-01924",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2463459463.1074873794.1625961130119.3.0",
    "InstanceCount": "4"
  }, {
    "StudyDateTime": "2021-07-10 23:31:13",
    "PatientID": "C3L-02513",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2462202516.1453336368.1625959873172.3.0",
    "InstanceCount": "7"
  }, {
    "StudyDateTime": "2021-07-10 23:25:17",
    "PatientID": "C3L-01924",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2461846936.496969835.1625959517592.3.0",
    "InstanceCount": "4"
  }, {
    "StudyDateTime": "2021-07-10 22:35:16",
    "PatientID": "C3L-02515",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2458845347.1905567435.1625956516003.3.0",
    "InstanceCount": "6"
  }, {
    "StudyDateTime": "2021-07-10 21:49:46",
    "PatientID": "C3L-02515",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2456116127.1264613559.1625953786783.3.0",
    "InstanceCount": "7"
  }, {
    "StudyDateTime": "2021-07-10 21:46:04",
    "PatientID": "C3L-02513",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2455894080.1705479047.1625953564736.3.0",
    "InstanceCount": "6"
  }, {
    "StudyDateTime": "2021-07-10 21:13:30",
    "PatientID": "C3L-01924",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453939652.2052768474.1625951610308.3.0",
    "InstanceCount": "4"
  }, {
    "StudyDateTime": "2021-07-10 21:10:17",
    "PatientID": "C3L-02515",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453746219.164669562.1625951416875.3.0",
    "InstanceCount": "6"
  }, {
    "StudyDateTime": "2021-07-10 20:05:48",
    "PatientID": "C3L-02513",
    "StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2449877792.1996682667.1625947548448.3.0",
    "InstanceCount": "6"
  }
]

מגבלות והתנהגות נוספת

אם לתג DICOM אין סוג נתמך ב-BigQuery (שמפורט בסוגי VR שלא נכללים), הוא מופיע בעמודה נפרדת (שנקראת DroppedTags.TagName) בטבלת היעד ב-BigQuery.

פתרון בעיות בבקשות לייצוא DICOM

אם מתרחשות שגיאות במהלך בקשה לייצוא מטא-נתונים של DICOM ל-BigQuery, השגיאות מתועדות ב-Cloud Logging. מידע נוסף זמין במאמר צפייה ביומני שגיאות ב-Cloud Logging.