REVELCYL

 

Recursos del Servicio Web


El Servicio Web de RevelCYL permite incorporar la información de todas las recetas emitidas desde cualquier plataforma de receta veterinaria existente que se haya adaptado a los requisitos de importación del mismo.

En esta sección se pueden visualizar y/o descargar todos los documentos necesarios para poder utilizar el servicio web.

Requisitos del Servicio Web Mostrar/Ocultar

Los envíos de datos deben cumplir los siguientes requisitos para ser aceptados por el sistema:

a) Todas las peticiones al servicio web deben estar firmadas.

b) Todos los agentes que intervienen en la receta, veterinarios, equipos veterinarios, dispensadores, titulares de animales, representantes de veterinarios y dispensadores, deben estar dados de alta y autorizados en la plataforma RevelCYL.

En el caso de veterinarios que no estén dados de alta en el sistema, pertenezcan o no a la Comunidad de Castilla y León, deben solicitar el alta, desde la sección de Alta para el Servicio Web de este portal, o bien a través de cualquier Colegio Veterinario de Castilla y León.

En el caso de dispensadores que no estén dados de alta en el sistema, deben solicitar igualmente el alta de la misma manera que los veterinarios.

En el caso de titulares que no estén dados de alta en el sistema, puede solicitar el alta como en los casos anteriores.

En el caso de representantes de veterinarios y dispensadores, deben solicitar el alta en alguno de los Colegios Veterinarios de Castilla y León..

c) Los datos enviados deberán cumplir con los requisitos indicados para la transmisión de la receta original en XML, cumplirán con el protocolo de comunicación SOAP del servicio web especificado, y deberán cumpir como mínimo con el formato "AFIRMA (XAdES-BES)" que firma y envuelve el XML de los datos transmitidos.

El formato XAdES-BES contendrá una firma electrónica realizada por un certificado digital válido en el momento de la firma, aceptado por el sistema RevelCYL y que identifique inequívocamente al autorizado en la transmisión, bien sea veterinario, dispensador o representante de cualquiera de ellos.

Requisitos de la Receta Veterinaria Mostrar/Ocultar

Las recetas que el sistema admitirá deberán cumplir con las siguientes características:

a) Las recetas enviadas deben contener los datos mínimos requeridos en cada tipo de receta.

Los tipos de receta se citan más adelante en el apartado Tipos de Recetas admitidas.

b) Las recetas deben estar firmadas electrónicamente.

La firma electrónica en la receta veterinaria implica que el veterinario disponga de certificado digital válido en el momento de firma y aceptado por el sistema RevelCYL.

Los envíos de recetas realizados serán documentos XML de tipo XML_RecetaVeterinaria conteniendo los datos de prescripción, opcionalmente los de dispensación, y firmadas o no por parte del veterinario.

Si la receta viene firmada usando este formato, el documento XML que se envía será de tipo XML_AFIRMA conteniendo el XML_RecetaVeterinaria indicado y la parte de la firma del veterinario en, como mínimo, el formato XAdES-BES.

Si la receta no viene firmada usando este formato, el documento XML_RecetaVeterinaria que se envía deberá incluir entre sus datos un "Documento Firmado" adjunto el cual será a su vez un XML de tipo XML_AFIRMA válido que contendrá el documento de la receta en un formato "propietario" del sistema informático que lo confeccionó y la parte de la firma del veterinario en, como mínimo, el formato XAdES-BES.

c) Las recetas enviadas pueden estar dispensadas o no dispensadas:

Recetas dispensadas: Son las recetas en las que se indican los datos de dispensación, es decir, que se informa que están dispensadas, quién las ha dispensado y los datos relativos a la dispensación.

Recetas no dispensadas: Son las recetas en las que no se indican los datos de dispensación, es decir, que no están dispensadas o no se conoce esa información.

En este último caso, para permitir cerrar el ciclo de vida de una receta, los dispensadores y representantes de dispensadores tendrán la posibilidad de transmitir la dispensación de recetas utilizando exclusivamente el apartado de datos de "Dispensación" del formato XML_RecetaVeterinaria.

Tipos de Recetas admitidas Mostrar/Ocultar

Las recetas que son obligatorias enviar al sistema son aquellas realizadas principalmente a animales destinados a consumo humano y/o produzcan alimentos que se destinen al consumo humano. Además se incluyen también las de animales de compañia o pequeñas mascotas.

Estas serán del tipo:

a) Receta de medicamentos.

