Estás viendo una versión antigua de esta página. Ve a la versión actual.

Comparar con el actual Ver el historial de la página

Versión 1 Siguiente »

Subdirección de las Tecnologías de la Información y Comunicaciones

Área de Gobernanza y Calidad



Contenido



Resumen
  • Versión: 1.0.0
  • Fecha publicación:   
  • Entrada en vigor desde: 

Cumplimiento normativo

Las normas expuestas son de obligado cumplimiento. La STIC podrá estudiar los casos excepcionales los cuales serán gestionados a través de los responsables del proyecto correspondiente y autorizados por el Área de Gobernanza de la STIC. Asimismo cualquier aspecto no recogido en estas normas deberá regirse en primera instancia por las guías técnicas correspondientes al esquema nacional de seguridad y esquema nacional de interoperabilidad según correspondencia y en su defecto a los marcos normativos y de desarrollo software establecidos por la Junta de Andalucía, debiendo ser puesto de manifiesto ante la STIC.

La STIC se reserva el derecho a la modificación de la norma sin previo aviso, tras lo cual, notificará del cambio a los actores implicados para su adopción inmediata según la planificación de cada proyecto.

En el caso de que algún actor considere conveniente y/o necesario el incumplimiento de alguna de las normas y/o recomendaciones, deberá aportar previamente la correspondiente justificación fehaciente documentada de la solución alternativa propuesta, así como toda aquella documentación que le sea requerida por la STIC para proceder a su validación técnica.

Contacto Arquitectura: l-arquitectura.stic@juntadeandalucia.es

Histórico de cambios

Los cambios en la normativa vendrán acompañados de un registro de las modificaciones. De este modo se podrá realizar un seguimiento y consultar su evolución. Ordenándose de mas recientes a menos recientes, prestando especial cuidado a las cabezeras de la tablas dónde se indican las fechas de entrada en vigor y versión.

Versiónv02r00Fecha publicación26 de octubre de 2018Fecha entrada en vigor1 de enero de 2019
Alcance
  • Versión inicial sobre el componente que permite la integración con BDU fácilmente

SAS.BduApiClient

Introducción


En el presente documento se presenta la librería SAS.BduApiClient, componente .NET Standar 2.0, para el acceso a datos de BDU.
Esta librería permite el acceso a los datos de BDU utilizando dos implementaciones diferentes: una que utiliza internamente el servicio web de BDU y otra que utiliza réplica de BBDD.

La versión actual de la librería , en su versión acceso a réplica de BBDD, solo dispone de métodos para acceso a la información de mutuas, decretos y los datos principales de usuarios de BDU. 

            

Dependencias


Nombre del componenteVersiónDescripción
System.ServiceModel.Duplex4.5.3Proporciona clases para consumir y comunicarse con servicios Dúplex
System.ServiceModel.Http4.5.3Gestiona solicitudes realizadas a través del protocolo HTTP
System.ServiceModel.NetTcp4.5.3Genera de forma predeterminada una pila de comunicación en tiempo de ejecución, que utiliza la seguridad de transporte, TCP para la entrega de mensajes
System.ServiceModel.Security4.5.3Se encarga de temas generales relacionados con la seguridad
SAS.Common.Core1.1.0Componente .NET común con clases e interfaces core de aplicaciones
SAS.Common.Kernel1.1.0Componente .NET kernel de aplicaciones, como interfaz mapper o diversas utilidades linq
SAS.MacoApiClient2.4.3Componente MacoApiClient
SASUtils.Parse1.0.0Componente utilidad para la conversión entre tipos
SASUtils.Xml1.0.1Componente .NET común para el tratamiento de XMLs
SAS.Common.OracleProvider1.3.3Componente .NET común para la configuración del proveedor de BBDD Oracle
EntityFramework6.2.0ORM de Microsoft para .NET
Oracle.ManagedDataAccess19.6.0Proveedor de acceso a datos de Oracle para .NET
Oracle.ManagedDataAccess.EntityFramework19.6.0ORM de Oracle para .NET

Errores conocidos


  • Bug al obtener texto de un nodo XML.
        Corregido desde de la version 1.0.1

Historial de cambios


