Y tus deseos son órdenes @Jose-Tomas.Salvador, al instalar FHIR Adapter en IRIS/HealthConnect se tienen disponible multitud de clases que representan los recursos FHIR más comunes.

Puedes encontrarlo en el package: HS.FHIR.DTL.vR4.Model.Resource.*

Se podrían extender del resource original añadiendo las extensiones que fueran necesarias, al extender el estándar no habría problema en cambios de versión, al poder extenderse de la última release.

Bueno, concluida la jornada veamos como de acertada estuvo la predicción:

Bueno, han sido 7 aciertos (contando el pleno al 15 como acierto al adivinar quién era el ganador, no el resultado). Bueno, no ha estado tan mal esta jornada. ¡Mantened vuestra fe en QuinielaML!

Bueno, ha sido una jornada complicada para la Quiniela, llena de variantes, veamos como ha ido:

Han sido 6 aciertos...como decían en El jovencito Frankenstein "podría ser peor, podría llover".

Consultemos los resultados de la jornada 22:

Pues fueron 7 aciertos para esta jornada, por debajo del 56% de aciertos del modelo...estadísticamente tendremos que compensar las próximas jornadas, ¡no os desaniméis!

Pues aquí está el resultado definitivo de la Quiniela:

Nuevamente 7 aciertos (6 + pleno al 15), si hubieramos jugado con los dobles que vimos en los partidos más dudosos habríamos tenido 9 aciertos. Bueno, confiemos que para la próxima jornada los partidos de Segunda no sean tan sumamente insidiosos.

He creado una nueva rama en el proyecto de GitHub para incluir la prueba de Oracle. No lo voy a incluir en la rama de main porque requiere ampliar la memoria asignada a docker porque Oracle consume recursos como una mala bestia... Pero los que queráis probarla aquí tenéis la rama:

https://github.com/intersystems-ib/workshop-py-performance/tree/oracle

Aquí podéis ver la gráfica comparativa incluyendo a Oracle

Como podéis ver tanto Oracle como IRIS son equivalentes en términos de rendimiento.

Nos indicaba @Enrico Parisi en su comentario:

Otra opción para ver/monitorear las transacciones abiertas directamente desde el Portal de administración del sistema es usar el Panel del sistema (Operación del sistema -> Panel del sistema). No es necesario escribir código ni SQL, solo unos pocos clics.
En el Panel del sistema hay una línea "Transacciones":

En caso de que una o más transacciones se abran durante más de 20 minutos (más o menos...), el Panel del sistema muestra un estado Problema.

En el Panel del sistema, si hace clic en la etiqueta "Transacciones" (independientemente del estado de Problema), en la parte inferior de la página se muestra un enlace "Haga clic aquí para obtener más detalles":

Si/cuando se hace clic en "Haga clic aquí para obtener más detalles", se muestra una página con las 5 transacciones principales (más tiempo): 

Desde allí, puede hacer clic en el ID del proceso e ir directamente a la página Detalles del proceso.

Buenas @Lluís Vilalta , quizás este no sea el foro más adecuado al ser una pregunta puramente de Python, pero a ver si te podemos ayudar.

Veo por la documentación de dicha librería que puedes activar o desactivar la función de salto de página si el texto supera el espacio libre:

https://pyfpdf.readthedocs.io/en/latest/reference/set_auto_page_break/
 

Quizás puedas definir ese parámetro a falso cuando estás escribiendo la primera página y una vez acabado volver a definirlo a verdadero.

Incluso se me ocurre que crees la primera página fuera antes de entrar en la parte donde defines que sea "unbreakable", algo tal que así:

pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Portada", ln=1, align="C")
pdf.add_page()
pdf.set_font("Times", size=16)
line_height = pdf.font_size * 2
col_width = pdf.epw / 4# distribute content evenlywith pLib.pdf.unbreakable() as doc: