בדף הזה מוסבר איך להשתמש בשחזור לנקודת זמן (PITR) כדי לשחזר משאבי FHIR במאגר FHIR למצב שהיה ב-21 הימים האחרונים. אפשר להשתמש ב-PITR כדי לשחזר שינויים לא רצויים, כמו מחיקה של משאבי FHIR בטעות.
לפני שמתחילים
בקשות PITR מסווגות כבקשות לפעולות מתקדמות, והחיוב עליהן הוא בהתאם. לפני שמשתמשים ב-PITR, כדאי לעיין בתמחור של בקשות מתקדמות לפעולות.
היסטוריית הגרסאות של משאבי FHIR ו-PITR
התכונה PITR לא תלויה בהיסטוריית הגרסאות של משאבי FHIR.
עדיין אפשר להשתמש ב-PITR אם השדה disableResourceVersioning במאגר FHIR הוא true, או אם בוטלו הגרסאות ההיסטוריות של משאב FHIR.
תהליך עבודה לשחזור
כדי לוודא שהשחזור בסביבת הייצור יפעל כמו שצריך, כדאי קודם לבצע הרצה יבשה. הפלט של ההרצה היבשה הוא קובץ אחד או יותר שמכילים את המזהים והסוגים של משאבי ה-FHIR לשחזור. לפני שמריצים שוב את השחזור בייצור, חשוב לוודא שהקבצים שהתקבלו תקינים.
כדי לשחזר משאבים ספציפיים או משאבים לפי קריטריוני סינון, צריך לציין מסנן.
הרצת בדיקה
לפני שמשחזרים משאבי FHIR בסביבת הייצור, כדאי לבצע הרצה יבשה.
בדוגמאות הבאות אפשר לראות איך לבצע הרצה יבשה באמצעות המתודה fhirStores.rollback.
המסוף
כדי לבצע החזרה למצב קודם של מאגר FHIR למצב קודם, מבצעים את השלבים הבאים:
- נכנסים לדף Datasets במסוף Google Cloud .
- בוחרים את מערך הנתונים שמכיל את מאגר ה-FHIR שרוצים לבטל את השינויים שבו.
- ברשימה Data Stores (מאגרי נתונים), לוחצים על התפריט הנפתח Actions (פעולות) של מאגר הנתונים שרוצים לבצע בו שחזור. בתפריט, לוחצים על Rollback.
- בשלב הראשון, אפשר להגדיר פרמטרים להחזרה לגרסה קודמת לפי היקפים רחבים יותר, כמו נקודת זמן שאליה רוצים להחזיר את מאגר FHIR, או להחזיר את כל הפעולות מסוג מסוים שבוצעו במאגר FHIR. שימו לב שפרמטר הנקודה בזמן הוא חובה.
- לוחצים על Continue.
-
בשלב השני, אפשר להגדיר פרמטרים אופציונליים שקשורים למשאבים. אפשר לבחור לבטל את כל המשאבים מסוג מסוים (למשל,
Patient), לספק רשימה של כל המשאבים לפי מזהה (למשל,Patient/123) לביטול (מאוחסן ב-Google Cloud Storage), או לציין מסננים על ערכי השדותresource.metaשל המשאבים לביטול.
מידע נוסף עלresource.metaמסננים זמין במסמכי התיעוד של ה-API . - לוחצים על Continue.
-
בשלב האחרון, אפשר להגדיר את ההתנהגות של החזרה לגרסה הקודמת. בוחרים יעד פלט לתוצאות של החזרה למצב הקודם ב-Google Cloud Storage (זהו שדה חובה) ומציינים אם רוצים להפעיל הרצה יבשה ולהתעלם מהחזרות קודמות למצב הקודם.
- הרצת ניסיון לא תשפיע בפועל על המשאבים בחנות. פלט התוצאות ביעד שנבחר ב-Cloud Storage יציין מה יקרה אם הביטול ייכנס לתוקף. מפעילים את האפשרות הזו.
- אם האפשרות התעלמות מהחזרות קודמות מסומנת, ההשפעות של פעולות קודמות של החזרה למצב הקודם לא ייחשבו כשמבצעים את ההחזרה למצב הקודם.
- לוחצים על החזרה לגרסה קודמת. המערכת תאתחל פעולה.
REST
שחזור משאבי ה-FHIR.
כדי לבצע הרצה יבשה, מוודאים שהשדה
forceהואfalse.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
LOCATION: המיקום של מערך הנתונים -
DATASET_ID: מערך הנתונים הראשי של מאגר FHIR -
FHIR_STORE_ID: מזהה מאגר ה-FHIR -
RECOVERY_TIMESTAMP: נקודת שחזור מ-21 הימים האחרונים. צריך להשתמש בפורמט RFC 3339. מציינים את השעה עד לרמת השנייה וכוללים אזור זמן, למשל2015-02-07T13:28:17.239+02:00או2017-01-01T00:00:00Z. -
CLOUD_STORAGE_BUCKET: ה-URI מוגדר במלואו של תיקייה או bucket ב-Cloud Storage שבהם נכתבים קובצי הפלט
תוכן בקשת JSON:
{ "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת (LRO). פעולות ארוכות טווח מוחזרות כשקריאות לשיטות עשויות להימשך זמן נוסף עד להשלמה. שימו לב לערך שלcurl
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:cat > request.json << 'EOF' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" } 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/fhirStores/FHIR_STORE_ID:rollback"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:@' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" } '@ | 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/fhirStores/FHIR_STORE_ID:rollback" | Select-Object -Expand ContentAPIs Explorer
מעתיקים את גוף הבקשה ופותחים את דף העזר של השיטה. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. מדביקים את גוף הבקשה בכלי הזה, ממלאים את כל שדות החובה ולוחצים על Execute.
OPERATION_ID. תצטרכו להשתמש בערך הזה בשלב הבא.-
כדי לקבל את הסטטוס של הפעולה הממושכת, משתמשים בשיטה
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 ContentAPIs Explorer
פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.
"done": true, הפעולה הממושכת הסתיימה.-
צפייה בקובצי הפלט של הרצת בדיקה
כל הרצת בדיקה יוצרת קובץ אחד או יותר שמכילים את המזהים והסוגים של משאבי FHIR לשחזור. הקבצים נוצרים בתיקיית משנה בתיקייה rollback_resources בקטגוריה של Cloud Storage. שם תיקיית המשנה הוא מזהה ה-LRO שמוחזר בתגובה fhirStores.rollback. כדי להציג את הקבצים ולוודא שהשחזור פועל כמצופה, ראו צפייה במטא-נתונים של אובייקט.
מספר הקבצים הוא יחסי למספר משאבי ה-FHIR ששוחזרו.
שמות הקבצים הם בפורמט trial-NUMBER-of-TOTAL_NUMBER.txt, כאשר NUMBER הוא מספר הקובץ ו-TOTAL_NUMBER הוא המספר הכולל של הקבצים.
סכימת קובץ הפלט של הרצת בדיקה
קבצי הפלט משחזור ניסיון משתמשים בסכימה שמוצגת בטבלה הבאה:
RESOURCE_TYPE |
RESOURCE_ID |
TIMESTAMP |
|---|---|---|
| סוג משאב FHIR. | מזהה משאב FHIR. | השעה שבה נוצר או עודכן משאב FHIR בחנות FHIR. |
שחזור בסביבת הייצור
לפני שמשחזרים בסביבת הייצור, מומלץ לבצע הרצה יבשה ולבדוק את קבצי הפלט של ההרצה היבשה כדי לוודא שהשחזור בסביבת הייצור יפעל כמצופה.
בדוגמאות הבאות אפשר לראות איך לשחזר משאבי FHIR בסביבת ייצור באמצעות השיטה fhirStores.rollback.
המסוף
כדי לבצע החזרה למצב קודם של מאגר FHIR למצב קודם, מבצעים את השלבים הבאים:
- נכנסים לדף Datasets במסוף Google Cloud .
- בוחרים את מערך הנתונים שמכיל את מאגר ה-FHIR שרוצים לבטל את השינויים שבו.
- ברשימה Data Stores (מאגרי נתונים), לוחצים על התפריט הנפתח Actions (פעולות) של מאגר הנתונים שרוצים לבצע בו שחזור. בתפריט, לוחצים על Rollback.
- בשלב הראשון, אפשר להגדיר פרמטרים להחזרה לגרסה קודמת לפי היקפים רחבים יותר, כמו נקודת זמן שאליה רוצים להחזיר את מאגר FHIR, או להחזיר את כל הפעולות מסוג מסוים שבוצעו במאגר FHIR. שימו לב שפרמטר הנקודה בזמן הוא חובה.
- לוחצים על Continue.
-
בשלב השני, אפשר להגדיר פרמטרים אופציונליים שקשורים למשאבים. אפשר לבחור לבטל את כל המשאבים מסוג מסוים (למשל,
Patient), לספק רשימה של כל המשאבים לפי מזהה (למשל,Patient/123) לביטול (מאוחסן ב-Google Cloud Storage), או לציין מסננים על ערכי השדותresource.metaשל המשאבים לביטול.
מידע נוסף עלresource.metaמסננים זמין במאמרי העזרה של ה-API . - לוחצים על Continue.
-
בשלב האחרון, אפשר להגדיר את ההתנהגות של החזרה לגרסה הקודמת. בוחרים יעד פלט לתוצאות של החזרה למצב הקודם ב-Google Cloud Storage (זהו שדה חובה) ומציינים אם רוצים להפעיל הרצה יבשה ולהתעלם מהחזרות קודמות למצב הקודם.
- הרצת ניסיון לא תשפיע בפועל על המשאבים בחנות. פלט התוצאות ביעד שנבחר ב-Cloud Storage יציין מה יקרה אם הביטול ייכנס לתוקף. משביתים את האפשרות הזו.
- אם האפשרות התעלמות מהחזרות קודמות נבחרה, ההשפעות של פעולות קודמות של החזרת קוד לא יובאו בחשבון כשמבצעים את החזרת הקוד הזו.
- לוחצים על החזרה לגרסה קודמת. המערכת תאתחל פעולה.
REST
שחזור משאבי ה-FHIR.
מוודאים שהשדה
forceהואtrue.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
LOCATION: המיקום של מערך הנתונים -
DATASET_ID: מערך הנתונים הראשי של מאגר FHIR -
FHIR_STORE_ID: מזהה מאגר ה-FHIR -
RECOVERY_TIMESTAMP: נקודת שחזור מ-21 הימים האחרונים. צריך להשתמש בפורמט RFC 3339. מציינים את השעה עד לרמת השנייה וכוללים אזור זמן, למשל2015-02-07T13:28:17.239+02:00או2017-01-01T00:00:00Z. -
CLOUD_STORAGE_BUCKET: ה-URI מוגדר במלואו של תיקייה או bucket ב-Cloud Storage שבהם נכתבים קובצי הפלט
תוכן בקשת JSON:
{ "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
הפלט שיתקבל: התשובה מכילה מזהה של פעולה ממושכת (LRO). פעולות ארוכות טווח מוחזרות כשקריאות לשיטות עשויות להימשך זמן נוסף עד להשלמה. שימו לב לערך שלcurl
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:cat > request.json << 'EOF' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" } 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/fhirStores/FHIR_STORE_ID:rollback"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:@' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" } '@ | 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/fhirStores/FHIR_STORE_ID:rollback" | Select-Object -Expand ContentAPIs Explorer
מעתיקים את גוף הבקשה ופותחים את דף העזר של השיטה. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. מדביקים את גוף הבקשה בכלי הזה, ממלאים את כל שדות החובה ולוחצים על Execute.
OPERATION_ID. תצטרכו להשתמש בערך הזה בשלב הבא.-
כדי לקבל את הסטטוס של הפעולה הממושכת, משתמשים בשיטה
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 ContentAPIs Explorer
פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.
"done": true, הפעולה הממושכת הסתיימה.-
צפייה בקובצי הפלט של שחזור הייצור
שחזור של סביבת ייצור יוצר את הקבצים הבאים. הקבצים נוצרים בתיקיית משנה בתיקייה rollback_resources בקטגוריה של Cloud Storage. שם תיקיית המשנה הוא מזהה ה-LRO שמוחזר בתגובה fhirStores.rollback. כדי להציג את הקבצים, ראו צפייה במטא-נתונים של אובייקט.
-
success-NUMBER-of-TOTAL_NUMBER.txt: מכיל משאבי FHIR ששוחזרו בהצלחה. -
fail-NUMBER-of-TOTAL_NUMBER.txt: מכיל משאבי FHIR שלא הצליחו לשחזר. קובץ ריק נוצר גם אם לא היו כשלים.
בשמות הקבצים, NUMBER הוא מספר הקובץ ו-TOTAL_NUMBER הוא המספר הכולל של הקבצים.
סכימת קובץ פלט של ייצור
קבצים של הצלחה ושל כשל משחזור של סביבת ייצור משתמשים בסכימה הבאה. קבצי השגיאות מכילים עמודה נוספת של ERROR_MESSAGE.
RESOURCE_TYPE |
RESOURCE_ID |
ROLLBACK_VERSION_ID |
NEW_VERSION_ID |
ERROR_MESSAGE (קבצי שגיאות בלבד) |
|---|---|---|---|---|
| סוג משאב FHIR. | מזהה משאב FHIR. | מזהה הגרסה הנוכחית של המשאב בזמן שהשחזור התחיל. | מזהה הגרסה הנוכחית של המשאב אחרי השחזור. אם הערך של disableResourceVersioning הוא true, או אם שחזור משאב יגרום למחיקת המשאב, הערכים של ROLLBACK_VERSION_ID ו-NEW_VERSION_ID יהיו ריקים. |
רק קובצי שגיאות. תיאור של הסיבה לכך שלא ניתן לשחזר את משאב ה-FHIR. |
שימוש במסננים לשחזור משאבי FHIR ספציפיים
בקטעים הבאים מוסבר איך להשתמש במסננים כדי לשחזר משאבי FHIR על סמך קריטריון סינון.
כששולחים בקשת fhirStores.rollback, מציינים את המסננים באובייקט RollbackFhirResourceFilteringFields.
אפשר לשלב בין מסננים או להשתמש בהם בנפרד בכמה תרחישי שימוש, כולל:
- שחזור משאבי FHIR ספציפיים אחרי מחיקה בטעות, בלי לשנות משאבים אחרים.
- שחזור מאגר FHIR למצב שלפני פעולת ייבוא ספציפית של משאבי FHIR מסוימים.
שימוש בקובץ מסנן
כברירת מחדל, PITR משחזר את כל משאבי ה-FHIR בחנות FHIR. כדי לשחזר משאבי FHIR ספציפיים, צריך לציין את סוגי המשאבים ואת מזהי המשאבים שלהם בקובץ, ואז להעלות את הקובץ ל-Cloud Storage. מציינים את המיקום של הקובץ בשדה inputGcsObject.
כדי לקרוא קובץ סינון מ-Cloud Storage, צריך לתת הרשאות לחשבון השירות של סוכן Cloud Healthcare. מידע נוסף זמין במאמר קריאת קבצים של מסננים מ-Cloud Storage.
לקובץ המסנן יכולה להיות כל סיומת. הוא חייב להשתמש בסכימה הבאה, עם משאב FHIR אחד בכל שורה:
FHIR_RESOURCE_TYPE/FHIR_RESOURCE_ID
לדוגמה, כדי לשחזר משאב Patient עם המזהה 8f25b0ac ושני משאבי Observation עם המזהים d507417e90e ו-e9950d90e, צריך לציין את הפרטים הבאים בקובץ המסנן:
Patient/8f25b0ac
Observation/d507417e90e
Observation/e9950d90e
שימוש בפונקציות מותאמות אישית
Cloud Healthcare API מספק את פונקציות הסינון המותאמות אישית הבאות.
אפשר לשלב את הפונקציות בהתאמה אישית עם השדה rollbackTime כדי להחיל מסנן נוסף.
tagפרטים תחביר הפונקציה tag("system") = "code"תיאור מסננים משאבי FHIR על סמך רכיבMeta.tagהמשאב.ארגומנטים systemstringכתובת URL שמפנה למערכת קודים. מידע נוסף מופיע במאמר שימוש בקודים במשאבים.codestringערך שמזהה קונספט כפי שהוא מוגדר במערכת הקודים. מידע נוסף מופיע במאמר שימוש בקודים במשאבים.
extension_value_tsפרטים תחביר הפונקציה extension_value_ts("url")תיאור מסנן משאבי FHIR על סמך הערךurlברכיבextension, כאשרurlהוא חותמת זמן של מערכת Unix. האופרטורים הבאים להשוואה נתמכים:=!=<><=>=
ארגומנטים urlstringכתובת ה-URL הקנונית של משאב StructureDefinition שמגדיר תוסף. לדוגמה, ברכיבextensionהבא, הערך שלurlהואhttp://hl7.org/fhir/StructureDefinition/timezone:"extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/timezone", "valueCode" : "America/New_York" }]מידע נוסף מופיע במאמר בנושא הגדרת תוספים.
סינון לפי סוג משאב FHIR
כדי לסנן משאבי FHIR בצורה רחבה יותר על סמך סוג המשאב בלבד, מציינים את סוגי המשאבים במערך types[].
סינון לפי סוג הפעולה
כדי לסנן משאבי FHIR שעברו שינוי על ידי טרנזקציה מסוג CREATE, UPDATE או DELETE, צריך לציין ערך ב-enum ChangeType.
לדוגמה, כדי לשחזר רק משאבי FHIR שנמחקו, צריך לציין את הערך DELETE.
אם מציינים את הערך CHANGE_TYPE_UNSPECIFIED או ALL, או אם לא מציינים ערך, כל משאבי ה-FHIR ישוחזרו.
לא כולל שחזורים קודמים
כדי לא לכלול שחזורים קודמים כשמשחזרים משאבי FHIR, צריך להגדיר את השדה excludeRollbacks לערך true. אפשר להחריג שחזורים קודמים אם הם פעלו בצורה תקינה ולא רוצים להחליף את השינויים שלהם.
אפשר גם להפעיל כמה שחזורים עם חותמות זמן חופפות.
למשל, נבחן את התרחיש הבא:
- בשעה
1:00, מתחילים שחזור עם חותמת הזמן של השחזור שמוגדרת ל-0:01. בשלב2:00, פעולת השחזור מוחקת את משאבי המטופלPatient/1ו-Patient/2במאגר FHIR. פעולת השחזור מסתיימת בשעה3:00. כמה ימים לאחר מכן, מריצים פעולת שחזור עם חותמת הזמן של השחזור שמוגדרת ל-
1:00. כברירת מחדל, הפעלת הפעולה תגרום לתוצאות הבאות:- יצירה מחדש שגויה של משאבי המטופל
Patient/1ו-Patient/2. - שחזור נכון של משאבי FHIR שנוצרו או עודכנו אחרי
3:00.
- יצירה מחדש שגויה של משאבי המטופל
כדי לא לכלול את פעולת השחזור הראשונית שמחקה את משאבי המטופל Patient/1 ו-Patient/2, וכדי להימנע מיצירה מחדש שלהם, מגדירים את excludeRollbacks לערך true.
סינון באמצעות מזהי פעולות ממושכות (LRO)
אם משאבי FHIR שונו על ידי פעולות ממושכות (LRO), אפשר לציין את מזהי ה-LRO בשדה operationIds כדי לשחזר את המשאבים ששונו.
מידע על הצגה של מזהי LRO במערך נתונים של Cloud Healthcare API זמין במאמר בנושא הצגת LRO.
ניסיון חוזר לשחזר משאבי FHIR שנכשלו בשחזור בסביבת הייצור
אם חלק ממשאבי FHIR נכשלו בשחזור של סביבת ייצור, אפשר לנסות שוב את השחזור. משתמשים בקובץ הפלט של הייצור שנוצר כדי למצוא את משאבי ה-FHIR שנכשלו. מציינים את הסוגים של משאבי ה-FHIR האלה ואת המזהים שלהם בקובץ מסנן, ומריצים שוב את השחזור.
בכל פעם שמריצים שחזור, השחזור הוא אידמפוטנטי אם משתמשים באותה הגדרה בכל בקשה וחותמת הזמן היא מ-21 הימים האחרונים.
מגבלות
התכונה PITR לא אוכפת את השלמות הרפרנציאלית, ללא קשר להגדרה
disableReferentialIntegrityבחנות FHIR. שחזור של חלק מהמשאבים ב-FHIR עלול להשאיר את מאגר ה-FHIR במצב שמפר את שלמות ההפניות.תהליך ה-PITR מדלג על אימות פרופיל FHIR כי משאבי ה-FHIR ששוחזרו אומתו כשהם נוצרו או עודכנו. אם ההגדרה של פרופיל מאגר FHIR השתנתה, יכול להיות ש-PITR ישאיר את מאגר FHIR במצב שלא עומד בדרישות של אימות הפרופיל.
אם הערך של
rollbackTimeקודם לזמן שבו משאב FHIR נמחק במאגר FHIR, צריך להפעיל אתenableUpdateCreateבמאגר FHIR, אחרת לא ניתן יהיה לשחזר את המשאב.אפשר לעדכן מאגר FHIR או לקרוא ולכתוב נתונים במהלך שחזור, אבל יכול להיות שיוצגו תוצאות לא צפויות בהתאם לשלב השחזור. לדוגמה, בקשת קריאה עשויה להחזיר שילוב של משאבי FHIR ששוחזרו וכאלה שלא שוחזרו. אם מעדכנים משאב, יכול להיות שהשחזור ידרוס את העדכון.
PITR שומרת את היסטוריית משאבי FHIR. לכל משאב שמשוחזר יש גרסה עדכנית חדשה, וההיסטוריה שלו נשמרת.