Histórico de cambios realizados en la librería

  • 1.0.0 - Versión inicial .NET Standard 2.0.
      Proyecto SAS.BduApiClient.Core
    •  Boundary/Contracts/Services
      • IBduSearch: Interfaz del servicio de búsqueda de BDU
                     
                    //Búsqueda de usuarios, pasando como argumento información del usuario peticionario de la consulta y 
                    // criterio de búsqueda 
                    List<BduUser> FindUsers(IGenericAuthContext<T> petitionerUser, QuerysBduUserSearchDto querysBduUserSearchDto);
                  
    • Entity/dto
      • QuerysBduUserSearchDto: Entidad para definir el criterio de la consulta de usuarios de BDU
                  
                    public List<string> Nuhsas { get; set; }    //Código nuhsas
                    public string SocialSecurityNumber { get; set; }  // Número de seguridad social
                    public string AffiliationNumber { get; set; } // Número de afiliación
                    public string NUHSA { get; set; }// Código NUHSA
                    public string CodSns { get; set; } // Código SNS
                    public string BirthDateYear { get; set; } //Fecha de nacimiento
                    public bool FarmaciaInfo { get; set; } //True si la consulta devolverá información de farmacia
                    public bool FullAddress { get; set; }  //True si la consulta devolverá información de la dirección completa del usuario 
                    public string DocumentIdType { get; set; }   // Tipo del identificador del documento
                    public string DocumentType { get; set; }   // Tipo de documento
                    public string DocumentId { get; set; }  //Identificador del documento
                    public string Name { get; set; }  //Nombre del usuario    
                    public string Surname { get; set; }       //Primer apellido del usuario
                    public string SecondSurname { get; set; }    // segundo apellido del usuario
                    public string ProvinceId { get; set; } //identificador de la provincia
                    public bool DetailedInfo { get; set; } // True si se desea mostrar información detallada
    • Entity
      • Address: Dirección del usuario
      • Adscription: Adscripción
      • BduDisplacement: Desplazamiento BDU. Deriva de la clase Displacement
      • BduUser: Usuario BDU
      • Displacement: Desplazamiento
      • NursingAdscription: Adscripción de Enfermería
      • TeamAdscription: Equipo de Adscripción      