b) Receta de piensos medicamentosos.

c) Receta de autovacuna.

d) Receta de fórmula magistral.

e) Receta no válida para dispensar.

f) Receta de pequeñas mascotas.

Certificados admitidos Mostrar/Ocultar

Un certificado digital es un documento electrónico con funciones equivalentes a un documento oficial de identidad y que sirve para dar validez legal a las transacciones electrónicas que pueda realizar cualquier interesado.

Para garantizar la validez jurídica de los datos enviados es necesario identificarse mediante alguno de los certificados digitales admitidos en el servicio web, los cuales son:

- DNIe: Certificados de DNI Electrónico.(Dirección General de Policía - Ministerio del Interior)

- FNMT: Certificados de Identificación de Persona Física o Jurídica de la FNMT.(Fábrica Nacional de Moneda y Timbre)

- FNMT-RCM: Certificados de Identificación Personal de la FNMT-RCM.(Fábrica Nacional de Moneda y Timbre - Real Casa de la Moneda)

- CAMERFIRMA: Certificados de Identificación Personal o de Colegiado Veterinario.(Autoridad de Certificación de las Cámaras de Comercio Españolas)

Dirección de acceso, protocolo, punto de entrada y seguridad Mostrar/Ocultar

La dirección de acceso al portal web de información y ayuda del sistema RevelCYL es:https://revelcyl.es

La dirección de acceso al portal web de gestión del propio sistema RevelCYL se hace mediante protocolo HTTP seguro (dirección que empieza por "https://") proporcionado por un certificado digital que certifica la autenticidad del servidor que lo aloja.

El intercambio de información con el servicio web será mediante el protocolo SOAP, accediendo a través del punto de entrada del servicio correspondiente.

La URL de acceso para obtener la descripción WSDL del servicio web es:https://revelcyl.es/wsdl

La URL para realizar una petición específica al servicio es:https://revelcyl.es/wsvc

SEGURIDAD

Dado que el servicio web es de tipo seguro, para poder utilizarlo es necesario que la petición SOAP que se realiza contenga la información firmada, con lo que será necesario un certificado digital de entre los admitidos por el sistema RevelCYL. Así mismo, la identificación de la entidad, extraida de los datos del certificado, deberá estar autorizada como usuario dentro del servicio web, tal y como se indica en las Condiciones de Acceso.

MODO DE PRUEBAS

La admisión en el sistema RevelCYL de transmisiones de datos reales está supeditada a la realización previa de comunicaciones de datos en modo de prueba. Ésto es para comprobar y confirmar que el sistema externo utilizado genera los datos correctamente, cumple con los formatos especificados para cada tipo de envío, es decir, crea bien los XML con los datos de la receta e incluye la firma adecuadamente, que el formato del elemento de firma cumple, como mínimo, con el formato XAdES-BES y realiza la petición SOAP correctamente.

Las direcciones para acceder al servicio web en "MODO PRUEBA" son:

Para obtener la descripción WSDL del servicio web en pruebas, la URL es:https://revelcyl.es/wsdl_prueba

Para realizar una petición específica al servicio en pruebas, la URL es:https://revelcyl.es/wsvc_prueba

Condiciones de Acceso Mostrar/Ocultar

Como ya se ha indicado, para poder realizar peticiones al servicio web, los certificados digitales utilizados en la tranmisión deben identificar inequívocamente a alguno de los usuarios autorizados en el sistema RevelCYL, por el NIF/CIF extraído del mismo, en concreto:

a) Como usuario de tipo Veterinario si actúa en nombre propio con un certificado personal o de colegiado veterinario.

b) Como usuario de tipo Equipo Veterinario si actúa en nombre de los veterinarios que tenga asociados y usa un certificado personal o de entidad.

c) Como usuario Dispensador si actúa en nombre propio con un certificado personal o de entidad.

d) Como usuario especial Representante Veterinario si actúa en nombre de uno o varios veterinarios que le hayan dado autorización y permiso para actuar en su nombre en el sistema. En ese caso el NIF/CIF extraído del certificado deberá coincidir con la entidad a la que el veterinario le ha asignado el permiso de representación.

e) Como usuario especial Representante Dispensador si actúa en nombre de uno o varios dispensadores que le hayan dado permiso para actuar en su nombre en el sistema. En ese caso el NIF/CIF extraído del certificado deberá coincidir con la entidad a la que el dispensador le ha asignado el permiso de representación.

Peticiones al Servicio Web: Datos Generales SOAP y XML-AFIRMA Mostrar/Ocultar

