Pregunta
· 13 mar, 2023

Indagando de qué manera añadir un condicional IF en una estructura JSON que represente un recurso FHIR

Buenos días

Realizando una integración en la que se transforma un XML en un JSON que representa un recurso FHIR; ¿por favor podrían ayudarnos con lo siguiente?

 

Conocemos que se puede crear un JSON "a mano" que represente una estructura FHIR, e incluso añadir llamadas a funciones tales como:

"display"(##class(Util.TablasMaestras).getValorMaestra("CENTROS_CONCERTADOS.CODIGO_TO_NOMBRE_HOSPITAL",busquedaOrdenesRequest.codigoHospitalDestino))
 

Y concatenaciones como:

"reference"("#"_(mensaje.DNI))
 

Sin embargo la cuestión es: ¿se podrían añadir condicionales del tipo "if"?

 

Por ejemplo, en nuestro caso concreto necesitamos: "Investigar si Episodio se puede NO enviar cuando viene vacio". En particular, el Episodio es un objeto dentro de una lista tal que así:

 

[...]

"identifier"[
{
"type"[
{
"text""NORDEN",
"value"(mensaje.NORDEN)
},
{
"text""IDPETICION",
"value"(mensaje.IDPETICION)
},
{
"text""EPISODIO",
"value"(mensaje.EPISODIO)
}
]
}
],

[...]

¿De qué manera se podría desarrollar la lógica que exprese "si mensaje.EPISODIO es vacío "", no incluyas el objeto EPISODIO entero?

Hemos consultado las:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

https://es.community.intersystems.com/tags/fhir

 

Como añadido extra agradeciendo la respuesta y apoyo de ustedes comparto:

Les presento un estudio muy interesante de la Universidad de Standford:

Título: "Flow: The Psychology of Optimal Experience" Autores: Mihaly Csikszentmihalyi

Este estudio explora el concepto de "flujo", que es un estado mental en el que una persona se encuentra completamente absorta en una actividad y se siente plenamente motivada y concentrada. Los autores sostienen que para entrar en estado de flujo, es necesario tener un equilibrio adecuado entre las habilidades de una persona y los desafíos de la tarea que está realizando.

En el caso del desarrollo de software, los autores sugieren que los programadores pueden entrar en estado de flujo al buscar tareas que sean lo suficientemente desafiantes como para mantenerlos motivados, pero que no sean tan difíciles como para que se sientan abrumados. Además, recomiendan crear un ambiente de trabajo que promueva la concentración y la productividad, evitando distracciones como el ruido excesivo o las interrupciones innecesarias.

Algunas medidas prácticas que se pueden tomar para fomentar el estado de flujo en el desarrollo de software incluyen:

👉 Establecer objetivos claros y alcanzables para cada tarea 👉 Romper las tareas en pequeñas sub-tareas manejables 👉 Utilizar técnicas de gestión del tiempo para maximizar la productividad 👉 Establecer un horario y un lugar específico para trabajar 👉 Eliminar distracciones innecesarias, como las redes sociales o los correos electrónicos 👉 Tomar descansos regulares para recargar energías y evitar el agotamiento 👉 Trabajar en equipo para compartir conocimientos y motivarse mutuamente

En resumen, el estudio de "Flow" sugiere que entrar en estado de flujo es fundamental para lograr una productividad y concentración óptimas en el desarrollo de software. Para alcanzar este estado, es necesario encontrar un equilibrio entre las habilidades de una persona y los desafíos de la tarea, así como crear un ambiente de trabajo que fomente la concentración y la productividad. 🚀💻

Product version: IRIS 2020.1
$ZV: IRIS for UNIX (Red Hat Enterprise Linux for x86-64) 2020.1.1 (Build 408U) Sun Mar 21 2021 22:21:14 EDT
Comentarios (1)2
Inicie sesión o regístrese para continuar

Hola Yone,

En este caso entiendo que tienes un recurso FHIR en forma de JSON y quieres incluir o no cierta parte en función de si tienes un objeto vacío o no.

Puedes probar algo así: primero creas el recurso con las propiedades que seguro vas a incluir, y después a continuación incluyes la lógica para las propiedades que incluirás según ciertas condiciones:

    set resource = {
            "resourceType": "Observation",
        "id": (..Id),
            "status": "final",
            "code": {
                "coding": [
                ]
            },
            "subject": {
                "reference": ("Patient/"_..Patient.Id)
            },
            "effectiveDateTime": ($tr(..TimeStamp, " ", "T")),
            "valueQuantity": {
            }
    }

    if ..Code="BodyTemp" {
        set resource.code.coding."0" = { "system": "http://loinc.org", "code": "8310-5", "display": "Body temperature" }
        set resource.valueQuantity.unit = "C"
        set resource.valueQuantity.system = "http://unitsofmeasure.org"
        set resource.valueQuantity.code = "Cel"
        do resource.valueQuantity.%Set("value", ..ValueNM, "number")
    }