Proyecto BduApiClient

    • api/boundary
      • BduSearch: Mecanismos de obtención de información referente a los usuarios mediante el servicio web de BDU
    • api/control/messages
      • BduMessage: Clase abstracta que deriva de la clase SAS.MacoApiClient.Api.Control.Messages.Message, de la librería MacoApiClient
      • ConsultaCortaUsuariosMessage: Resultado de la consulta corta de usuario. Deriva de ConsultaUsuariosMessage
      • ConsultaDetalladaUsuariosMessage: Resultado de la consulta detallada de usuario.  Deriva de ConsultaUsuariosMessage
      • ConsultaUsuariosMessage: Clase abstracta que deriva de BduMessage y utilizada para formar el XML de respuesta de la consulta
    • api/control
      • BduExceptionManager: Clase que implementa la interfaz IBduExceptionManager. Lanza una excepción en caso de que haya algún error en la respuesta del servicio web de bdu
      • BduUserManager: Implementa la interfaz IBduUserManager. Encargada de procesar la respuesta xml del servicio web de bdu y obtener el listado de usuarios resultantes.
      • IBduExceptionManager: Interfaz para controlar si hay algún error presente en la respuesta del servicio web de BDU, bien de tipo xml o string.
                  
                    void ThrowIfErrorIsPresent(XmlDocument response);
                    void ThrowIfErrorIsPresent(string response);
                       
      • IBduUserManager: Interfaz para procesar la respuesta xml del servicio web de BDU
                  
                    List<BduUser> ProccessBduUsersResponse(string responseXml);    //procesa la respuesta BDU y devuelve listado de usuarios consultados           
          
    • entity/config
      • BduApiConfig: Clase de configuración de la api, para acceder a los servicios Web de BDU. Implementa la interfaz IBduApiConfig
      • IBduApiConfig : Interfaz configuración de la api de BDU que accede a servicios Web de BDU 
              
                    string GetEndPoint(Type bduMessageType); //Obtiene el endpoint del tipo que se pasa por parámetro
                    string GetModuleCode(); //Obtiene el código del módulo
                    void SetModuleCode(string moduleCode);   // establece el código del módulo
                     
    • entity/exceptions  
      • BduBusinessException. Excepción de negocio de BDU. 
      • BduException. Clase específica de excepción de BDU. Deriva de Exception
      • InvalidXmlException: Clase de tipo BduException por XML inválido
      • LockedUserException: Clase de tipo BduException por usuario bloqueado
      • MalformedXmlException: Clase de tipo BduException por xml mal formado
    • entity/
      • EndPointType: Enumerado con los tipos de endpoint del servicio de BDU. Por ahora, únicamente 'Solicitud'.
    • util/
      • BduFactory. Factoría utilidad para la API
      • BduParseUtils: Clase Utilidad para el parseo entre tipos: string a long, string a DateTime. Internamente utiliza  la clase Parse del componente común SASUtils
      • BduXmlUtils: Clase utilidad para el tratamiento de XMLs. Internamente utiliza la clase Xml del componente común SASUtil
      • IBduFactory: Interfaz de la clase factoría de BDU
                  
                    IWsBduManager WsBduManager { get; set; }
                    IBduUserManager BduUserManager { get; set; }
                    IBduExceptionManager BduExceptionManager { get; set; }
                     
    • WebService/Boundary
      • IWsBduManager. Interfaz manejadora de las peticiones al servicio web de BDU
                    
                      string Solicitud(BduMessage message); //  Dado un objeto mensaje de BDU, construye el mensaje XML , se lo envía al servicio web de BDU que corresponda, según tipo del mensaje y devuelve resultado string de BDU
                               
      • WsBduManager. Clase que implementa la interfaz IWsBduManager, encargada de llamar al servicio web de BDU correspondiente, según tipo del mensaje
    • WebService/Control
      • clsPasarelaSoapPort. Clase proxy para la comunicación con el servicio web de BDU
  • 1.0.1 - Corregido error al obtener texto del nodo XML
          Se actualiza la versión del componente SASUtils.Xml por la v1.0.1, debido a un error en el método obtener texto del nodo XML
  • 1.0.2 Corregido error en el mapeo de los datos de ContactInformation
          Actualizada versión de la librería de MacoApiClient a v2.0.1
  • 1.0.3 Actualizada la versión del componente MacoApiClient a la v2.4.1, y la versión de oracle  a la v19.6
  • 1.1.0 Añadido dos nuevos servicios para consultar, vía réplica de BBDD, usuarios y mutuas. Los cambios han sido los siguientes:
     Proyecto SAS.BduApiClient.Core
    • Boundary/Contracts/Repositories
      • IMutualidadRepository: Interfaz de mecanismos de obtención de información referente a mutuas utilizando la réplica de BBDD. 
                   
                    //Mecanismo de obtención de información de todas las mutuas. 
                     IList<MutualInsurance> GetMutualInsurance();
                    /// Mecanismo de obtencion de información de todas las mutuas que cumplen con el criterio.
                     IList<MutualInsurance> FindMutualInsurances(QuerysMutualInsuranceDto criteria);
                         
      • IUserRepository: Mecanismos de obtención de información referente a usuarios utilizando la réplica de BBDD.
                  
                    //Mecanismo de obtención de información referente un usuario.
                     IList<BduUser> FindUserWithDetailed(QuerysBduUserSearchDto criteria);
                    
                    // Mecanismo de obtencion de información de Bdu de solicitudes decreto. Devuelve valores de CONVENIO_AP, SITUACION_ACTUAL, CLAVE_MEDICA, VALIDADO, ESPECIALIDAD_CM de la tabla de BDU por nuhsa.
                     BduDecreeRequest FindBduElementsDecreeRequest(QuerysBduUserSearchDto criteria);   
    • Boundary/Contracts/Services
      • IMutualInsuranceService: Mecanismos de obtención de información referente a las mutuas vía réplica de BBDD.
                    
                        //Mecanismo de obtención de información de todas las mutuas. 
                          IList<MutualInsurance> GetMutualInsurance(IGenericAuthContext<object> petitionerMutua);
                        // Mecanismo de obtencion de información de todas las mutuas que cumplen con el criterio.
                        IList<MutualInsurance> FindMutualInsurances(IGenericAuthContext<object> petitionerMutua, QuerysMutualInsuranceDto criteria);
                     
    • Entity/dto  
      • QuerysMutualInsuranceDto**: Entidad para definir el criterio de búsqueda de mutuas
                    public decimal? Id { get; set; } // Identificador numérico de la mutua
            
    • Entity       
      • MutualInsurance: Compañía de seguros         