Las peticiones al servicio web se deben realizar mediante el protocolo SOAP, el cual se implementa a través de peticiones HTTP-POST usando un envoltorio SOAP en el cuerpo de la petición HTTP.

Todas las peticiones realizadas al servicio deberán ir encapsuladas en un XML con los datos correspondientes, firmado con el certificado del usuario autorizado para la transmisión, y envuelto en un XML de tipo AFIRMA (XAdES-BES) el cual se incluirá en la petición SOAP como contenido XML no procesable para evitar posibles fallos de interpretación del contenido.

SOLICITUD SOAP

El formato de una petición SOAP será como:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rec="RecetaWS"> <soapenv:Header/> <soapenv:Body> <rec:[[funcion_a_invocar]] soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <xml xsi:type="xsd:string"> <!-- ...en esta zona va el XML_AFIRMA con la peticion firmada... --> <![CDATA[XML_AFIRMA]]> </xml> </rec:[[funcion_a_invocar]]> </soapenv:Body> </soapenv:Envelope>

En este formato, se debe sustituir el contenido indicado como [[funcion_a_invocar]], por el nombre de la función que se desea invocar en la llamada, y el contenido XML_AFIRMA por el resultado de encapsular la petición XML como un documento firmado.

FORMATO XML-AFIRMA PARA PETICIONES SOAP

El formado de los documentos firmados que se acepta es el siguiente:

<?xml version="1.0" encoding="UTF-8"?> <AFIRMA> <CONTENT Encoding="UTF-8" Id="[[ID_Contenido_Firmado]]" MimeType="application/octet-stream" Algorithm= "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"> [[HASH_SHA512(XML_Compacto_con_Solicitud)]] </CONTENT> <NOMBRE_ORIGINAL> [[Nombre_Documento_con_Solicitud]] </NOMBRE_ORIGINAL> <DOCUMENTO> [[BASE64(XML_Compacto_con_Solicitud)]] </DOCUMENTO> [[Firma_del_HASH_en_Formato_XADES-BES]] <!— aqui va el resultado de la firma propiamente dicho, un nodo de tipo... <ds:Signature> ... </ds:Signature> --> </AFIRMA>

Este formato es una firma tipo "XAdES Enveloped", donde la información que se firma se identifica por el ID [[ID_Contenido_Firmado]] que se puede generar de forma diferente en las distintas peticiones, o establecer un identificador único y mantenerlo para facilitar la codificación de la firma.

El ID está contenido en la etiqueta <CONTENT>, siendo en este caso un hash de tipo "SHA-512" calculado en función del XML con los datos de la solicitud XML_Compacto_con_Solicitud, compactado de forma que no tenga saltos de línea, retornos de carro, ni espacios o tabuladores entre etiquetas. Es decir, según el estándar modo canónico "CN14"

Por otra parte, el mismo documento XML compactado se codifica en "Base64" para incluirlo dentro de la etiqueta <DOCUMENTO>, y así poder recuperarlo a la hora de validar la firma, o al comparar con los datos originales en la base de datos, contrastarlos con el PDF generado, etc.

El elemento <NOMBRE_ORIGINAL> será o simulará el nombre del archivo que representa el documento XML original, y sustituirá al contenido [[Nombre_Documento_con_Solicitud]].

La firma que irá dentro del elemento <ds:Signature>, y que sustituirá al contenido <[[Firma_del_HASH_en_Formato_XAdES-BES]]>, contendrá toda la información relativa a la misma (hash de firma, certificado de usuario utilizado, información del certificado del emisor, momento de la firma, ...).

Se recomienda que el algoritmo de firma sea un hash de tipo SHA-512 para que la firma sea lo suficientemente robusta como para perdurar durante varios años.

El certificado que se debe utilizar para realizar esta firma, será la de un usuario autorizado para la transmisión.

Formato para la Receta Veterinaria firmada Mostrar/Ocultar

En el caso de que el documento que se va a transmitir en la petición SOAP sea el de una receta firmada por un veterinario, se sustituirá el documento indicado en la petición como XML_Compacto_con_Solicitud por el que se denomina XML-AFIRMA-VET, el cual es similar al XML-AFIRMA, y donde el contenido que se firma es el hash de un documento de tipo XML RecetaVeterinaria preparado de forma compacta.

El formado de los documentos firmados propuesto es el siguiente:

