-- obtenerRecetas
SELECT
    R.CONSECUTIVO AS '_id',
    DATE_FORMAT(R.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha',
    R.MEDICAMENTO AS 'Medicamento',
     R.ALERGIAS AS 'Alergias',
    R.DETALLE AS 'Detalle',
    DATE_FORMAT(R.FECHA, '%Y-%m-%d %H:%i:%S') AS '_sort'
FROM RECETAS R
WHERE R.CODIGOPACIENTE = ?
ORDER BY R.FECHA DESC;

-- obtenerNotasEvolucion
SELECT
    NE.CONSECUTIVO AS '_id',
    DATE_FORMAT(NE.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha',
    CONCAT(COALESCE(M.NOMBRE, ''), ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, '')) AS 'Médico',
    CASE WHEN NE.CERRADA = 1 THEN 'Sí' ELSE 'No' END AS 'Cerrada',
    (
        SELECT GROUP_CONCAT(ND.CODIGO_CIE10 ORDER BY ND.ID SEPARATOR ',')
        FROM NOTAS_EVOLUCION_DIAGNOSTICOS ND
        WHERE ND.CONSECUTIVO_NOTA = NE.CONSECUTIVO
        AND ND.CODIGOPACIENTE = NE.CODIGOPACIENTE
    ) AS 'Diagnósticos',
    SV.PESO AS 'Peso (kg)',
    SV.TALLA AS 'Talla (cm)',
    SV.IMC AS 'IMC',
    SV.TENSION_ARTERIAL AS 'Tensión arterial',
    SV.TEMPERATURA AS 'Temperatura (°C)',
    SV.FRECUENCIA_CARDIACA AS 'Frecuencia cardíaca (lpm)',
    SV.FRECUENCIA_RESPIRATORIA AS 'Frecuencia respiratoria (rpm)',
    SV.SATURACION_OXIGENO AS 'Saturación de oxígeno (%)',
    SV.PRESION_ARTERIAL_MEDIA AS 'Presión arterial media',
    SV.GLUCEMIA_CAPILAR AS 'Glucemia capilar (mg/dL)',
    SV.PERIMETRO_CINTURA AS 'Perímetro cintura (cm)',
    SV.PERIMETRO_CADERA AS 'Perímetro cadera (cm)',
    SV.PERIMETRO_BRAZO AS 'Perímetro brazo (cm)',
    SV.PERIMETRO_TORAX AS 'Perímetro tórax (cm)',
    SV.GRASA_CORPORAL AS 'Grasa corporal (%)',
    SV.MASA_MUSCULAR AS 'Masa muscular (%)',
    SV.MASA_MUSCULAR_KG AS 'Masa muscular (kg)',
    SV.GRASA_VISCERAL AS 'Grasa visceral',
    SV.PESO_IDEAL AS 'Peso ideal (kg)',
    SV.EXCESO_PESO AS 'Exceso de peso (kg)',
    SV.PORCENTAJE_EXCESO_PESO AS 'Exceso de peso (%)',
    NE.NOTA AS 'Detalle',
    DATE_FORMAT(NE.FECHA, '%Y-%m-%d %H:%i:%S') AS '_sort'
FROM NOTAS_EVOLUCION NE
LEFT JOIN MEDICOS M
    ON M.CODIGOMEDICO = NE.CODIGOMEDICO
LEFT JOIN (
    SELECT
        CONSECUTIVO_NOTA,
        ANY_VALUE(PESO) AS PESO,
        ANY_VALUE(TALLA) AS TALLA,
        ANY_VALUE(IMC) AS IMC,
        ANY_VALUE(TENSION_ARTERIAL) AS TENSION_ARTERIAL,
        ANY_VALUE(TEMPERATURA) AS TEMPERATURA,
        ANY_VALUE(FRECUENCIA_CARDIACA) AS FRECUENCIA_CARDIACA,
        ANY_VALUE(FRECUENCIA_RESPIRATORIA) AS FRECUENCIA_RESPIRATORIA,
        ANY_VALUE(SATURACION_OXIGENO) AS SATURACION_OXIGENO,
        ANY_VALUE(PRESION_ARTERIAL_MEDIA) AS PRESION_ARTERIAL_MEDIA,
        ANY_VALUE(GLUCEMIA_CAPILAR) AS GLUCEMIA_CAPILAR,
        ANY_VALUE(PERIMETRO_CINTURA) AS PERIMETRO_CINTURA,
        ANY_VALUE(PERIMETRO_CADERA) AS PERIMETRO_CADERA,
        ANY_VALUE(PERIMETRO_BRAZO) AS PERIMETRO_BRAZO,
        ANY_VALUE(PERIMETRO_TORAX) AS PERIMETRO_TORAX,
        ANY_VALUE(GRASA_CORPORAL) AS GRASA_CORPORAL,
        ANY_VALUE(MASA_MUSCULAR) AS MASA_MUSCULAR,
        ANY_VALUE(MASA_MUSCULAR_KG) AS MASA_MUSCULAR_KG,
        ANY_VALUE(GRASA_VISCERAL) AS GRASA_VISCERAL,
        ANY_VALUE(PESO_IDEAL) AS PESO_IDEAL,
        ANY_VALUE(EXCESO_PESO) AS EXCESO_PESO,
        ANY_VALUE(PORCENTAJE_EXCESO_PESO) AS PORCENTAJE_EXCESO_PESO
    FROM SIGNOS_VITALES
    GROUP BY CONSECUTIVO_NOTA
) SV ON SV.CONSECUTIVO_NOTA = NE.CONSECUTIVO
WHERE NE.CODIGOPACIENTE = ?
ORDER BY NE.FECHA DESC;

-- obtenerNotasAdicionales
SELECT
    NA.ID AS '_id',
    DATE_FORMAT(NA.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha',
    CONCAT(COALESCE(M.NOMBRE, ''), ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, '')) AS 'Médico',
    NA.CONSECUTIVO_NOTA AS '_id_nota',
    NA.NOTA AS 'Detalle',
    DATE_FORMAT(NA.FECHA, '%Y-%m-%d %H:%i:%S') AS '_sort'
FROM NOTAS_ADICIONALES NA
LEFT JOIN MEDICOS M
    ON M.CODIGOMEDICO = NA.CODIGOMEDICO
WHERE NA.CODIGOPACIENTE = ?
ORDER BY NA.CONSECUTIVO_NOTA, NA.FECHA DESC;


-- obtenerAnalisisClinicos
SELECT
    E.ID_ORDEN AS '_id_orden',
    DATE_FORMAT(E.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha',
    CONCAT(M.NOMBRE, ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, '')) AS 'Médico',
    C.NOMBRECLINICA AS 'Sucursal',
    E.INDICACIONES AS 'Indicaciones para el paciente',
    E.OBSERVACIONES AS 'Observaciones',
    E.OTROS_ANALISIS AS 'Otros análisis',
    RES.DOCUMENTOS AS 'Documentos de resultados',
    '' AS '_detalle',
    G.NOMBRE AS 'Grupo',
    CA.NOMBRE AS 'Análisis',
    CA.INDICACIONES as 'Indicaciones',
    CA.UNIDAD AS 'Unidad',
    CA.REFERENCIA AS 'Referencia',
    CASE
        WHEN CA.TIPO_RESPUESTA = 'B' AND GR.RESULTADO = '1' THEN 'Positivo'
        WHEN CA.TIPO_RESPUESTA = 'B' AND GR.RESULTADO != '1' THEN 'Negativo'
        ELSE GR.RESULTADO
    END AS 'Resultado',
    DATE_FORMAT(GR.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha resultado',
    DATE_FORMAT(E.FECHA, '%Y-%m-%d %H:%i:%S') AS '_sort'
FROM ANALISIS_CLINICOS_ENC E
LEFT JOIN MEDICOS M                ON M.CODIGOMEDICO  = E.CODIGOMEDICO
LEFT JOIN CLINICA C                ON C.CODIGOCLINICA = E.SUCURSAL
LEFT JOIN (
    SELECT ID_ORDEN,
           CONCAT(
               'Fecha\tDescripción\tArchivo\n',
               GROUP_CONCAT(
                   CONCAT(DATE_FORMAT(FECHA, '%d/%m/%Y %h:%i %p'), '\t', COALESCE(DESCRIPCION, ''), '\t', COALESCE(ARCHIVO, ''))
                   ORDER BY FECHA DESC
                   SEPARATOR '\n'
               )
           ) AS DOCUMENTOS
    FROM ANALISIS_CLINICOS_RES
    GROUP BY ID_ORDEN
) RES ON RES.ID_ORDEN = E.ID_ORDEN
LEFT JOIN ANALISIS_CLINICOS_DET D  ON D.ID_ORDEN      = E.ID_ORDEN
LEFT JOIN C_ANALISIS_CLINICOS CA   ON CA.ID           = D.ID_ANALISIS
LEFT JOIN C_ANALISIS_CLINICOS_GRUPOS G ON G.ID        = CA.ID_GRUPO
LEFT JOIN ANALISIS_CLINICOS_GRAF GR
       ON GR.ID_ANALISIS  = D.ID_ANALISIS
      AND GR.ID_ORDEN_DET = D.ID_ORDEN
WHERE E.CODIGOPACIENTE = ?
ORDER BY E.FECHA DESC, G.ID, CA.NOMBRE;


-- obtenerEstudiosGabinete
SELECT
    E.ID_ORDEN AS '_id_orden',
    DATE_FORMAT(E.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha',
    CONCAT(M.NOMBRE, ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, '')) AS 'Médico',
    C.NOMBRECLINICA AS 'Sucursal',
    E.INDICACIONES AS 'Indicaciones',
    E.OBSERVACIONES AS 'Observaciones',
    E.OTROS_ESTUDIOS AS 'Otros estudios',
    RES.DOCUMENTOS AS 'Documentos de resultados',
    '' AS '_detalle',
    CE.NOMBRE AS 'Estudio',
    CE.INDICACIONES as 'Indicaciones',
    G.NOMBRE AS 'Grupo',
    DATE_FORMAT(E.FECHA, '%Y-%m-%d %H:%i:%S') AS '_sort'
FROM ESTUDIOS_GABINETE_ENC E
LEFT JOIN MEDICOS M           ON M.CODIGOMEDICO  = E.CODIGOMEDICO
LEFT JOIN CLINICA C           ON C.CODIGOCLINICA = E.SUCURSAL
LEFT JOIN (
    SELECT ID_ORDEN,
           CONCAT(
               'Fecha\tDescripción\tArchivo\n',
               GROUP_CONCAT(
                   CONCAT(DATE_FORMAT(FECHA, '%d/%m/%Y %h:%i %p'), '\t', COALESCE(DESCRIPCION, ''), '\t', COALESCE(ARCHIVO, ''))
                   ORDER BY FECHA DESC
                   SEPARATOR '\n'
               )
           ) AS DOCUMENTOS
    FROM ESTUDIOS_GABINETE_RES
    GROUP BY ID_ORDEN
) RES ON RES.ID_ORDEN = E.ID_ORDEN
LEFT JOIN ESTUDIOS_GABINETE_DET D  ON D.ID_ORDEN = E.ID_ORDEN
LEFT JOIN C_ESTUDIOS_GABINETE CE   ON CE.ID      = D.ID_ESTUDIO
LEFT JOIN C_ESTUDIOS_GABINETE_GRUPOS G ON G.ID   = CE.ID_GRUPO
WHERE E.CODIGOPACIENTE = ?
ORDER BY E.FECHA DESC, CE.NOMBRE;

-- obtenerRegistrosCrecimiento
SELECT
    R.ID AS '_id',
    DATE_FORMAT(R.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha',
    R.EDAD AS 'Edad',
    R.MESES AS 'Meses',
    R.PESO AS 'Peso (kg)',
    R.TALLA AS 'Talla (cm)',
    R.P_CEFALICO AS 'Perímetro Cefálico (cm)',
    R.PESO_POR_EDAD AS 'Peso para la edad (p)',
    R.TALLA_POR_EDAD AS 'Talla para la edad (p)',
    R.PESO_POR_TALLA AS 'Peso para la talla (p)',
    R.IMC_POR_EDAD AS 'IMC para la edad (p)',
    R.P_CEFALICO_POR_EDAD AS 'P. Cefálico para la edad (p)',
    CONCAT(M.NOMBRE, ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, '')) AS 'Médico',
    C.NOMBRECLINICA AS 'Sucursal',
    DATE_FORMAT(R.FECHA, '%Y-%m-%d %H:%i:%S') AS '_sort'
FROM REGISTROS_CRECIMIENTO R
LEFT JOIN MEDICOS M ON M.CODIGOMEDICO = R.CODIGOMEDICO
LEFT JOIN CLINICA C ON C.CODIGOCLINICA = R.SUCURSAL
WHERE R.CODIGOPACIENTE = ?
ORDER BY R.FECHA DESC, R.EDAD DESC, R.MESES DESC;

-- obtenerRegistrosPrenatal
SELECT
    R.ID AS '_id',
    DATE_FORMAT(R.FECHA, '%d/%m/%Y %h:%i %p') AS 'Fecha',
    DATE_FORMAT(R.F_ULTIMA_MENSTRUACION, '%d/%m/%Y') AS 'Fecha última menstruación',
    R.EDAD_GESTACIONAL_ECO AS 'Edad gestacional por ecografía',
    R.DIAMETRO_BIPARIETAL AS 'Diámetro biparietal (mm)',
    R.DIAMETRO_BIPARIETAL_SEMANAS AS 'Diámetro biparietal (semanas)',
    R.PERIMETRO_CEFALICO AS 'Perímetro cefálico (mm)',
    R.PERIMETRO_CEFALICO_SEMANAS AS 'Perímetro cefálico (semanas)',
    R.PERIMETRO_ABDOMINAL AS 'Perímetro abdominal (mm)',
    R.PERIMETRO_ABDOMINAL_SEMANAS AS 'Perímetro abdominal (semanas)',
    R.LONGITUD_FEMUR AS 'Longitud del fémur (mm)',
    R.LONGITUD_FEMUR_SEMANAS AS 'Longitud del fémur (semanas)',
    R.LONGITUD_CRANEOCAUDAL AS 'Longitud cráneo caudal (mm)',
    R.LONGITUD_CRANEOCAUDAL_SEMANAS AS 'Longitud cráneo caudal (semanas)',
    R.SACO_GESTACIONAL AS 'Saco gestacional (mm)',
    R.SACO_GESTACIONAL_SEMANAS AS 'Saco gestacional (semanas)',
    R.PLACENTA AS 'Placenta',
    R.LIQUIDO_AMNIOTICO AS 'Líquido amniótico',
    R.CORDON_UMBILICAL AS 'Cordón umbilical',
    R.PESO_FETAL AS 'Peso fetal (g)',
    R.FRECUENCIA_CARDIACA_FETAL AS 'Frecuencia cardíaca fetal (lpm)',
    R.SEXO AS 'Sexo',
    R.PESO AS 'Peso (kg)',
    R.TALLA AS 'Talla (cm)',
    R.AUMENTO_PONDERAL AS 'Aumento ponderal (kg)',
    R.ALTURA_UTERINA AS 'Altura uterina (cm)',
    R.TENSION_ARTERIAL AS 'Tensión arterial (mmHg)',
    R.EMBARAZOS AS 'Embarazos',
    R.PARTOS AS 'Partos',
    R.CESAREAS AS 'Cesáreas',
    R.ABORTOS AS 'Abortos',
    R.MENARCA AS 'Menarca',
    R.OTROS_ANTECEDENTES AS 'Otros antecedentes',
    R.LABORATORIO AS 'Laboratorio',
    R.MOTIVO AS 'Motivo',
    R.EXPLORACION AS 'Exploración',
    R.DIAGNOSTICO AS 'Diagnóstico',
    R.DIAGNOSTICOS_CIE10 AS 'Diagnósticos',
    R.PLAN_TRATAMIENTO AS 'Plan de tratamiento',
    R.OBSERVACIONES AS 'Observaciones',
    DATE_FORMAT(R.FECHA_TERMINO, '%d/%m/%Y') AS 'Fecha de término del embarazo',
    CONCAT(
        M.NOMBRE,
        ' ',
        COALESCE(M.APELLIDO_PATERNO, ''),
        ' ',
        COALESCE(M.APELLIDO_MATERNO, '')
    ) AS 'Médico',
    C.NOMBRECLINICA AS 'Sucursal',
    (
        SELECT IF(COUNT(*) = 0, '', CONCAT(
                'Fecha\tDescripción\tImagen\n',
                GROUP_CONCAT(
                    CONCAT(
                        DATE_FORMAT(I.FECHA, '%d/%m/%Y %h:%i %p'),
                        '\t',
                        COALESCE(I.DESCRIPCION, ''),
                        '\t',
                        COALESCE(I.IMAGEN, '')
                    )
                    ORDER BY I.FECHA ASC
                    SEPARATOR '\n'
                )
            ))
        FROM REGISTROS_PRENATAL_IMAGENES I
        WHERE I.ID_REGISTRO = R.ID
    ) AS 'Resultados',
 DATE_FORMAT(R.FECHA, '%Y-%m-%d %H:%i:%S') AS '_sort'
FROM REGISTROS_PRENATAL R
LEFT JOIN MEDICOS M
    ON M.CODIGOMEDICO = R.CODIGOMEDICO
LEFT JOIN CLINICA C
    ON C.CODIGOCLINICA = R.SUCURSAL
WHERE R.CODIGOPACIENTE = ?
ORDER BY R.FECHA DESC;

-- obtenerVacunas
SELECT
    CA.ID_CARTILLA                                                          AS '_id_orden',
    R.ID                                                                    AS '_id',
    CA.NOMBRE                                                               AS 'Cartilla',
    R.FECHA                                                                 AS '_sort',
    ''                                                                      AS '_detalle',
    V.NOMBRE                                                                AS 'Vacuna',
    V.ENFERMEDAD                                                            AS 'Enfermedad',
    D.DESCRIPCION                                                           AS 'Dosis',
    D.EDAD                                                                  AS 'Edad recomendada',
    DATE_FORMAT(R.FECHA, '%d/%m/%Y %h:%i %p')                              AS 'Fecha de aplicación',
    R.LOTE                                                                  AS 'Lote',
    CONCAT(
        U.NOMBRE, ' ',
        COALESCE(U.APEPAT, ''), ' ',
        COALESCE(U.APEMAT, '')
    )                                                                       AS 'Aplicó',
    C.NOMBRECLINICA                                                         AS 'Sucursal'
FROM CENTRAL.C_CARTILLAS CA
LEFT JOIN CENTRAL.C_DOSIS D
    ON D.ID_CARTILLA = CA.ID_CARTILLA
LEFT JOIN CENTRAL.C_VACUNAS V
    ON V.ID_VACUNA = D.ID_VACUNA
INNER JOIN REGISTROS_VACUNAS R
    ON R.ID_DOSIS = D.ID_DOSIS
    AND R.CODIGOPACIENTE = ?
LEFT JOIN C_USUARIO U
    ON U.CODIGOUSUARIO = R.CODIGOUSUARIO
LEFT JOIN CLINICA C
    ON C.CODIGOCLINICA = R.SUCURSAL
UNION ALL
SELECT
    'OTRAS'                                                                 AS '_id_orden',
    CONCAT('O', O.ID)                                                       AS '_id',
    'Otras vacunas'                                                         AS 'Cartilla',
    CAST(O.FECHA AS DATETIME)                                               AS '_sort',
    ''                                                                      AS '_detalle',
    O.NOMBRE                                                                AS 'Vacuna',
    O.ENFERMEDAD                                                            AS 'Enfermedad',
    O.DOSIS                                                                 AS 'Dosis',
    NULL                                                                    AS 'Edad recomendada',
    DATE_FORMAT(O.FECHA, '%d/%m/%Y')                                        AS 'Fecha de aplicación',
    O.LOTE                                                                  AS 'Lote',
    CONCAT(
        U.NOMBRE, ' ',
        COALESCE(U.APEPAT, ''), ' ',
        COALESCE(U.APEMAT, '')
    )                                                                       AS 'Aplicó',
    C.NOMBRECLINICA                                                         AS 'Sucursal'
FROM OTRAS_VACUNAS O
LEFT JOIN C_USUARIO U
    ON U.CODIGOUSUARIO = O.CODIGOUSUARIO
LEFT JOIN CLINICA C
    ON C.CODIGOCLINICA = O.SUCURSAL
WHERE O.CODIGOPACIENTE = ?
ORDER BY _sort DESC;

-- obtenerImagenes
SELECT
    ANY_VALUE(F.CONTADOR)                                                       AS '_id',
    ANY_VALUE(F.DESCRIPCION)                                                    AS 'Nombre de la imágen',
    ANY_VALUE(F.FOTO)                                                           AS 'Imágen',
    DATE_FORMAT(ANY_VALUE(F.FECHA), '%d/%m/%Y %h:%i %p')                       AS 'Fecha',
    ANY_VALUE(CONCAT(U.NOMBRE, ' ', COALESCE(U.APEPAT, ''), ' ', COALESCE(U.APEMAT, '')))
                                                                                AS 'Usuario',
    ANY_VALUE(C.NOMBRECLINICA)                                                  AS 'Sucursal',
    ANY_VALUE(COALESCE(FC.DESCRIPCION, ''))                                     AS 'Carpeta',
    ANY_VALUE(E.EDITADA)                                                        AS 'Imágen editada',
    DATE_FORMAT(ANY_VALUE(F.FECHA), '%Y-%m-%d %H:%i:%S')                       AS '_sort'
FROM FOTOS F
LEFT JOIN C_USUARIO U
    ON F.CODIGOUSUARIO = U.CODIGOUSUARIO
LEFT JOIN CLINICA C
    ON C.CODIGOCLINICA = F.SUCURSAL
LEFT JOIN IMAGENES_EDITADAS E
    ON E.CODIGOPACIENTE = F.CODIGOPACIENTE
    AND E.ORIGINAL = F.FOTO
LEFT JOIN ANALISIS_ARCHIVOS_RELACION R
    ON R.ID_ARCHIVO = F.CONTADOR
    AND R.TIPO = 'imagenes'
    AND R.CODIGOPACIENTE = F.CODIGOPACIENTE
LEFT JOIN FOTOS_CARPETAS FC
    ON FC.CODIGOPACIENTE = F.CODIGOPACIENTE
    AND FC.CODIGOCARPETA = F.CODIGOCARPETA
WHERE F.CODIGOPACIENTE = ?
GROUP BY F.CONTADOR
ORDER BY _sort DESC;

-- obtenerDocumentos
SELECT
    ANY_VALUE(D.CONTADOR)                                                       AS '_id',
    ANY_VALUE(D.DESCRIPCION)                                                    AS 'Nombre del documento',
    ANY_VALUE(D.DOCUMENTO)                                                      AS 'Documento',
    DATE_FORMAT(ANY_VALUE(D.FECHA), '%d/%m/%Y %h:%i %p')                       AS 'Fecha',
    ANY_VALUE(CONCAT(U.NOMBRE, ' ', COALESCE(U.APEPAT, ''), ' ', COALESCE(U.APEMAT, '')))
                                                                                AS 'Usuario',
    ANY_VALUE(C.NOMBRECLINICA)                                                  AS 'Sucursal',
    ANY_VALUE(COALESCE(DC.DESCRIPCION, ''))                                     AS 'Carpeta',
    DATE_FORMAT(ANY_VALUE(D.FECHA), '%Y-%m-%d %H:%i:%S')                       AS '_sort'
FROM DOCUMENTOS D
LEFT JOIN C_USUARIO U
    ON D.CODIGOUSUARIO = U.CODIGOUSUARIO
LEFT JOIN CLINICA C
    ON C.CODIGOCLINICA = D.SUCURSAL
LEFT JOIN ANALISIS_ARCHIVOS_RELACION R
    ON R.ID_ARCHIVO = D.CONTADOR
    AND R.TIPO = 'documentos'
    AND R.CODIGOPACIENTE = D.CODIGOPACIENTE
LEFT JOIN DOCUMENTOS_CARPETAS DC
    ON DC.CODIGOPACIENTE = D.CODIGOPACIENTE
    AND DC.CODIGOCARPETA = D.CODIGOCARPETA
WHERE D.CODIGOPACIENTE = ?
GROUP BY D.CONTADOR
ORDER BY _sort DESC;

-- obtenerEnlaces
SELECT
    E.ID                                                                        AS '_id',
    DATE_FORMAT(E.FECHA, '%d/%m/%Y %h:%i %p')                                   AS 'Fecha',
    E.DESCRIPCION                                                               AS 'Descripcion',
    E.ENLACE                                                                    AS 'Enlace',
    CONCAT(M.NOMBRE, ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, ''))
                                                                                AS 'Medico',
    C.NOMBRECLINICA                                                             AS 'Sucursal',
    DATE_FORMAT(E.FECHA, '%Y-%m-%d %H:%i:%S')                                   AS '_sort'
FROM ENLACES_EXTERNOS E
LEFT JOIN MEDICOS M
    ON M.CODIGOMEDICO = E.CODIGOMEDICO
LEFT JOIN CLINICA C
    ON C.CODIGOCLINICA = E.SUCURSAL
WHERE E.CODIGOPACIENTE = ?
ORDER BY E.FECHA DESC;

-- obtenerHistoriasClinicas
SELECT
    P.CONSECUTIVO                                                            AS '_id_orden',
    DATE_FORMAT(P.FECHA, '%d/%m/%Y %h:%i %p')                                AS 'Fecha',
    CONCAT(M.NOMBRE, ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, ''))
                                                                             AS 'Medico',
    S.NOMBRECLINICA                                                          AS 'Sucursal',
    CASE WHEN P.FIRMA IS NOT NULL THEN 'Sí' ELSE 'No' END                    AS 'Firmado',
    DATE_FORMAT(P.FECHA, '%Y-%m-%d %H:%i:%S')                                AS '_sort',
    ''                                                                       AS '_detalle',
    PH.TIPO_RESPUESTA                                                        AS '_tipo_respuesta',
    REPLACE(REPLACE(COALESCE(SEC.DESCRIPCION, ''), '\t', ' '), '\n', ' ')    AS 'Sección',
    REPLACE(REPLACE(PH.DESCRIPCION,               '\t', ' '), '\n', ' ')     AS 'Pregunta',
    CASE
        WHEN PH.TIPO_RESPUESTA = 'S' THEN
            NULLIF(TRIM(CONCAT_WS('\n',
                IF(SV_HC.PESO                    > 0,   CONCAT('Peso (kg): ',                SV_HC.PESO),                    NULL),
                IF(SV_HC.TALLA                   > 0,   CONCAT('Talla (cm): ',               SV_HC.TALLA),                   NULL),
                IF(SV_HC.IMC                     > 0,   CONCAT('IMC: ',                      SV_HC.IMC),                     NULL),
                IF(SV_HC.TENSION_ARTERIAL        IS NOT NULL AND SV_HC.TENSION_ARTERIAL != '',
                                                        CONCAT('Tensión arterial: ',         SV_HC.TENSION_ARTERIAL),        NULL),
                IF(SV_HC.TEMPERATURA             > 0,   CONCAT('Temperatura (°C): ',         SV_HC.TEMPERATURA),             NULL),
                IF(SV_HC.FRECUENCIA_CARDIACA     > 0,   CONCAT('Frec. cardíaca (lpm): ',     SV_HC.FRECUENCIA_CARDIACA),     NULL),
                IF(SV_HC.FRECUENCIA_RESPIRATORIA > 0,   CONCAT('Frec. respiratoria (rpm): ', SV_HC.FRECUENCIA_RESPIRATORIA), NULL),
                IF(SV_HC.SATURACION_OXIGENO      > 0,   CONCAT('Saturación O₂ (%): ',        SV_HC.SATURACION_OXIGENO),      NULL),
                IF(SV_HC.PRESION_ARTERIAL_MEDIA  > 0,   CONCAT('PA media: ',                 SV_HC.PRESION_ARTERIAL_MEDIA),  NULL),
                IF(SV_HC.GLUCEMIA_CAPILAR        > 0,   CONCAT('Glucemia capilar (mg/dL): ', SV_HC.GLUCEMIA_CAPILAR),        NULL),
                IF(SV_HC.PERIMETRO_CINTURA       > 0,   CONCAT('Perím. cintura (cm): ',      SV_HC.PERIMETRO_CINTURA),       NULL),
                IF(SV_HC.PERIMETRO_CADERA        > 0,   CONCAT('Perím. cadera (cm): ',       SV_HC.PERIMETRO_CADERA),        NULL),
                IF(SV_HC.PERIMETRO_BRAZO         > 0,   CONCAT('Perím. brazo (cm): ',        SV_HC.PERIMETRO_BRAZO),         NULL),
                IF(SV_HC.PERIMETRO_TORAX         > 0,   CONCAT('Perím. tórax (cm): ',        SV_HC.PERIMETRO_TORAX),         NULL),
                IF(SV_HC.GRASA_CORPORAL          > 0,   CONCAT('Grasa corporal (%): ',       SV_HC.GRASA_CORPORAL),          NULL),
                IF(SV_HC.MASA_MUSCULAR           > 0,   CONCAT('Masa muscular (%): ',        SV_HC.MASA_MUSCULAR),           NULL),
                IF(SV_HC.MASA_MUSCULAR_KG        > 0,   CONCAT('Masa muscular (kg): ',       SV_HC.MASA_MUSCULAR_KG),        NULL),
                IF(SV_HC.GRASA_VISCERAL          > 0,   CONCAT('Grasa visceral: ',           SV_HC.GRASA_VISCERAL),          NULL),
                IF(SV_HC.PESO_IDEAL              > 0,   CONCAT('Peso ideal (kg): ',          SV_HC.PESO_IDEAL),              NULL),
                IF(SV_HC.EXCESO_PESO             > 0,   CONCAT('Exceso de peso (kg): ',      SV_HC.EXCESO_PESO),             NULL),
                IF(SV_HC.PORCENTAJE_EXCESO_PESO  > 0,   CONCAT('Exceso de peso (%): ',       SV_HC.PORCENTAJE_EXCESO_PESO),  NULL)
            )), '')
        ELSE
            REPLACE(REPLACE(
                CASE
                    WHEN PH.TIPO_RESPUESTA = 'B' THEN
                        CASE WHEN HC.RESPUESTA = 1 THEN 'Sí' ELSE 'No' END
                    WHEN PH.TIPO_RESPUESTA = 'D' THEN
                        DATE_FORMAT(HC.RESPUESTA, '%d/%m/%Y')
                    WHEN PH.TIPO_RESPUESTA = 'G' THEN
                        REPLACE(HC.RESPUESTA, ',', ', ')
                    ELSE COALESCE(HC.RESPUESTA, '')
                END,
            '\t', ' '), '\n', ' ')
    END                                                                       AS 'Respuesta'