Proyecto BduApiClient

    • api/boundary
      • BduUserService: Mecanismos de obtención de información referente a los usuarios mediante réplicas de BBDD
      • MutualInsuranceService: Mecanismos de obtención de información referente a las mutuas utilizando la implementación de réplicas de BBDD.       

  Proyecto SAS.BduApiClient.ManagedDataAccess.Oracle
    Componente utilizado internamente por las clases servicios que se conenectan a BDU vía réplica.

    • Boundary
      • ConfigContextApiBduConnection. Configuración de conexiones a la réplica de BBDD de BDU
      • ManagedConfigBduConnection. Entidad de conexión a contexto
      • MutualidadRepository. Mecanismos de obtención de información referente a mutuas vía réplica de BBDD
      • UserRepository. Mecanismos de obtención de información referente a los usuarios vía réplica de BBDD
         
    •  Control/Mapper
      • MutualidadesMapper. Clase para realizar el mapeo de las entidades relacionadas con la Mutualidad.
      • MutualidadMapper. Clase para realizar el mapeo de las entidades relacionadas con la Mutualidad.
      • UsuarioBduMapper. Clase para realizar el mapeo de las entidades relacionadas con usuario BDU.
      • UsuarioBduSolicitudDecretoMapper. Clase para realizar el mapeo de las entidades relacionadas con la solicitud de decreto de usuario BDU.
      • UsuariosBduMapper. Clase para realizar el mapeo de las entidades relacionadas con usuarios BDU.
    • Entity
      • BduSolicitudDecreto. Entidad solicitud decreto de BDU.
      • Mutualidad. Entidad de mutualidad.
      • UsuarioBdu.  Entidad usuario BDU.
    • Entity/EntityFramework/Bdu
      • BduConexion.  Contexto de conexión a la replica de BDU. 
      • BduEntity. Entidad de BDU. 
      • BduManejadoConnect. Clase para utilizar la conexión de BDU en un contexto manejado
      • CausasPasivoEntity. Entidad de las causas pasivo.
      • ComunidadEntity. Entidad de comunidad.
      • FarmaciaTipoAportacionEntity. Entidad de farmacia tipo aportacion. 
      • FinanciacionEntity.  Entidad financiación. 
      • LocalidadEntity. Entidad de localidad.
      • MutualidadEntity. Entidad de mutualidad. 
      • PaisEntity. Entidad de pais.
      • SexoEntity. Entidad de sexo. 
      • SituacionActualEntity. Entidad de la situación actual.
      • TipoViaEntity. Entidad de tipo via. 
    • Entity/EntityFramework/Exception
      • ContextException. Contexto para la excepciones producidas en la conexión a la réplica de BBDD de BDU
    • Entity/EntityFramework/Projection  
      • BduProjection. Proyección de BDU.
      • CausasPasivoProjection. Proyección de las causas pasivo.
      • ComunidadProjection. Proyección de la comunidad.
      • FarmaciaTipoAportacionProjection. Proyección farmacia tipo aportacion.
      • FinanciacionProjection. Proyección financiación.
      • LocalidadProjection. Proyección de la localidad. 
      • MutualidadProjection.  Proyección de la mutualidad.
      • PaisProjection. Proyección del pais.
      • SexoProjection. Proyección del sexo.
      • SituacionActualProjection. Proyección de la situacion actual. 
      • TipoViaProjection. Proyección del tipo de via.   
  • 1.2.0 Añadido posibilidad de definir el endpoint del servicio web de BDU por configuración
    • Permitir llamadas al servicio web de BDU vía HTTPS
    • Corregido minúsculas en el espacio de nombre api.boundary. Se ha cambiado a Api.Boundary.
    • Actualizada versión de MacoApiClient a la v2.4.3, la cual permite llamadas a su servicio web vía HTTPS
         
  • 1.3.0 Añadido consulta para obtener las solicitudes de decreto, en el que se filtra por NUHSA. Los cambios han sido los siguientes:
     Proyecto SAS.BduApiClient.Core
    • Boundary/Contracts/Repositories
      • IUserRepository: Mecanismos de obtención de información referente a usuarios utilizando la réplica de BBDD. Se ha añadido el siguiente método:
                   
                    // Mecanismo de obtencion de información de Bdu de solicitudes decreto. Devuelve valores de CONVENIO_AP, SITUACION_ACTUAL, CLAVE_MEDICA, VALIDADO, ESPECIALIDAD_CM de la tabla de BDU por nuhsa.
                     BduDecreeRequest FindBduElementsDecreeRequest(QuerysBduUserSearchDto criteria);
           
    • Boundary/Contracts/Services
      • IBduDecreeRequestService: Mecanismos de obtención de información referente a las solicitudes de decreto vía réplica de BBDD.
                  
                    //Mecanismo de obtencion de información de Bdu de solicitudes decreto.
                      BduDecreeRequest FindBduElementsDecreeRequest(IGenericAuthContext<object> petitionerBdu, QuerysBduUserSearchDto criteria);             
    • Entity
      • BduDecreeRequest: Petición de decreto

 Proyecto BduApiClient

    • api/boundary
      • BduDecreeRequestService: Mecanismos de obtención de información de bdu referente a una solicitud decreto de un usuario. Implementa la interfaz IBduDecreeRequestService
         