<?xml version="1.0" encoding="UTF-8"?> <AFIRMA> <CONTENT Encoding="UTF-8" Id="[[ID_Contenido_Firmado]]" MimeType="application/octet-stream" Algorithm= "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"> [[HASH_SHA512(XML_Compacto_con_RecetaVeterinaria)]] </CONTENT> <NOMBRE_ORIGINAL> [[Receta_EJER_DIST_PROV_COLEG_NUM.xml]] </NOMBRE_ORIGINAL> <DOCUMENTO> [[BASE64(XML_Compacto_con_RecetaVeterinaria)]] </DOCUMENTO> [[Firma_del_HASH_en_Formato_XADES-BES]] <!— aqui va el resultado de la firma propiamente dicho, un nodo de tipo... <ds:Signature> ... </ds:Signature> --> </AFIRMA>

Como ya se ha explicado anteriormente, este formato contiene una firma tipo "XAdES Enveloped", donde la información que se firma se identifica por el ID [[ID_Contenido_Firmado]] que se puede generar de forma diferente en las distintas peticiones, o establecer un identificador único y mantenerlo para facilitar la codificación de la firma.

El ID está contenido en la etiqueta <CONTENT>, siendo en este caso un hash de tipo "SHA-512" calculado en función del XML con los datos de la receta XML_Compacto_con_RecetaVeterinaria, compactado de forma que no tenga saltos de línea, retornos de carro, ni espacios o tabuladores entre etiquetas.

Por otra parte, el mismo documento XML compactado se codifica en "Base64" para incluirlo dentro de la etiqueta <DOCUMENTO>, y así poder recuperarlo a la hora de validar la firma, o al comparar con los datos originales en la base de datos, contrastarlos con el PDF generado, etc.

El elemento <NOMBRE_ORIGINAL> será o simulará el nombre del archivo que representa el documento XML original, y en este caso, identificará la receta por su código único (Ejercicio, Distintivo, CódigoProvincia, NumColegiado, NumReceta) unidos por el separador "_". Con este nombre se sustituirá el contenido [[Receta_EJER_DIST_PROV_COLEG_NUM.xml]].

La firma que irá dentro del elemento <ds:Signature>, y que sustituirá al contenido <[[Firma_del_HASH_en_Formato_XAdES-BES]]>, contendrá toda la información relativa a la misma (hash de firma, certificado de usuario utilizado, información del certificado del emisor, momento de la firma, ...).

Se recomienda que el algoritmo de firma sea un hash de tipo SHA-512 para que la firma sea lo suficientemente robusta como para perdurar durante varios años.

El certificado que se debe utilizar para realizar esta firma, será la de un veterinario autorizado para la emisión de recetas por el colegio al que pertenece, y que esté activo como usuario del sistema.

SELLO DE TIEMPO Y EXTENSIÓN DE FORMATO

Dado que en este caso la firma de la receta no se realiza desde la plataforma SicylVET, la cual asegura que el momento temporal de la firma es el actual (salvo algunos segundos de variación por las comunicaciones y márgenes de tiempo entre equipo servidor y cliente), y asegura que el certificado usado por el veterinario es válido en ese momento, rechazando todo el proceso si éste no lo es o está revocado; se deben asegurar de forma externa estas condiciones.

Para poder asegurar que la firma se ha realizado con un certificado válido en el momento en el que se hizo, el elemento <ds:Signature>, sería conveniente incluir los nodos XAdES necesarios para que el formato de la misma pase de ser de tipo XAdES-BES a tipo XAdES-T incluyendo un sello de tiempo de una entidad externa válida, y de éste a tipo XAdES-C para que se incluyan las referencias completas de comprobación/revocación del certificado del veterinario utilizado en la firma.

Al no ser obligatorio con el formato de tipo XAdES-BES sería suficiente

Las condiciones de inclusión del sello de tiempo hacen un poco más complejo el sistema externo, pero aseguran que la información es fiable y verificable en todo momento.

Respuestas generales: SOAP y estructura DTD Mostrar/Ocultar

RESPUESTA SOAP

Una respuesta válida a cualquier petición, una vez extraída del elemento return de la respuesta SOAP recibida, será una cadena de texto con el resultado de la petición.

El resultado estará codificado en formato XML de forma predeterminada.

El esquema de la respuesta SOAP es:

<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns= "importarRecetaVeterinaria" xmlns:xsd= "http://www.w3.org/2001/XMLSchema" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC= "http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <tns:[[funcion_invocada]]Response> <return xsi:type="xsd:string"> [[RESULTADO]] <!-- ...en esta zona va el resultado codificado en XML... --> </return> </tns:[[funcion_invocada]]Response> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

