4. Integración de la librería
Image Added
Integración con el api client
La API de integración con bdu, está construida en base a un contrato de servicio especificado en "bduApiClient-api" que es implementado por conectores específicos a la solución tecnológica que se decida en el ámbito del proyecto. Actualmente las soluciones tecnológicas aportadas resuelven los datasources de BDU mediante JAX-WS ó JPA.
Para incluir la librería en un proyecto Maven es necesario realizar los siguientes pasos:
- Agregar el repositorio de la Junta de Andalucía. Para ello, seguir las indicaciones de la página Repositorio de artefactos.
2. Especificar la dependencia principal contra la API en el POM del proyecto que requiere la funcionalidad
4. Integración de la librería
Image Removed
Integración con el api client
La API de integración con bdu, está construida en base a un contrato de servicio especificado en "bduApiClient-api" que es implementado por conectores específicos a la solución tecnológica que se decida en el ámbito del proyecto. Actualmente las soluciones tecnológicas aportadas resuelven los datasources de BDU mediante JAX-WS ó JPA.
Para incluir la librería en un proyecto Maven es necesario realizar los siguientes pasos:
Agregar el repositorio de la Junta de Andalucía. Para ello, seguir las indicaciones de la página Repositorio de artefactos.2. Especificar la dependencia principal contra la API en el POM del proyecto que requiere la funcionalidad
| Bloque de código |
|---|
...
<dependencies>
<!--BDU-->
<dependency>
<groupId>es.ja.csalud.sas.componentescomunes.bduapiclient</groupId>
<artifactId>bduApiClient-api</artifactId>
<version>x.x.x.x</version>
</dependency>
... |
| Bloque de código |
|---|
...
<dependencies>
<!--BDU-->
<dependency>
<groupId>es.ja.csalud.sas.componentescomunes.bduapiclient</groupId>
<artifactId>bduApiClient-jpa-impl</artifactId>
<version>x.x.x.x</version>
</dependency>
... |
| Bloque de código |
|---|
...
<dependencies>
<!--BDU-->
<dependency>
<groupId>es.ja.csalud.sas.componentescomunes.bduapiclient</groupId>
<artifactId>bduApiClient-ws-impl</artifactId>
<version>x.x.x.x</version>
</dependency>
... |
Configuración
Según sea la solución tecnológica utilizada la configuración de la infraestructura necesaria para interaccionar con BDU es diferente, aunque ambas soluciones basadas en SasConfiguration.
JAX-WS
Para que la librería se autoconfigure mediante la librería sasconfiguration, se tendrán que realizar las siguientes acciones:
De forma alternativa se podrán definir manualmente estas configuraciones. Estos parámetros se definirán usando la librería sasconfiguration.(SAS configuration)
Actualmente existe un objeto de configuración:
-
BduApiConfig gestiona la configuración general de la librería.
Ejemplo:
| Bloque de código |
|---|
|
...
@Produces public BduApiConfig getBduApiConfig() {
EnumMap<BduEndPointType, String> endPoints = new EnumMap<BduEndPointType, String>(BduEndPointType.class);
endPoints.put(BduEndPointType.SOLICITUD, "/wsBDU.ashx");
final BduApiConfig bduApiConfig = new BaseBduApiConfig("http://servicios.pre.sas.junta-andalucia.es/usuario", endPoints);
bduApiConfig.setModuleCode("CÓDIGO_EN_MACO_MODULO_SISTEMA");
return bduApiConfig;
}
... |
Para su uso mediante la Factoría, se deberá de crear la factoría pasándole al constructor como parámetro la configuración de la librería.
| Bloque de código |
|---|
|
...
public BduFactory getBduFactory() {
return new BduFactory(getBduApiConfig());
}
... |
JPA
La configuración del conector JPA espera una clase del tipo "BduApiConfig" propia de JPA, debido a las características propias de las impl de ws y jpa se mantendrán separadas las dos necesidades, atendiendo al principio de segregación de responsabilidades, y permitiendo la coexistencia de varias implementaciones de los servicios expuestos en caso de ser necesario.
Básicamente define una serie de timeouts para los servicios integrados, ya que el resto de configuración necesaria para el datasource se realizará como es habitual en un proyecto JPA mediante su "persistence.xml" correspondiente en el proyecto de su aplicación, así como el mapeo de tablas a entidades.
Operación
Criterias
El objeto QuerysBduUserSearchDto , es la representación de los criterios de búsqueda que son soportados por el api client. Dicho objeto permite los siguientes valores.
- Flags, estos son los modificadores soportados:
- detailedInfo: Booleano indicando si se desea la información detallada (true) o resumida (false). Default: false.
- famarciaInfo: Booleano indicando si se desea la información detallada sobre farmacia. Default: False
- fullAddress: Booleano indicando si se desea la información detallada del domicilio del paciente. Default: False.
- Identificadores de usuario único
- Nhusa: Alfanumérico.
- codSns: Alfanumérico.
- socialSecurityNumber: Alfanumérico.
- documentIdType + documentType + documentId: La tripla permite identificar un paciente por el identificador definido, en caso de no informar de forma explicita el tipo de identificador, se supone por defecto DNI.
- Filtros de búsqueda
- birthDateYear: Alfanumérico.
- name: Alfanumérico. Soporta modificadores "startWith","endsWith","contains" y "exact match".
- lastname1: Alfanumérico. Soporta modificadores "startWith","endsWith","contains" y "exact match".
- lastName2
Filtros de búsqueda- birthDateYear: Alfanumérico.
- name: Alfanumérico. Soporta modificadores "startWith","endsWith","contains" y "exact match".
- lastname1: Alfanumérico. Soporta modificadores "startWith","endsWith","contains" y "exact match".
- lastName2: Alfanumérico. Soporta modificadores "startWith","endsWith","contains" y "exact match".
Los filtros de búsqueda basados en cadenas que soportan modificadores se habilitan pasando al criteria el wildcard "*" y en base a su posición se comportan de un modo u otro. Las restricciones impuestas para la longitud de las cadenas entrantes como parámetros son dependientes
- startWith: "*<search_string>"
- endsWith: "<search_string>*"
- contains: "*<search_string>*"
- exact match: "<match_string>"
Es obligatorio informar al menos uno de los siguientes campos para poder hacer uso del criteria, en caso de no informarse se dará una "UnsupportedOperationException" al operar el servicio.
- Un identificador.
- Una lista de nhusas con al menos un elemento.
- Una tupla de nombre,apellido1 y apellido2 en cualquiera de sus posibles combinaciones.
Métodos de servicio
Los métodos de servicio que la API proporciona son los siguientes:
Búsqueda de usuarios (consulta detallada/corta)
La búsqueda de usuarios se realizará mediante los métodos "findUsers" que soportan el criteria descrito anteriormente. Adicionalmente para el conector JPA dichos métodos soportan la indicación de valores para la paginación ó la definición de un valor máximo para el número de resultados devueltos.
Los métodos sin paginación se han marcado para su retirada por obsolescencia y serán retirados a partir de la versión 3.0 del api client. La información devuelta para los métodos paginados devolverán en lugar de una lista de pacientes un objeto de tipo "Page" de pacientes.
Una cuestión importante a tener en cuenta es que el conector basado en JAX-WS no dispone de soporte de paginación ni de máximo número de resultados devueltos actualmente debido a las limitaciones de los contratos de interoperación, y en caso de hacer uso de dichos métodos de servicio se elevarán excepciones fuera de la capa de servicio.
Búsqueda de recién nacidos
La búsqueda de recién nacidos nos devolverá una lista de usuarios que están asociados al nhusa indicado y también tienen soporte para la paginación. Los filtros de búsqueda basados en cadenas que soportan modificadores se habilitan pasando al criteria el wildcard "*" y en base a su posición se comportan de un modo u otro. Las restricciones impuestas para la longitud de las cadenas entrantes como parámetros son dependientes
- startWith: "*<search_string>"
- endsWith: "<search_string>*"
- contains: "*<search_string>*"
- exact match: "<match_string>"
Es obligatorio informar al menos uno de los siguientes campos para poder hacer uso del criteria, en caso de no informarse se dará una "UnsupportedOperationException" al operar el servicio.
- Un identificador.
- Una lista de nhusas con al menos un elemento.
- Una tupla de nombre,apellido1 y apellido2 en cualquiera de sus posibles combinaciones.
Métodos de servicio
Los métodos de servicio que la API proporciona son los siguientes:
Búsqueda de usuarios (consulta detallada/corta)
La búsqueda de usuarios se realizará mediante los métodos "findUsers" que soportan el criteria descrito anteriormente. Adicionalmente para el conector JPA dichos métodos soportan la indicación de valores para la paginación ó la definición de un valor máximo para el número de resultados devueltos.
Los métodos sin paginación se han marcado para su retirada por obsolescencia y serán retirados a partir de la versión 3.0 del api client. La información devuelta para los métodos paginados devolverán en lugar de una lista de pacientes un objeto de tipo "Page" de pacientes.
Una cuestión importante a tener en cuenta es que el conector basado en JAX-WS no dispone de soporte de paginación ni de máximo número de resultados devueltos actualmente debido a las limitaciones de los contratos de interoperación, y en caso de hacer uso de dichos métodos de servicio se elevarán excepciones fuera de la capa de servicio.
Búsqueda de recién nacidos
La búsqueda de recién nacidos nos devolverá una lista de usuarios que están asociados al nhusa indicado y también tienen soporte para la paginación.
Modificación de usuarios:
La librería proporciona cuatro métodos especializados para la modificación de datos de pacientes existentes en el BDU, cada uno correspondiente a un servicio específico del Sistema de Información Diraya. Todos los métodos requieren un usuario MACO (`petitionerUser`) con permisos adecuados y devuelven el paciente actualizado confirmado por el BDU.
Modificación de datos básicos (MODUSU01)
El método `updatePatientBasicData` recibe un objeto `UpdateBduUserBasicDataDto`. Y permite modificar información administrativa fundamental del paciente.
Modificación de domicilio y datos de contacto (MODUSU02)
El método `updatePatientAddress` recibe un objeto `UpdateBduUserAddressDto`. Y permite actualizar la dirección de residencia y la información de contacto del paciente.
Modificación de datos de control (MODUSU03)
El método `updatePatientControlData` recibe un objeto `UpdateBduUserControlDataDto`. Y permite modificar la situación administrativa y fechas de control del paciente.
Modificación de datos de desplazamiento (MODUSU04)
El método `updatePatientDisplacement` recibe un objeto `UpdateBduUserDisplacementDto`. Y permite registrar o modificar la información de desplazamiento temporal del paciente.
Todos los métodos de servicio están preparados para elevar excepciones internas encapsuladas en una excepción de tipo tipo BduApiClientException, sin embargo las implementaciones finales de los conectores a los datasource (JAX-WS ó JPA) son los que disponen de los valores de categorización y tipificación de la excepción.
Paginación
Conector JPA
El conector JPA dispone de características internas para paginar sobre el número de resultados devueltos, además es posible especificar conjuntos de valores especiales que permiten conocer el total del registros del dataset que puede ser devuelto por la búsqueda al definir ambos valores de "page" y "count" a cero.
La implementación actual lo que espera por parte de los desarrolladores es que se haga un uso razonable de los servicios de búsqueda, haciendo uso de las características de paginación cuando sea apropiado, y consultado la información detallada sólo en aquellos casos en los que una navegación en profundidad sea necesaria.
Por otro lado el conector JPA no soporta la devolución de información detallada paginada por cuestiones de rendimiento, devolviendo una excepción en caso de un uso inadecuado.
En el caso de hacer uso de las búsquedas sin soporte para paginación los límites establecidos para los contratos del servicio SOA CCUSU01 serán los aplicables, actualmente 50 registros.
Conector JAX-WS
El conector JAX-WS no tiene soporte a paginación y su limitación sobre el número de resultados devueltos será la aplicable definida en los contratos de operación del servicio CCUSU01.
En caso de operar los servicios con paginación haciendo uso de este conector, se elevarán excepciones hasta la capa de servicio.