Por definición, el FHIR le solicita que preserve la vulnerabilidad XSS de los datos (almacenar como código, mostrar como código). XSS requiere que los datos se muestren de nuevo a los usuarios, lo que podría evitarse con la validación de salida. Acepte la entrada, almacénela como JSON, filtre cuando muestre los datos HTML como código HTML. Dependiendo de los sistemas de "salida", esto podría ser mucho más fácil (depende de la necesidad del sistema).
Filtrar código malicioso (javascript malicioso, enlaces, etc.) va a ser muy difícil. Hay muchas formas de ocultar el código incorrecto a través de la ofuscación.
Lo que podría hacer, según los detalles de la especificación FHIR, es agregar a la lista blanca el código bueno / aceptable. Si la especificación FHIR está bien definida, la inclusión en la lista blanca debería ser fácil de realizar. Si la especificación no está bien definida, podría ser imposible bloquear todos los intentos de XSS almacenados.