La codificación de resultados podrá estar envuelta en una sección XML de contenido no procesable, es decir, envuelto en <![CDATA[RESULTADO]]>, en caso de que el contenido lo requiera.

FORMATO DEL XML CON RESULTADO GENÉRICO: ESTRUCTURA DTD

El resultado de la llamada al Ws viene en el elemento ResultadoWS. El esquema DTD del XML con el resultado genérico es el siguiente:

<!DOCTYPE ResultadoWS [ <!-- Resultado (version 1.0) del Servicio Web. --> <!ELEMENT ResultadoWS (Resultado, Mensaje, FechaHora, RefTransmision, Saldo?, NumRecetaVet?, CodSegVerificacion?, Errores?, Avisos?)> <!-- Indicador de version de tipo de respuesta. --> <!ATTLIST ResultadoWS version CDATA "1.0"> <!-- Lista de errores si hay más de uno en total. --> <!ELEMENT Errores (Error+)> <!ELEMENT Avisos (Aviso+)> <!ELEMENT Error (Codigo, Texto)> <!-- El "Codigo" es el codgo de resultado del error, y el "Texto" es el mensaje descriptivo del error. --> <!ELEMENT Aviso (Codigo, Texto)> <!-- El "Codigo" es el codgo de resultado del aviso, y el "Texto" es el mensaje descriptivo del aviso. --> <!-- Codigo de resultado 0=bien, otro=error. --> <!ELEMENT Resultado (#PCDATA)> <!-- Mensaje descriptivo del resultado. --> <!ELEMENT Mensaje (#PCDATA)> <!-- Momento del sistema para la respuesta a la peticion. --> <!ELEMENT FechaHora (#PCDATA)> <!-- Codigo de referencia de la transmision. --> <!ELEMENT RefTransmision (#PCDATA)> <!-- Saldo pendiente del veterinario al final del proceso. --> <!ELEMENT Saldo (#PCDATA)> <!-- Número de Receta secuencial dentro del sistema según la combinación "Distintivo/Colegio/Colegiado/Ejercicio", si la receta está BIEN importada.--> <!ELEMENT NumRecetaVet (#PCDATA)> <!-- Codigo Seguro de Verificación (tipo UUID), si la receta está BIEN importada.--> <!ELEMENT CodSegVerificacion (#PCDATA)> <!-- Codigo de resultado del error dentro de la lista de errores. --> <!ELEMENT Codigo (#PCDATA)> <!-- Mensaje descriptivo del error dentro de la lista de errores. --> <!ELEMENT Texto (#PCDATA)> ]>

Los parámetros contenidos en el documento XML de respuesta son fácilmente reconocibles, aunque hay que hacer algunas aclaraciones:

Resultado: Valor numérico que si es 0 (CERO), el resultado es correcto (no hay error). Cualquier otro valor indicará un resultado erróneo y ese mismo valor será el código de error producido.

Mensaje: Texto descriptivo del resultado, o cadena vacía si el resultado es correcto (0).

FechaHora: La fecha y hora del sistema en el momento de dar la respuesta a la petición. Puede servir para calcular la duración de una solicitud en tiempo, o para sincronizar la hora del sistema externo con la del servidor.

RefTransmision: Identificador de referencia de la transmisión realizada, generada por el sistema de forma única y que sirve para el control de las mismas a la hora de comprobar su validez; o como referencia para el sistema externo en caso de que se detecten incidencias.

Saldo: Saldo de recetas del Colegiado/Veterinario tras la última importación correcta de una receta.

NumRecetaVet: Número de receta secuencial asignado por el sistema REVELCYL para la combinación de datos "Distintivo, Colegio, Colegiado, Ejercicio", una vez que se haya importado correctamente.

CodSegVerificacion: código seguro de verificación de la receta una vez que se haya importado correctamente.

Errores: Lista ampliada de errores producidos en el proceso del tratamiento de la transmisión. Sólo aparece este elemento si hay más de un error en el proceso ya que si sólo hay uno, se tendrá en los elementos "Resultado" y "Mensaje".

Error: Detalle de cada error con su código de resultado y mensaje de texto en los elementos "Código" y "Texto" respectivamente.

Avisos: Lista ampliada de avisos producidos en el proceso del tratamiento de la transmisión. Sólo aparece este elemento si hay más de un aviso en el proceso ya que si sólo hay uno, se tendrá en los elementos "Resultado" y "Mensaje".

Aviso: Detalle de cada error con su código de resultado y mensaje de texto en los elementos "Código" y "Texto" respectivamente.

Lista de errores y avisos en la respuesta SOAP Mostrar/Ocultar
Sección "WS_BD"
CodigoDescripción
1001Error al guardar el Registro de Importación.
1002Error al guardar el Registro de Receta.
1003Error al guardar el Registro de Receta-Medicamento.
Sección "WS_IN"
CodigoDescripción
2011La longitud del XML de entrada no supera el mínimo permitido.
2012La longitud del XML de entrada supera el maximo permitido.
2013El documento contenido no presenta un XML valido.
2014El documento contenido no presenta un formato XML reconocido.
2015El documento contenido no incluye un adjunto DocumentoFirmado.
2016El DocumentoFirmado no contiene una firma válida.
2017No se ha identificado el veterinario que firma el documento.
2018El DocumentoFirmado contiene una firma que no pertenece al veterinario identificado en la receta.
2020No se ha identificado el transmisor.
2021El transmisor identificado no está autorizado.
2022El transmisor identificado ha excedido el limite de errores permitidos en importación (1).
2023El transmisor identificado ha excedido el limite de errores permitidos en importación (2).
2031No se ha identificado el veterinario que firma la receta.
2032El veterinario identificado no está autorizado para firmar recetas.
2033El veterinario identificado no tiene saldo suficiente para importar recetas.
2034El veterinario que firma no coincide con el que hace la transmisión.
2035El veterinario que firma no pertenece al equipo que hace la transmisión.
2036El veterinario que firma no ha autorizado al representante que hace la transmisión.
2041No valida el XSD para la receta contenida en la transmisión.
2042No se reconoce el formato XML de la receta contenida en la transmisión.
2043Documento de receta con errores de carga, comprobar lista de errores.
2044Documento de receta con información no válida, comprobar lista de errores.
2045Documento de receta con errores de almacenamiento, comprobar lista de errores.
Sección "AFIRMA"
CodigoDescripción
3001Error al decodificar el contenido de la firma [XML.B64].
3002Error al procesar firma como XML [XML.AF].
3003Error al procesar firma, no representa un XML valido [XML.NO].
3004Error al detectar el contenido firmado [CONT.NO].
3005Error al detectar el documento firmado [DOC.NO].
3006Error al decodificar el documento firmado [DOC.B64].
3007Error al detectar el contenido del valor de la firma [SIGN.VAL.NO].
3008Error al detectar certificados de la firma [CERT.NO].
3009Error al decodificar certificado de la firma [CERT.DEC].
3010Error al detectar propiedades firmadas [SIGN.PROP.NO].
3011Error al detectar propiedades firmadas [SIGN.PROP.NE1].
3012Error al detectar fecha y hora de firma [SIGN.TIME.NO].
3013Error al detectar propiedades del proveedor de firma [ISSUER.PROP.NO].
3014Error al detectar proveedor del certificado de firma [ISSUER.N.NO].
3015Error al detectar número de serie del certificado de firma [SERIAL.N.NO].
3016Error al detectar propiedades no firmadas [SIGN.PROP.NO].
3017Error al detectar propiedades no firmadas [SIGN.PROP.NE1].
3018Error al verificar certificado de la firma, no coincide [CERT.NE].
3019Error al detectar identificador del sujeto de firma [SUBJECT.ID.NO].
3020Error en fecha y hora de firma, está hecha antes de la validez del certificado [SIGN.TIME.BE].
3021Error en fecha y hora de firma, está hecha después de la validez del certificado [SIGN.TIME.AF].
3022Error en documento, la firma no es válida [SIGN.INVALID].
3023Error en comunicación con el Servicio de Validación, no se puede comprobar la validez de la firma [SERV.AVAILABLE].
3024El hash del CONTENT no coincide con el del DOCUMENTO: Cont-Hex != sha512(Doc-Plain)
3026El hash del CONTENT no coincide con el del DOCUMENTO: Cont-Hex == sha512(Doc-B64)
3025El hash del CONTENT no coincide con el del DOCUMENTO: Cont-B64 == sha512(Doc-Plain)
3027El hash del CONTENT no coincide con el del DOCUMENTO: Cont-B64 == sha512(Doc-B64)
3101Error al procesar arbol DOM de la firma [SIGN.DOM].
3102Error al procesar nodos XML de la firma [SIGN.XML].
3103Error al procesar texto XML de la firma [SIGN.DATA].
3104Error al detectar elemento "Signature" de la firma [SIGN.NODE].
3105Error al detectar espacio de nombres de la firma [DSIG.NS]
3106Error al detectar espacio de nombres de la firma [XADES.NS]
3107Error al detectar la version XAdES de la firma [XADES.VER]
3108Error al detectar el tipo XAdES de la firma [XADES.TYPE]
Sección "WS_REC"
CodigoDescripción
4001Error en documento, no presenta un XML valido.
4002Error en documento, no hay nodo Raiz reconocido.
4003Error en documento, no hay nodo "DTD" con ese nombre para una lista.
4010Error al procesar Receta.
4011Error al procesar Receta, fase de importación no detectada.
4012La información de la Receta no es válida para importar en Revelcyl.
4014Error al preparar la transaccion para guardar la receta en la BD.
4015Error al terminar la transaccion para confirmar la receta en la BD.
4016Error al terminar la transaccion para cancelar la receta en la BD.
4017No se ha podido guardar la Receta en la BD.
4018No se ha podido guardar alguno de los medicamentos de la Receta en la BD.
4019No se ha podido guardar el Movimiento de Despensa en la BD.
4020No se ha podido guardar el Saldo de Despensa en la BD.
4021No se ha podido bloquear el contador REVELCYL de recetas.
4022No se ha podido calcular el contador REVELCYL para la receta.
4023No se ha podido guardar la firma de la Receta en la BD.
4030Error al buscar Receta origen con ese ID.
4031Error al buscar Receta, falta la serie/distintivo.
4032Error al buscar Receta, la serie/distintivo no es válida.
4033Error al buscar Receta, falta el año/ejercicio.
4034Error en año/ejercicio, no se corresponde con el de la fecha de prescripción.
4035Error al buscar Receta, falta el código de provincia.
4036Error en código de provincia, no se corresponde con una provincia válida.
4037Error al buscar Receta, falta el número de colegiado.
4038Error en número de colegiado, no se corresponde con uno válido.
4039Error al buscar Receta, falta el número de receta.
4040Error al importar Receta, ya existe una Prescripción previa.
4041Error al importar Anulación de Receta, no existe una Prescripción previa.
4042Error al importar Dispensación de Receta, no existe una Prescripción previa.
4050Falta la Fecha de Creación de la Receta.
4051Error en Fecha de Creación, no es válida.
4052Falta el Tipo de Receta.
4053Error en Tipo de Receta, no es válido.
4054Falta la Prescripción Excepcional en la Receta.
4055Error en Prescripcion Excepcional, no es válida.
4056Falta la Fecha de Prescripción de la Receta.
4057La Fecha de Prescripción de la Receta, no es válida.
4058El Periodo de Caducidad no se encuentra (ID).
4059El Periodo de Caducidad no es válido.
4100Error al procesar Prescripción de Receta.
4110Faltan datos para identificar al Veterinario.
4111No se encuentra el Veterinario por ID.
4112No se encuentra el Veterinario por NIF/CIF.
4113Faltan datos para identificar al Colegio Veterinario.
4114No se encuentra el Colegio Veterinario por ID.
4115No se encuentra el Colegio Veterinario por Código de Provincia.
4116No se encuentra al Veterinario dentro de un Colegio Veterinario por su Número de Colegiado.
4117No se encuentra al Veterinario activo dentro de un Equipo de Veterinarios.
4118No coincide el Veterinario informado con el Veterinario que firma la receta.
4119El Veterinario no tiene saldo en la Despensa de Recetas para importar una nueva.
4120Faltan datos para identificar la Explotación.
4121No se encuentra la Explotación por ID.
4122No se encuentra la Explotación por CEA.
4123Faltan datos para identificar al Titular de la Explotación.
4124No se encuentra el Titular por ID.
4125No se encuentra el Titular por NIF/CIF.
4126No se encuentra el Titular actual de la Explotación.
4127No se encuentra un Propietario que vincule a la Explotacion con el Titular.
4130Faltan datos para identificar la Especie.
4131No se encuentra la Especie por ID.
4132No se encuentra la Especie por Código.
4133Faltan datos para identificar la Subespecie.
4135No se encuentra la Subespecie por Código.
4136Falta el numero de animales.
4137El numero de animales no es válido, debe ser mayor que cero.
4138Falta el identificador/lote de los animales.
4140Faltan datos para identificar el Medicamento.
4141No se encuentra el Medicamento por ID.
4142No se encuentra el Medicamento por NumRegistro.
4143No se encuentra el Medicamento con un Formato por CodNacional.
4144No se encuentra el Medicamento a través del "Formato" dado.
4145Falta el Porcentaje de Premezcla.
4146El valor del Porcentaje de Premezcla no es válido, debe estar entre 0.0001 y 100
4150Faltan datos con la lista de medicamentos en pienso.
4151Falta la "Denominacion" en la prescripción.
4152Falta la "Presentacion" en la prescripción.
4153Falta la "FormaFarmaceutica" en la prescripción.
4154Falta la "ViaAdministracion" en la prescripción.
4155Falta el "OrigenMedicamento" en la prescripción.
4156Falta el número de "Unidades" en la prescripción.
4157El número de "Unidades" debe ser mayor que cero.
4158Falta la "UnidadMedida" en la prescripción.
4159Falta el "Diagnostico" en la prescripción.
4160Falta la "Dosis" en la prescripción.
4161Falta la "Duracion" en la prescripción.
4162Falta la "Frecuencia" en la prescripción.
4163Faltan las "Pautas" en la prescripción.
4164Falta el "PorcenPienso" en la prescripción.
4165Falta el "NumAnimales" o "LoteAnimales" o "Diagnostico" en la Receta con Prescripción Excepcional.
4180Error al procesar Firma de Receta.
4181Falta la fecha de firma.
4182Fecha de firma no válida.
4183Falta documento de firma.
4184Documento no válido.
4185Falta el Código UUID de firma.
4186Código UUID no válido.
4200Error al procesar Anulación de Receta.
4201Falta la fecha de anulación de la receta.
4202La fecha de anulación de la receta no es correcta.
4203Falta el motivo de la anulación de la receta.
4300Error al procesar Dispensación de Receta.
4301Falta la fecha de dispensación de la receta.
4302La fecha de dispensación de la receta no es correcta.
4303Falta el lote del medicamento dispensado.
4304Falta la fecha de caducidad del medicamento/pienso dispensado.
4305La fecha de caducidad del medicamento/pienso dispensado no es correcta.
4306La receta es de tipo "P" y falta la lista de medicamentos dispensados en el pienso.
4307La receta es de tipo "P" y falta el número de autorización del dispensador.
4308No se encuentra el medicamento dispensado entre los prescritos.
4310Faltan datos para identificar al Dispensador.
4311No se encuentra el Dispensador por ID.
4312No se encuentra el Dispensador por NIF/CIF.
4313No se encuentra el Dispensador por Num. Autorización.
4314No se encuentra el Dispensador a través del "Almacen".
4321No se encuentra el Almacén del Dispensador por ID.
4322No se encuentra el Almacén del Dispensador por NIF/CIF.
4323No se encuentra el Almacén del Dispensador por Num. Autorización.
Sección "WS_XSD"
CodigoDescripción
XSD_numErrores de validación del XML de la Receta frente al XSD. En "num" se indica el orden del error y en el mensaje la descripción que genera el procesador XSD.
Función "ImportarRecetaVeterinaria()" Mostrar/Ocultar

Esta función es la que permite realizar la importación de datos de recetas veterinarias. Su prototipo es:

string importarRecetaVeterinaria( string xml)

La llamada admite un argumento de tipo cadena que será el XML-AFIRMA descrito anteriormente y, dentro de éste se tendrá el XML con los datos de la receta que se desea enviar al sistema RevelCYL para que la importe.

Una respuesta válida a esta petición indicará que la receta ha sido importada por el sistema y almacenada. Una respuesta errónea indica que la receta en ningún caso ha sido almacenada.

Ejemplos XML RecetaVeterinaria Mostrar/Ocultar

Los siguientes ejemplos muestran cómo deberían enviarse diferentes tipos de recetas y en función de si están o no dispensadas.

En la creación de los XML es importante tener en cuenta que los campos de texto libres que puedan contener caracteres no válidos para el contenido de un elemento XML, y que provocaría la invalidación del mismo, se deben envolver obligatoriamente en el elemento <![CDATA[campotextolibre]]>, tal y como se muestra en algunos ejemplos.

Descarga de Ficheros Mostrar/Ocultar

En esta sección se pueden descargar los documentos necesarios para entender y porder utilizar el servicio web de Receta Veterinaria Electrónica.

Aviso Legal Mostrar/Ocultar