Proyecto SAS.BduApiClient.ManagedDataAccess.Oracle
Componente utilizado internamente por las clases servicios que se conenectan a BDU vía réplica. Se ha añadido lo siguiente: 

    • Boundary
             
      • UserRepository. Mecanismos de obtención de información referente a los usuarios vía réplica de BBDD
                 Se añade el siguiente mecanismo de obtencion de información de BDU de solicitudes decreto, el cual devuelve los valores de CONVENIO_AP, SITUACION_ACTUAL, CLAVE_MEDICA, VALIDADO, ESPECIALIDAD_CM de la tabla BDU filtrado por NUHSA:
                   public BduDecreeRequest FindBduElementsDecreeRequest(QuerysBduUserSearchDto criteria)  
    • Control/Mapper
             
        • UsuarioBduSolicitudDecretoMapper. Clase para realizar el mapeo de las entidades relacionadas con usuario BDU.   
    • Entity
             
      • BduSolicitudDecreto. Entidad solicitud decreto de BDU.              
  • 1.3.1 Corrección en la definición de determinadas clases Entity respecto a la  definición del esquema de BBDD y envío de la versión de la API en el campo user-agent de la invocación al servicio Web de BDU.  

    •  Se ha eliminado la definición de esquema de BBDD específico en las siguientes entidades:

      • ComunidadEntity

      • FarmaciaTipoAportacionEntity

      • FinanciacionEntity

      • LocalidadEntity

      • PaisEntity

      • SexoEntity

      • SituacionActualEntity

      • TipoViaEntity

    • En la clase proxy genérico, definida en bduApiClient/WebService/Boundary/WSBduManager.cs, al invocar al servicio web de BDU, se ha añadido  la versión actual de la API en el campo User-Agent.        


Integración de la librería

Acceder a nuget e instalar la librería SAS.BduApiClient.   

Configuración


La configuración de la API depende del tipo de implementación de servicios que se vaya a utilizar, según se acceda a los datos  mediante el Servicio Web de BDU o mediante réplicas de BBDD. Veamos cada una de ellas:

La siguiente configuración de ejemplo se añadiría en clase Startup de un proyecto ASP .NET MVC.

Primero, en el fichero Startup.cs, método ConfigureServices, inicializamos el contenedor de inyección de dependencia:
 
    public void ConfigureServices(IServiceCollection services)
    {
        ...
        ContainerDI.SetAsyncScopedLifestyle(); // establecer estilo de vida por defecto del contenedor de inyección. Permite procesar tanto operaciones asíncronas como síncronas
        ContainerDI.RegisterServices(ref services); 
        ...
    }
 
