Escrito por

Sales Engineer at InterSystems Iberia
Artículo Ricardo Paiva · mayo 28 2m read

El Repositorio FHIR de IRIS for Health deja de responder tras la actualización a la versión 2023.6.1.809. ¿Cómo solucionarlo?

Después de que desplegáramos un nuevo contenedor basado en containers.intersystems.com/intersystems/irishealth:2023.1 esta semana, notasteis de repente que el Repositorio FHIR empezó a responder con un Error 500. Esto se debe a violaciones de PROTECT en el nuevo espacio de nombres y base de datos HSSYSLOCALTEMP, utilizado por esta versión de los componentes FHIR de IRIS for Health.

La solución consiste en añadir "%DB_HSSYSLOCALTEMP" a las Aplicaciones Web que gestionan las solicitudes FHIR. Podéis automatizar esto ejecutando el siguiente método de clase en los espacios de nombres que definen estas Aplicaciones Web.

do ##class(HS.HealthConnect.FHIRServer.Upgrade.MethodsV6).AddLOCALTEMPRoleToCSP()

En nuestro caso, eso no fue suficiente. En parte de nuestro código personalizado necesitamos acceder al token Bearer JWT tal como lo envía el cliente, y antes podíamos obtenerlo desde el elemento AdditionalInfo "USER:OAuthToken", que ya no está presente en la versión 2023.6.1.809, como se describe en la siguiente documentación: https://docs.intersystems.com/upgrade/results?product=ifh&versionFrom=2023.1.0&versionTo=2023.1.6&categories=Business%20Intelligence,Cloud,Core,Development%20Tools,Driver%20Technologies,Embedded%20Python,External%20Languages,FHIR,Healthcare%20Interoperability,Interoperability,Machine%20Learning,Mirroring,Monitoring,Natural%20Language%20Processing,SQL,Security,Sharding,Web%20Applications&audience=All&changes=121

Resolvimos este problema añadiendo la siguiente lógica para obtener el token desde la caché de tokens.

	$$$ThrowOnError(##class(HS.HC.Util.InfoCache).GetTokenInfo(pInteropRequest.Request.AdditionalInfo.GetAt("USER:TokenId"), .pTokenInfo))
	set OAuthToken = pTokenInfo("token_string")