En esta página, se describe cómo usar la recuperación de un momento determinado (PITR) para recuperar los recursos de FHIR en un almacén de FHIR a un estado en en los últimos 21 días. Puedes usar la PITR para recuperarte de cambios no deseados, como los y borrar recursos de FHIR.
Antes de comenzar
Las solicitudes de PITR se clasifican como solicitudes de operaciones avanzadas y se facturan según corresponda. Antes de usar la PITR, revisa los precios de las solicitudes de operaciones avanzadas.
Historial de versiones de recursos de FHIR y PITR
La PITR no depende del historial de versiones de recursos de FHIR.
Puedes usar la PITR si el campo disableResourceVersioning
de un almacén de FHIR es true
o si el valor histórico de un recurso de FHIR
se purgaron.
Flujo de trabajo de recuperación
Para garantizar que una recuperación de producción se ejecute como se espera, primero haz una ejecución de prueba. La ejecución de prueba genera uno o más archivos que contienen los IDs y los tipos de la Recursos de FHIR que se recuperarán. Verifica que los archivos de salida sean correctos antes de volver a ejecutar la recuperación en production.
Para recuperar recursos específicos o recuperar recursos según un filtro criterios, especifica un filtro.
Haz una prueba de validación
Antes de recuperar los recursos de FHIR en producción, realiza una ejecución de prueba.
En los siguientes ejemplos, se muestra cómo realizar una ejecución de prueba
con fhirStores.rollback
.
REST
Recupera los recursos de FHIR.
Para realizar una ejecución de prueba, asegúrate de que
force
esfalse
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
es el conjunto de datos superior del almacén de FHIRFHIR_STORE_ID
es el ID del almacén de FHIRRECOVERY_TIMESTAMP
: Es un punto de recuperación en los últimos 21 días. Usa el formato RFC 3339. Especifica el tiempo transcurrido hasta los segundos y también incluye una zona horaria, por ejemplo,2015-02-07T13:28:17.239+02:00
o2017-01-01T00:00:00Z
.CLOUD_STORAGE_BUCKET
: Es el URI completamente calificado de una carpeta o un bucket de Cloud Storage en el que se escriben los archivos de salida.
Cuerpo JSON de la solicitud:
{ "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:cat > request.json << 'EOF' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" } EOF
Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:@' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "false" } '@ | Out-File -FilePath request.json -Encoding utf8
Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 ContentExplorador de API
Copia el cuerpo de la solicitud y abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Pega el cuerpo de la solicitud en esta herramienta, completa cualquier otro campo obligatorio y haz clic en Ejecutar.
OPERATION_ID
. Necesitarás este valor en el paso siguiente.Usa el método
projects.locations.datasets.operations.get
para obtener el estado de la operación de larga duración.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.DATASET_ID
: El ID del conjunto de datosLOCATION
: La ubicación del conjunto de datosOPERATION_ID
: Es el ID que muestra la operación de larga duración.
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando:
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
Ejecuta el siguiente comando:
$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 ContentExplorador de API
Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
"done": true
, significa que la operación de larga duración finalizó.
Cómo ver los archivos de salida de la prueba de validación
En cada ejecución de prueba, se generan uno o más archivos que contienen los ID y los tipos de FHIR
recursos para recuperar. Los archivos se crean en una subcarpeta de la carpeta rollback_resources
del destino.
bucket de Cloud Storage. El nombre de la subcarpeta es el ID de LRO que se muestra en el
fhirStores.rollback
respuesta. Para ver los archivos y asegurarse de que la recuperación funcione
como se esperaba, consulta
Visualiza metadatos de objetos.
La cantidad de archivos es proporcional a la cantidad de recursos de FHIR recuperados.
Los nombres de archivo usan el formato trial-NUMBER-of-TOTAL_NUMBER.txt
, en el que NUMBER
es el número de archivo y TOTAL_NUMBER
es la cantidad total de archivos.
Esquema del archivo de salida de la ejecución de prueba
Los archivos de salida de una recuperación de ejecución de prueba usan el esquema que se muestra en el siguiente tabla:
RESOURCE_TYPE |
RESOURCE_ID |
TIMESTAMP |
---|---|---|
El tipo de recurso de FHIR. | El ID del recurso de FHIR. | La hora en la que se creó o actualizó el recurso de FHIR en el almacén de FHIR. |
Recuperar en producción
Antes de realizar la recuperación en producción, haz una ejecución de prueba y, luego, inspecciona archivos de salida de ejecución de prueba para garantizar que la recuperación de producción se ejecute como se espera.
En los siguientes ejemplos, se muestra cómo restablecer los recursos de FHIR en la producción
con fhirStores.rollback
.
REST
Recupera los recursos de FHIR.
Asegúrate de que el
force
estrue
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datosDATASET_ID
es el conjunto de datos superior del almacén de FHIRFHIR_STORE_ID
es el ID del almacén de FHIRRECOVERY_TIMESTAMP
: Es un punto de recuperación en los últimos 21 días. Usa el formato RFC 3339. Especifica el tiempo transcurrido hasta los segundos y también incluye una zona horaria, por ejemplo,2015-02-07T13:28:17.239+02:00
o2017-01-01T00:00:00Z
.CLOUD_STORAGE_BUCKET
: Es el URI completamente calificado de una carpeta o un bucket de Cloud Storage en el que se escriben los archivos de salida.
Cuerpo JSON de la solicitud:
{ "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:cat > request.json << 'EOF' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" } EOF
Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:@' { "rollbackTime": "RECOVERY_TIMESTAMP", "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET", "force": "true" } '@ | Out-File -FilePath request.json -Encoding utf8
Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 ContentExplorador de API
Copia el cuerpo de la solicitud y abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Pega el cuerpo de la solicitud en esta herramienta, completa cualquier otro campo obligatorio y haz clic en Ejecutar.
OPERATION_ID
. Necesitarás este valor en el paso siguiente.Usa el método
projects.locations.datasets.operations.get
para obtener el estado de la operación de larga duración.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.DATASET_ID
: El ID del conjunto de datosLOCATION
: La ubicación del conjunto de datosOPERATION_ID
: Es el ID que muestra la operación de larga duración.
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando:
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
Ejecuta el siguiente comando:
$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 ContentExplorador de API
Abre el página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
"done": true
, significa que la operación de larga duración finalizó.
Visualiza los archivos de salida de recuperación de producción
Una recuperación de producción genera los siguientes archivos. Los archivos se crean en un
subcarpeta en la carpeta rollback_resources
del destino
bucket de Cloud Storage. El nombre de la subcarpeta es el ID de LRO que se muestra en el
fhirStores.rollback
respuesta. Para ver los archivos, consulta
Visualiza metadatos de objetos.
success-NUMBER-of-TOTAL_NUMBER.txt
: Contiene recursos de FHIR recuperados de forma correcta.fail-NUMBER-of-TOTAL_NUMBER.txt
: Contiene Recursos de FHIR que no se pudieron recuperar. Se genera un archivo vacío aunque que no haya fallas.
En los nombres de los archivos, NUMBER
es el número de archivo y TOTAL_NUMBER
.
es la cantidad total de archivos.
Esquema del archivo de salida de producción
Los archivos de éxito y fracaso de una recuperación de producción usan lo siguiente:
. Los archivos de error contienen un
ERROR_MESSAGE
.
RESOURCE_TYPE |
RESOURCE_ID |
ROLLBACK_VERSION_ID |
NEW_VERSION_ID |
ERROR_MESSAGE (solo archivos con error) |
---|---|---|---|---|
El tipo de recurso de FHIR. | El ID del recurso de FHIR. | El ID de la versión actual del recurso en el momento en que comenzó la recuperación. | ID de la versión actual del recurso después de la recuperación. Si disableResourceVersioning es true , o si la recuperación de un recurso hace que se borre, ROLLBACK_VERSION_ID y NEW_VERSION_ID están vacíos. |
Solo archivos con errores. Describe por qué se archivó el recurso de FHIR que se recuperará. |
Usa filtros para recuperar recursos de FHIR específicos
En las siguientes secciones, se describe cómo usar filtros para recuperar recursos de FHIR según un criterio de filtro.
Debes especificar los filtros en el objeto RollbackFhirResourceFilteringFields
cuando envíes datos.
una solicitud fhirStores.rollback
.
Puedes combinar filtros o usarlos de forma individual para varios casos de uso, incluidos los siguientes:
- Recupera recursos FHIR específicos después de una eliminación accidental sin modificar los demás.
- Restablece un almacén de FHIR a un estado anterior a una operación de importación específica importar ciertos recursos de FHIR.
Usa un archivo de filtro
De forma predeterminada, la PITR recupera todos los recursos de FHIR de un almacén de FHIR. Para recuperar
recursos de FHIR específicos, especificar los tipos de recursos y sus IDs de recurso en un archivo,
y, luego, subiré el archivo
en Google Cloud Storage. Especifica la ubicación del archivo en la sección
inputGcsObject
.
Para leer un archivo de filtro desde Cloud Storage, debes otorgar permisos al agente de servicio de Cloud Healthcare. cuenta de servicio. Para obtener más información, consulta Lee archivos de filtros de Cloud Storage.
El archivo de filtro puede tener cualquier extensión. Debe usar el siguiente esquema: con un recurso de FHIR por línea:
FHIR_RESOURCE_TYPE/FHIR_RESOURCE_ID
Por ejemplo, para recuperar un recurso Patient con el ID 8f25b0ac
y dos
Los recursos de observación con los IDs d507417e90e
y e9950d90e
, especifica
lo siguiente en el archivo de filtro:
Patient/8f25b0ac
Observation/d507417e90e
Observation/e9950d90e
Usa funciones personalizadas
La API de Cloud Healthcare proporciona las siguientes funciones de filtrado personalizado.
Puedes combinar las funciones personalizadas con el
rollbackTime
para aplicar un filtro adicional.
tag
Detalles Sintaxis de la función tag("system") = "code"
Descripción Filtra los recursos de FHIR según el elementoMeta.tag
del recurso.Argumentos system
string
Una URL que hace referencia a un sistema de código. Para obtener más información, consulta Cómo usar códigos en Recursos.code
string
Es un valor que identifica un concepto según lo define el sistema de códigos. Para obtener más información, consulta Cómo usar códigos en Recursos.
extension_value_ts
Detalles Sintaxis de la función extension_value_ts("url")
Descripción Filtra los recursos de FHIR según el valorurl
en un elementoextension
en el queurl
es una marca de tiempo de Unix. Admite los siguientes operadores de comparación:=
!=
<
>
<=
>=
Argumentos url
string
Es la URL canónica de un recurso StructureDefinition que define una extensión. Por ejemplo, en el siguiente elementoextension
, se muestraurl
eshttp://hl7.org/fhir/StructureDefinition/timezone
:"extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/timezone", "valueCode" : "America/New_York" }]
Para obtener más información, consulta Cómo definir extensiones.
Filtrar por tipo de recurso de FHIR
Filtrar recursos de FHIR
de una forma más amplia basada solo en el tipo de recurso, especifica los tipos de recursos en el
types[]
.
Filtrar por tipo de operación
Para filtrar recursos de FHIR modificados por CREATE
, UPDATE
o
DELETE
transacción,
especifica un valor en ChangeType
enum.
Por ejemplo, para recuperar solo los recursos de FHIR que se borraron, especifica el valor DELETE
.
Si especificas CHANGE_TYPE_UNSPECIFIED
,
ALL
,
o no especificas un valor, todos los recursos de FHIR se recuperan.
Cómo excluir recuperaciones anteriores
Para excluir recuperaciones anteriores cuando se recuperan recursos de FHIR, configura el
campo excludeRollbacks
como true
. Puedes excluir recuperaciones anteriores si estas funcionaron correctamente y no quieres reemplazar sus cambios.
También puedes ejecutar varias recuperaciones con marcas de tiempo superpuestas.
Considera la siguiente situación:
- En
1:00
, inicias una recuperación con la marca de tiempo de recuperación establecida en0:01
. En2:00
, la operación de recuperación borra los recursos de pacientesPatient/1
yPatient/2
en el almacén de FHIR. La operación de recuperación finaliza a las3:00
. Varios días después, ejecutas una operación de recuperación con la marca de tiempo de recuperación. se establece en
1:00
. De forma predeterminada, la ejecución de la operación daría como resultado lo siguiente:- Se volvieron a crear de forma incorrecta los recursos de paciente
Patient/1
yPatient/2
. - Recupera correctamente los recursos de FHIR creados o actualizados después de
3:00
.
- Se volvieron a crear de forma incorrecta los recursos de paciente
Para excluir la operación de recuperación inicial que borró
los recursos del paciente Patient/1
y Patient/2
, y evita volver a crearlos
establece excludeRollbacks
en true
.
Filtra con IDs de operaciones de larga duración (LRO)
Si uno o más operaciones de larga duración (LRO) modificaron los recursos de FHIR, puedes especificar los IDs de LRO en el campo operationIds
para recuperar los recursos modificados.
Consulta Crea listas de LRO. para obtener información sobre cómo crear una lista y visualizar los IDs de LRO en un conjunto de datos de la API de Cloud Healthcare.
Vuelve a intentar con los recursos de FHIR que no se pudieron recuperar en producción
Si algunos recursos de FHIR no lograron una recuperación de producción, puedes reintentar el recuperación. Usa el archivo de salida de producción generado. para encontrar los recursos de FHIR que fallaron. Especifica los tipos de estos recursos de FHIR y sus IDs en un archivo de filtro, y volverás a ejecutar la recuperación.
Cada vez que ejecutes una recuperación, esta será idempotente si usas la misma configuración en cada solicitud y la marca de tiempo está dentro de los últimos 21 días.
Limitaciones
La PITR no aplica la integridad referencial, independientemente del Configuración de
disableReferentialIntegrity
en el almacén de FHIR. Restablece solo algunos FHIR recurso puede dejar el almacén de FHIR en un estado que infrinja las para mantener la integridad de tus datos.La PITR omite la validación del perfil de FHIR porque los recursos de FHIR restaurados se validaron cuando se crearon o actualizaron. Si el perfil de almacén de FHIR configuración modificada, la PITR podría dejar el almacén de FHIR en un estado que infringe la validación de perfil.
Si el valor de
rollbackTime
precede al momento en que se borró un recurso de FHIR en el almacén de FHIR, este debe tener habilitadoenableUpdateCreate
o no se recuperará el recurso.Puedes actualizar un almacén de FHIR o leer y escribir datos durante una recuperación. pero puede que veas resultados inesperados según la etapa de recuperación. Por ejemplo: una solicitud de lectura puede mostrar una combinación de los elementos recuperados y no recuperados. recursos de FHIR. Si actualizas un recurso, la recuperación podría reemplazar el actualización.
La PITR mantiene el historial de recursos de FHIR. Cada recurso restablecido recibe una nueva versión actual y se conserva su historial.