בדף הזה מוסבר איך למחוק משאבי FHIR בכמות גדולה ממאגר FHIR באמצעות פעולה ממושכת.
אפשר למחוק כמה משאבי FHIR בפעולה אחת על סמך מסננים כמו סוג המשאב וזמן העדכון האחרון, או על ידי ציון רשימה של מזהי משאבים ספציפיים בקובץ Cloud Storage. האפשרות הזו שימושית לניהול מחזור החיים של הנתונים ולחיסכון בעלויות.
לפני שמתחילים
לפני שמבצעים מחיקה בכמות גדולה של משאבי FHIR, צריך לוודא את הדברים הבאים:
- צריכה להיות לכם הרשאה מסוג
healthcare.fhirStores.bulkDeleteבמאגר FHIR. - אם מציינים
gcsDestination, לחשבון השירות Cloud Healthcare Service Agent צריך להיות התפקידroles/storage.objectAdminבקטגוריית היעד. מידע נוסף זמין במאמר הרשאות Cloud Storage למאגר FHIR. - אם מציינים
gcsSource, לחשבון השירות Cloud Healthcare Service Agent צריך להיות התפקידroles/storage.objectViewerבקטגוריית המקור. מידע נוסף מופיע במאמר בנושא מחיקה בכמות גדולה של משאבי FHIR.
מחיקה בכמות גדולה של משאבי FHIR
כדי למחוק משאבי FHIR בכמות גדולה, משתמשים בשיטה projects.locations.datasets.fhirStores.bulkDelete.
השיטה הזו מחזירה פעולה ממושכת (LRO). אפשר לעקוב אחרי הסטטוס של הפעולה הממושכת באמצעות שם הפעולה שמוחזר מקריאה ל-API.
בדוגמה הבאה מוצגת בקשת POST למחיקה בכמות גדולה של כל משאבי Observation ו-Encounter בחנות FHIR שעודכנו לאחרונה לפני חותמת זמן ספציפית.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud LOCATION: המיקום של מערך הנתונים-
DATASET_ID: מערך הנתונים הראשי של מאגר FHIR -
FHIR_STORE_ID: מזהה מאגר FHIR
תוכן בקשת JSON:
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
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/fhirStores/FHIR_STORE_ID:bulkDelete"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
@'
{
"type": "Observation,Encounter",
"versionConfig": "ALL",
"until": "2025-01-01T00:00:00Z",
"gcsDestination": {
"uriPrefix": "gs://BUCKET/DIRECTORY"
}
}
'@ | 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/fhirStores/FHIR_STORE_ID:bulkDelete" | Select-Object -Expand Content
מחיקה בכמות גדולה של משאבי FHIR לפי מזהה משאב
כדי למחוק רשימה ספציפית של משאבי FHIR, צריך להגדיר את השדה gcsSource.uri למיקום ב-Cloud Storage של קובץ אחד או יותר שמכילים את מזהי המשאבים למחיקה.
הקבצים להזנה צריכים לעמוד בדרישות הבאות:
- כל שורה מכילה משאב אחד בפורמט
RESOURCE_TYPE/RESOURCE_ID, לדוגמהPatient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281. לא ניתן להשתמש במזהי משאבים גולמיים ללא סוג משאב. - מזהה ה-URI חייב להפנות לקובץ יחיד, כמו
gs://BUCKET/ids.txt, או לדפוס של תו כללי, כמוgs://BUCKET/DIRECTORY/*.ndjson. ה-URI לא יכול להיות bucket או ספרייה שמסתיימים ב-/.
התוכן הבא הוא דוגמה לקובץ קלט תקין:
Patient/8af1cf10-0fec-4bb3-bde1-77f56a3d8281 Observation/2c9d4a3e-6b1f-4e2a-9f0d-1a2b3c4d5e6f Encounter/7f3e2d1c-0b9a-4c8d-8e7f-6a5b4c3d2e1f
חשוב לשים לב להתנהגות הבאה:
- אי אפשר להשתמש בשדה
gcsSourceיחד עם המסנניםtypeאוuntil. אם מציינים אתgcsSourceיחד עם אחד מהמסננים, הבקשה תיכשל. - אפשר להשתמש ב-
gcsSourceעםversionConfigועםgcsDestination. - המערכת מתעלמת משורות ריקות. השורה לא תעובד אם היא לא בפורמט
RESOURCE_TYPE/RESOURCE_IDאו אם היא מכילה סוג משאב שלא נתמך, והפעולה תימשך. - מערכת FHIR מדלגת על מזהי משאבים שלא קיימים במאגר.
- אל תשנו או תמחקו את קובצי הקלט עד שהפעולה תסתיים.
בדוגמה הבאה מוצגת בקשת POST למחיקה בכמות גדולה של משאבי FHIR שמופיעים בקובץ Cloud Storage.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
LOCATION: המיקום של מערך הנתונים -
DATASET_ID: מערך הנתונים הראשי של מאגר FHIR -
FHIR_STORE_ID: מזהה מאגר FHIR -
BUCKET/PATH_TO_IDS_FILE: המיקום ב-Cloud Storage של הקובץ או תבנית wildcard שמפרטת את המשאבים למחיקה בפורמטRESOURCE_TYPE/RESOURCE_ID
תוכן בקשת JSON:
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
cat > request.json << 'EOF'
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_FILE"
}
}
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/fhirStores/FHIR_STORE_ID:bulkDelete"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json.
כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:
@'
{
"versionConfig": "ALL",
"gcsSource": {
"uri": "gs://BUCKET/PATH_TO_IDS_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" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:bulkDelete" | Select-Object -Expand Content
הצגת הסטטוס של פעולות ארוכות טווח
כדי לראות את הסטטוס של פעולת המחיקה בכמות גדולה, משתמשים בשיטה operations.get עם שם הפעולה שהוחזר מהקריאה bulkDelete.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud LOCATION: המיקום של מערך הנתונים-
DATASET_ID: מערך הנתונים הראשי של מאגר FHIR -
OPERATION_ID: המזהה שמוחזר מהפעולה הממושכת
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1alpha2/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/v1alpha2/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
מעקב אחרי משאבים שנמחקו
בסיום פעולת המחיקה בכמות גדולה, אם צוין gcsDestination, נוצר קובץ סיכום ב-Cloud Storage. הקובץ הזה מכיל רשימה של מזהי המשאבים של המשאבים בגרסה הנוכחית שנמחקו במהלך הפעולה.
מגבלות
אין ערובה לשלמות ההפניה במהלך פעולת מחיקה בכמות גדולה. מומלץ להשתמש בפעולה הזו רק כשאין צורך בשלמות רפרנציאלית או כשברור שהיא תתקיים אחרי הפעולה.