FROM HC_POR_FECHA P
INNER JOIN C_HISTORIACLINICA C
    ON C.CODIGOHC = P.CODIGOHC
INNER JOIN PREGUNTASHISTORIACLINICA PH
    ON PH.CODIGOHC = C.CODIGOHC
   AND PH.ACTIVO = 1
LEFT JOIN HISTORIACLINICA HC
    ON HC.CONSECUTIVO = P.CONSECUTIVO
   AND HC.CODIGOPACIENTE = P.CODIGOPACIENTE
   AND HC.CODIGOPREGUNTA = PH.CODIGOPREGUNTA
LEFT JOIN SIGNOS_VITALES SV_HC
    ON  PH.TIPO_RESPUESTA = 'S'
    AND SV_HC.CONSECUTIVO_NOTA = HC.RESPUESTA
    AND SV_HC.TIPO = 'H'
LEFT JOIN SECCIONESHISTORIACLINICA SEC
    ON SEC.CODIGOSECCION = PH.CODIGOSECCIONHC
LEFT JOIN MEDICOS M
    ON M.CODIGOMEDICO = P.CODIGOMEDICO
LEFT JOIN CLINICA S
    ON S.CODIGOCLINICA = P.SUCURSAL
WHERE P.CODIGOPACIENTE = ?
ORDER BY P.FECHA DESC, P.CONSECUTIVO DESC, COALESCE(SEC.CODIGOSECCION, 0), COALESCE(PH.ORDEN, 999999), PH.CODIGOPREGUNTA; -- agrega el orden de las preguntas

