es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dotnet – Filtrando un Conjunto FHIR por Recursos. Efectivo.

He estado intentando realizar un filtrado de recursos por el atributo ‘Effective’, pero parece que he estado dando vueltas en círculos durante las últimas horas y me pregunto si alguien me podría echar una mano con esto. El método de filtrado que hemos estado utilizando es ‘Select(‘query’), como se muestra a continuación. (res es de tipo Bundle)

Esto funciona:

‘var selectedResource = res.Select(“entry.resource.where(id = ‘” + resourceId + “‘)”).FirstOrDefault();’

Esto también funciona:

‘var filteredResources = res.Select(“entry.resource.ofType(” + resourceType + “)”);’

Esto no funciona: (se ejecutó el código a continuación en QuickWatch)

Intento #1

Descripción: Intentando comparar con ‘2016-01-01’ que se interpreta como una cadena

‘res.Select(“entry.resource.where(effective>= ‘2016-01-01′)”), resultados’

“La invocación del operador ‘>=’ falló: No se puede comparar 2016-08-31T06: 57: 24-04: 00 (de tipo Hl7.Fhir.ElementModel.Types.DateTime) con 2016-01-01 (de tipo Hl7.Fhir.ElementModel.Types.String), porque los tipos difieren.”

Intento #2

Descripción: Mantuve las comillas (”) pero cambié el valor interno por una inicialización real de DateTime

‘res.Select(“entry.resource.where(effective>= ‘” + new DateTime(2016, 1, 1) + “‘)”), resultados’

“La invocación del operador ‘>=’ falló: No se puede comparar 2016-08-31T06: 57: 24-04: 00 (de tipo Hl7.Fhir.ElementModel.Types.DateTime) con 01/01/2016 00: 00: 00 (de tipo Hl7.Fhir.ElementModel.Types.String), porque los tipos difieren.”

Intento #3

Descripción: El anterior pero sin las comillas (”) – Se espera que se considere como una cadena

‘res.Select(“entry.resource.where(effective>=” + new DateTime(2016, 1, 1) + “)”)’

“Fallo de compilación: Error de análisis: inesperado ‘(‘; se esperaba el final de la entrada (Línea 1, Columna 21); consumido recientemente: urce.where”

¿Alguien tiene alguna idea de cómo hacer que esta comparación de fechas funcione?

Por favor, díganme si hay más información que pueda proporcionar para ayudarles a analizar el problema.

¡Gracias de antemano!

Atentamente,
AF

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hola AF,

    Puedo ver que estás intentando realizar un filtrado de recursos por el atributo ‘Effective’, pero parece que estás teniendo algunos problemas al tratar de compararlo con una fecha específica. El problema aquí es que el atributo ‘Effective’ es de un tipo de datos diferente al que estás intentando comparar (fecha/hora vs cadena).

    Para solucionar este problema, necesitarás convertir el valor de fecha/hora a una cadena para que se pueda comparar con el atributo ‘Effective’. Una forma de hacer esto es usar el método ToString() con un formato específico, como este:

    res.Select("entry.resource.where(effective>='" + new DateTime(2016,1,1).ToString("yyyy-MM-ddTHH:mm:sszzz") + "')")

    Aquí, estamos convirtiendo el nuevo objeto DateTime a un formato de cadena “yyyy-MM-ddTHH:mm:sszzz” para que se pueda comparar con el atributo ‘Effective’.

    Espero que esto te ayude. Hazme saber si tienes alguna otra pregunta.

    Saludos cordiales,
    [Tu nombre]

Comments are closed.