ContainerDI, clase del componente común SAS.Util.Injection, el cual permite el registro por inyección de dependencia de los diferentes servicios y tipos utilizados en el sistema.


  • Configuración de la API para acceder al Servicio Web de BDU
        En el fichero appsettings.json se define una sección en la que se establece el código del módulo en MACO y en otra sección, el endpoint del servicio web de BDU.
        
     
     (1) "MacoApiClient": {
          "MacoModule": "XXX" // el código concreto hay que solicitarlo a la OTI
      },
    (2) "WebServiceLocator": {
        "ServiceAddressBdu": "https://servicios.pre.sas.junta-andalucia.es/",
        "EndPointAddressBduSolicitud": "/usuario/wsBDU.ashx"
      }
     
      (1) Configuración del módulo en MACO, indicado por la OTI.
      (2) Configuración de la dirección URL del servicio web de BDU. En el ejemplo se hace referencia a la URL de PRE.
      


A continuación, en el fichero Startup.cs, método InitializeContainer() se registra, por inyección de dependencia, los diferentes servicios utilizados de la API.
  
    
       private void InitializeContainer()
        {
        ...
            #region Registrar BDU
  (3) ContainerDI.Register<IBduSearch<MacoUser>, BduSearch>(ContainerDI.LifeStyleContainer.Transient);

            (4) var bduApiConfig = new BduApiConfig(Configuration.GetSection("WebServiceLocator:ServiceAddressBdu").Value, Configuration.GetSection("MacoApiClient:MacoModule").Value){
            };
            (5) bduApiConfig.EndPoints = new Dictionary<BduApiClient.Api.Entity.EndPointType, string>
            {
                { SAS.BduApiClient.Api.Entity.EndPointType.Solicitud, Configuration.GetSection("WebServiceLocator:EndPointAddressBduSolicitud").Value }
            };
            (6) ContainerDI.Register<IBduApiConfig>(() => bduApiConfig,  ContainerDI.LifeStyleContainer.Transient);
            (7) ContainerDI.Register<IBduUserManager, BduUserManager>(ContainerDI.LifeStyleContainer.Transient);
            (8) ContainerDI.Register<IBduExceptionManager, BduExceptionManager>(ContainerDI.LifeStyleContainer.Transient);
            (9) ContainerDI.Register<IWsBduManager, WsBduManager>(ContainerDI.LifeStyleContainer.Transient);
            #endregion
            ...
        }
    

     
   (3) Configuración del servicio de búsqueda de BDU que utiliza internamente el servicio web de BDU
   (4) Configuración de la API de BDU, indicando url de BDU y código de la aplicación en MACO
   (5) Configuración el endpoint del Servicio web de BDU
   (6) Registro del tipo BDUApiConfig que implementa la interfaz de configuración de BDU, IBduApiConfig
   (7) Registro del tipo BduUserManager, que implementa la interfaz IBduUserManager
   (8) Registro del tipo BduExceptionManager, que implementa la interfaz IBduExceptionManager
   (9) Registro del tipo WsBdumanager, que implementa la interfaz IWsBduManager   


  • Configuración de la API versión Réplica de BBDD     

        private void InitializeContainer()
        {
        ...
            #region Registrar BDU
        (10)  ContainerDI.Register<IBduSearch<object>, BduUserService>(ContainerDI.LifeStyleContainer.Transient);
        (11)  ContainerDI.Register<IMutualInsuranceService<object>, MutualInsuranceService>(ContainerDI.LifeStyleContainer.Transient);
        (12)  ContainerDI.Register<IBduDecreeRequestService<object>, BduDecreeRequestService>(ContainerDI.LifeStyleContainer.Transient);
        (13)  ContainerDI.Register<IUserRepository, UserRepository>(ContainerDI.LifeStyleContainer.Transient);
        (14)  ContainerDI.Register<IMutualidadRepository, MutualidadRepository>(ContainerDI.LifeStyleContainer.Transient);
        (15)  // Conexion a la réplica de BDU
            ContainerDI.Register<IConfigContextApiConnection<SchemaType>>(() =>
            new ConfigContextApiBduConnection(new ManagedConfigConnectionBase<SchemaType>[]
                {
                    new ManagedConfigConnectionBase<SchemaType>(ConfigurationManager.ConnectionStrings["BDUConnection"].ConnectionString, SchemaType.Bdu, "NOMBRE DEL ESQUEMA")
                })
            , ContainerDI.LifeStyleContainer.Transient);
         #endregion
            ...
        }
           
   (10) Registro del servicio BduUserService, que implemeneta la interfaz IBduSearch. Permite el acceso a datos de usuario vía réplica de BBDD.
   (11) Registro del servicio MutualInsuranceService, que implemeneta la interfaz IMutualInsuranceService, para el acceso a datos de mutuas vía réplica.
   (12) Registro del servicio BduDecreeRequestService, que implemeneta la interfaz IBduDecreeRequestService, para el acceso a datos de decretos vía réplica.
   (13) Registro del tipo UserRepository que implementa la interfaz IUserRepository
   (14) Registro del tipo MutualidadRepository que implementa la interfaz IUseIMutualidadRepository
   (15) Configuración del contexto de BBDD con el tipo concreto ConfigContextApiBduConnection. Recibe como parámetros la cadena de conexión de la réplica de BDU, tipo de esquema Bdu y nombre del esquema de la BBDD.