-- obtenerFormatos
SELECT
    D.ID                                                                        AS '_id',
    DATE_FORMAT(D.FECHA, '%d/%m/%Y %h:%i %p')                                  AS 'Fecha',
    C.NOMBRE                                                                    AS 'Formato',
    CONCAT(M.NOMBRE, ' ', COALESCE(M.APELLIDO_PATERNO, ''), ' ', COALESCE(M.APELLIDO_MATERNO, ''))
                                                                                AS 'Medico',
    S.NOMBRECLINICA                                                             AS 'Sucursal',
    CASE WHEN D.ACTIVO = 1 THEN 'Sí' ELSE 'No' END                            AS 'Activo',
    DATE_FORMAT(D.FECHA, '%Y-%m-%d %H:%i:%S')                                  AS '_sort'
FROM DOC_FORMATOS D
LEFT JOIN C_FORMATOS C
    ON D.ID_FORMATO = C.ID
LEFT JOIN MEDICOS M
    ON M.CODIGOMEDICO = D.CODIGOMEDICO
LEFT JOIN CLINICA S
    ON S.CODIGOCLINICA = D.SUCURSAL
WHERE D.CODIGOPACIENTE = ?
ORDER BY D.FECHA DESC;

-- diagnosticosCIE10
SELECT CODIGO, DESCRIPCION FROM CENTRAL.DIAGNOSTICOS_2024 WHERE CODIGO IN

-- diagnosticosPersonalizados
SELECT CODIGO, DESCRIPCION FROM C_DIAGNOSTICOS WHERE CODIGO IN
