סוגי אחסון (storage classes) של DICOM

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

הדף הזה מיועד למשתמשים טכניים שכבר מכירים את DICOM ואת Cloud Healthcare API.

סקירה כללית

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

יכול להיות שתרצו לשנות את סוג האחסון של אובייקטים בפורמט DICOM בהתאם לתדירות שבה אתם ניגשים לאובייקט או למשך הזמן שבו צריך לשמור את האובייקט. לדוגמה:

  • כדי לחסוך בעלויות החיוב, אפשר להעביר תמונות DICOM שמתבצעת אליהן גישה לעיתים רחוקות מ-Standard Storage ל-Nearline Storage או ל-Coldline Storage.
  • אפשר להעביר נתוני מטופלים שצריך לשמור מסיבות משפטיות ל-Archive Storage, שהוא סוג האחסון הכי זול ועמיד.

סוגי אחסון זמינים של DICOM

אפשר להשתמש בסוגי האחסון הבאים לאובייקטים של DICOM:

  • רגיל (ברירת מחדל)
  • Nearline
  • Coldline
  • העברה לארכיון

תמחור של סוגי אחסון

לכל סוג אחסון יש מבנה תמחור משלו. שינוי סוג האחסון של אובייקטים בפורמט DICOM עשוי להשפיע על עלויות החיוב. למידע נוסף, תוכלו לקרוא את המאמרים הבאים:

שינוי סוג האחסון של אובייקטים ספציפיים בפורמט DICOM

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

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

REST

  1. משנים את סוג האחסון של מופע DICOM באמצעות השיטה projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

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

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • LOCATION: המיקום של מערך הנתונים
    • DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • DICOM_STORE_ID: מזהה מאגר DICOM
    • STUDY_INSTANCE_UID: המזהה הייחודי של מופע המחקר
    • SERIES_INSTANCE_UID: המזהה הייחודי של מופע הסדרה
    • INSTANCE_UID: המזהה הייחודי של המכונה
    • STORAGE_CLASS: סוג האחסון של מופע DICOM. אחד מהערכים STANDARD, NEARLINE, COLDLINE או ARCHIVE.

    תוכן בקשת JSON:

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    

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

    curl

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

    cat > request.json << 'EOF'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings"

    PowerShell

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

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "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; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:setBlobStorageSettings" | Select-Object -Expand Content

    APIs Explorer

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

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

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

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

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • LOCATION: המיקום של מערך הנתונים
    • DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • 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
    הפלט שיתקבל: כשהתשובה מכילה את הערך "done": true, הפעולה ארוכת הטווח (LRO) הסתיימה.

שינוי סוג האחסון של כמה אובייקטים באמצעות קובץ מסנן

בסעיפים הבאים מוסבר איך ליצור קובץ מסנן ולהשתמש בו כדי לשנות את סוג האחסון של אובייקטים מסוג 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.

אחרי שמייצאים את המטא-נתונים, מבצעים את השלבים הבאים:

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

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

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

  3. שומרים את תוצאות השאילתה בקובץ ומייצאים אותו ל-Cloud Storage. אם שמרתם את תוצאות השאילתה בטבלת יעד חדשה בשלב 2, תוכלו לעיין במאמר בנושא ייצוא נתונים מטבלה כדי לייצא את תוכן הטבלה ל-Cloud Storage.

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

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

כדי ליצור קובץ מסנן באופן ידני:

  1. יוצרים קובץ מסנן שמכיל את אובייקטי ה-DICOM שרוצים לסנן.
  2. מעלים את קובץ המסנן ל-Cloud Storage. הוראות מפורטות זמינות במאמר העלאת אובייקטים ממערכת קבצים.

שימוש בקובץ מסנן

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

REST

  1. משנים את סוג האחסון של מופעי DICOM בקובץ המסנן באמצעות השיטה projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

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

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • LOCATION: המיקום של מערך הנתונים
    • DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • DICOM_STORE_ID: מזהה מאגר DICOM
    • STORAGE_CLASS: סוג האחסון של אובייקטים מסוג DICOM. אחד מהערכים STANDARD, NEARLINE, COLDLINE או ARCHIVE.
    • CLOUD_STORAGE_BUCKET: השם של קטגוריה של Cloud Storage שמכילה את קובץ המסנן
    • FILTER_FILE_PATH: ה-URI מוגדר במלואו של קובץ המסנן בקטגוריה של Cloud Storage

    תוכן בקשת JSON:

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    

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

    curl

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

    cat > request.json << 'EOF'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    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:setBlobStorageSettings"

    PowerShell

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

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    '@  | 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:setBlobStorageSettings" | Select-Object -Expand Content
    הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת (LRO). פעולות ארוכות טווח מוחזרות כשקריאות לשיטות עשויות להימשך זמן נוסף עד להשלמה. שימו לב לערך של OPERATION_ID. תצטרכו את הערך הזה בשלב הבא.

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

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

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • LOCATION: המיקום של מערך הנתונים
    • DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
    • 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
    הפלט שיתקבל: כשהתשובה מכילה את הערך "done": true, הפעולה ארוכת הטווח (LRO) הסתיימה.

הצגת סוג האחסון של אובייקט DICOM

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

בקטעים הבאים מוסבר איך לראות את סוג האחסון של מופע DICOM.

קבלת מידע על סוג האחסון של אובייקט DICOM

בדוגמאות הבאות אפשר לראות איך משתמשים בשיטה instances.getStorageInfo כדי להציג את סוג האחסון של אובייקטים מסוג DICOM.

REST

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • LOCATION: המיקום של מערך הנתונים
  • DATASET_ID: מערך הנתונים הראשי של מאגר DICOM
  • DICOM_STORE_ID: מזהה מאגר DICOM
  • STUDY_INSTANCE_UID: המזהה הייחודי של מופע המחקר
  • SERIES_INSTANCE_UID: המזהה הייחודי של מופע הסדרה
  • INSTANCE_UID: המזהה הייחודי של המכונה

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

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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo"

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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo" | Select-Object -Expand Content

APIs Explorer

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

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

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

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

השאילתה הבאה מראה איך לאחזר מתוך מערך נתונים ב-BigQuery עד 1,000 מופעים של DICOM: מזהה UID של מופע המחקר, מזהה UID של מופע הסדרה, מזהה UID של המופע, גודל האחסון וסוג האחסון:

SELECT StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, BlobStorageSize, StorageClass
FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE
LIMIT 1000

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • BIGQUERY_DATASET: מערך הנתונים הראשי ב-BigQuery של הטבלה שמכילה את המטא-נתונים של DICOM שיוצאו
  • BIGQUERY_TABLE: הטבלה ב-BigQuery שמכילה את המטא-נתונים של DICOM שיוצאו