Criterios


El objeto QuerysBduUserSearchDto, es la representación de los criterios de búsqueda que son soportados por la 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). Valor por defecto: False
              NOTA: Actualmente, en la versión réplica de la API sólo se permite la consulta detallada.                
    • FarmaciaInfo: Booleano indicando si se desea la información detallada sobre farmacia. Valor por defecto: False
    • FullAddress: Booleano indicando si se desea la información detallada del domicilio del paciente. Valor por defecto: False.
  • Identificadores de usuario único
        -
    • NUHSA: Alfanumérico.    
    • CodSns: Alfanumérico.   
    • SocialSecurityNumber: Alfanumérico.   
    • AffiliationNumber: Alfanumérico    
    • Nuhsas: Lista de códigos NUHSA   
    • DocumentIdType + DocumentType + DocumentId: permite identificar un paciente por el identificador definido. 
  • Filtros de búsqueda    
    • BirthDateYear: Alfanumérico.    
    • Name: Nombre del paciente    
    • Surname: Primer apellido del paciente    
    • SecondSurname: Segundo apellido del paciente

    Antes de realizar la búsqueda de usuarios, vía servicio web o réplica de BBDD, se valida que el objeto criterio de búsqueda QuerysBduUserSearchDto cumpla las siguientes condiciones:
    

  • El objeto QuerysBduUserSearchDto no puede ser nulo
  • No pueden ser nulo los siguientes atributos: SocialSecurityNumber, AffiliationNumber, NUHSA, CodSns, DocumentId
  • Almenos se deben de especificar dos campos de entre: Name,  Surname, SecondSurname
      

Métodos de servicio

Los métodos de servicio que la API proporciona son los siguientes:

  • Búsqueda de usuarios (consula detallada/corta)
        La búsqueda de usuarios se realizará mediante los métodos "findUsers"  que soportan el criteria descrito anteriormente.
            NOTA: Actualmente en la versión réplica sólo se permite la consulta detallada
  • Búsqueda información de mutuas (sólo modo réplica de BBDD)
        - Listado de mutualidades
        - Listado de mutualidades que cumplen con un criterio
  • Búsqueda información de decretos (sólo modo réplica de BBDD)
        - Búsqueda de información de solicitud de decreto que cumple un criterio

Uso


A continuación se describe el uso de la librería. 

Funcionalidades utilizando Servicio Web de BDU

  • Búsqueda de usuarios

Una vez realizada la configuración de la API, se siguen los siguientes pasos para realizar una búsqueda de usuarios utilizando el servicio Web de BDU.
    
1. En la clase donde se va a añadir esta funcional, BduService en el ejemplo,  añadir al constructor un objeto de tipo IBduSearch: IBduSearch<MacoUser> bduSearch. 
2. Añadir un método, FindUsers en el ejemplo, con los siguientes parámetros: IGenericAuthContext<MacoUser> petitionerUser y QuerysBduUserSearchDto querysBduUserSearchDto. El primero hace referencia al usuario Maco peticionario de la llamada y el segundo los criterial de la query que se va a realizar.
3. Llamar al método FindUsers del servicio de BDU, _bduSearch en el ejemplo, pasando como parámetro el usuario peticionario y la query, petitionerUser y queryBduUserSearchDto en el ejemplo.
4. Por último, se hace el mapping entre el tipo usuario BDU devuelto por la API y el propio del sistema que realiza la llamada.
Ejemplo:
  
       ...
        using SAS.MacoApiClient.User.Entity;
        using SAS.Common.Core.Boundary.Contracts;
        using SAS.BduApiClient.Core.Entity.dto;
        using SAS.BduApiClient.Core.Boundary.Contracts.Services;
        ...
       public class BduService: IBduService
        {
            private IBduSearch<MacoUser> _bduSearch;
            public BduService(IBduSearch<MacoUser> bduSearch)
            {
                _bduSearch = bduSearch;
            }
    
            public List<BduUser> FindUsers(IGenericAuthContext<MacoUser> petitionerUser, QuerysBduUserSearchDto querysBduUserSearchDto)
            {
                List<BduUser> resultFindUsers = new List<BduUser>();
                var result = _bduSearch.FindUsers(petitionerUser, querysBduUserSearchDto);
                foreach (SAS.BduApiClient.Core.Entity.BduUser bduUser in result)
                {
                    var bduUserLocal = new BduUser();
                    bduUserLocal.Name = bduUser.Name;
                    bduUserLocal.FirstSurname = bduUser.FirstSurname;
                    bduUserLocal.SecondSurname = bduUser.SecondSurname;
                    //en unmapping hacer resto de campos
                    resultFindUsers.Add(bduUserLocal);
                }
                return resultFindUsers;
            }
        }
    }
    
   
    5. La clase que se haya creado para añadir la funcionalidad de búsqueda de usuarios se debe registrar en la clase Startup.cs, método InitializeContainer(), al igual que el resto de servicio y tipos. Continuando con el ejemplo:
     
               
          ContainerDI.Register<IBduService, BduService>(ContainerDI.LifeStyleContainer.Transient);
       

Funcionalidades utilizando la réplica de BDU

  • Búsqueda de usuarios
        La búsquea de usuarios se realiza del mismo modo que se explica en el punto anterior. Únicamente hay que tener encuenta que el servicio que implementa la interfaz IBduSearch es, en este caso, SAS.BduApiClient.Api.Boundary.BduUserService (ver Configuración de la API versión Réplica de BBDD) y que en modo réplica, y en la versión actual de la librería, sólo se puede especificar la consulta detallada.
        
  • Información de Mutuas
        Para consultar información de mutuas, se realiza los siguientes pasos:
      
    • En el constructor de la clase donde vamos a utilizar la funcionalidad de mutuas, se añade un objeto de tipo  IMutualInsuranceService: IMutualInsuranceService<object> servicioMutua;        
      • Listado de mutuas
                     A continuación se llama al método GetMutualInsurance del servicio, pasando como parámetro peticionario un null: servicioMutua.GetMutualInsurance(null);
                     NOTA: El parámetro peticionario es null debido a que en la réplica no se registra peticionario de la consulta. En un futuro servicio web de mutuas sí podría ser necesario el parámetro peticionario definido en la interfaz para su registro.
                
      • Búsqueda de mutuas  que cumplen una determinada condición
                    En este caso se llamaría al método FindMutualInsurances, que recibe como parámetros el peticionario y el criterio de búsqueda:
                    FindMutualInsurances(IGenericAuthContext<object> petitionerMutua, QuerysMutualInsuranceDto criteria);
                    En el atributo petitionerMutua se le pasaría un null y en criteria el id de la mútua a buscar.
  • Información de decretos

    Para consultar información de decretos, realizamos los siguientes pasos:
   

    • En el constructor de la clase donde vamos a utilizar la funcionalidad de decretos, se añade un objeto de tipo  IBduDecreeRequestService: IBduDecreeRequestService<object> servicioDecretos;
              
      • Búsqueda de decretos  que cumplen una determinada condición
                    En este caso se llamaría al método  FindBduElementsDecreeRequest(IGenericAuthContext<object> petitionerBdu, QuerysBduUserSearchDto criteria), que recibe como parámetros el peticionario y el criterio de búsqueda:    
                    En el atributo peticionario se le pasaría un null y en criteria el criterio de búsqueda QuerysBduUserSearchDto.


  • Sin etiquetas