be.ehealth.businessconnector.hub.session.impl

## Class HubServiceImpl

- java.lang.Object
- - be.ehealth.businessconnector.hub.session.impl.HubServiceImpl

- All Implemented Interfaces:
    HubService

      public class HubServiceImpl
      extends Object
      implements HubService

  As part of the Business Connector for General Practitioners, a Hub Consultation component is foreseen that provides connectivity to a local hub. As part of this component a set of 23 operations are available. They can be grouped as follows:

  - Transactions: Put, Get, Revoke, Get List, Declare
  - Request Publication
  - Health Care Party: Get, Put
  - Patient: Get, Put
  - Health Care Party Consent: Put, Get, Revoke
  - Patient Consent: Put, Get, Revoke
  - Therapeutic Link: Put, Get, Revoke
  - Access Right: Put, Get, Revoke
  - Get Patient Audit Trail

  The Hub Consultation component, part of the Business Connector for General Practitioners, provides a simple API to access the wide range of hub operations. It hides the complexity on both functional and technical level (web service communication, simplified data interface, handles encryption/decryption, etc).

  The following principles have been applied while defining the interface for the set of operations:

  - The request/response messages exchanged with the hub system include a header element that includes some general information related to the message and sender. This information will be added automatically, no intervention is required by the client application using the API. The necessary information will be retrieved from the Business Connector's configuration file.
  - The Kmehr XML format is used extensively to structure data elements that are exchanged between hubs, hospitals and a General Practitioner. Whenever a Kmehr document is requested as input parameter or provided as response, the Kmehr XML format is foreseen as interface for the operation. This means that the client application must provide a valid Kmehr XML structure as input or will receive a Kmehr XML structure as response for certain operations.
  - As medical information is exchanged, the sensitive data will be encrypted using the end-to-end encryption framework. The Hub Consultation component will take care of the encryption/decryption of the content.
  Implementation of `HubService`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `HubServiceImpl(SessionValidator sessionValidator)` Instantiates a new Hub Service.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `List<IDKMEHR>` | `declareTransaction(KmehrHeaderDeclareTransaction kmehrHeader)` This operation should be used to declare a transaction within a hub.
    `AccessRightListType` | `getAccessRight(TransactionIdType transaction)` This operation should be used to get access rights on a transaction within a hub.
    `HCPartyAdaptedType` | `getHCParty(HCPartyIdType hcParty)` This operation should be used to retrieve the data associated with a healthcare party within a hub.
    `ConsentHCPartyType` | `getHCPartyConsent(HCPartyIdType hcPartyId)` This operation should be used to retrieve the consent of a healthcare party within a hub.
    `PersonType` | `getPatient(PatientIdType patientId)` This operation should be used to declare the consent of an healthcare party within a hub.
    `TransactionAccessListType` | `getPatientAuditTrail(SelectGetPatientAuditTrailType patientAuditTrail)` This operation should be used to get the list of transaction accesses for a given patient.
    `ConsentType` | `getPatientConsent(SelectGetPatientConsentType patientConsent)` This operation should be used to retrieve the consent of a patient within a hub.
    `Collection<TherapeuticLinkType>` | `getTherapeuticLink(SelectGetHCPartyPatientConsentType patientConsent)` This operation should be used to get therapeutic link between a patient and a healthcare party within a hub.
    `Kmehrmessage` | `getTransaction(PatientIdType patient, TransactionBaseType transaction)` This operation should be used to retrieve a transaction (given a transaction identifier) within a hub.
    `KmehrHeaderGetTransactionList` | `getTransactionList(PatientIdType patient, LocalSearchType searchType, TransactionWithPeriodType transaction)` This operation should be used to get the list of available transactions that fulfill some given criteria.
    `void` | `putAccessRight(AccessRightType accessRight)` This operation should be used to put an access right on a transaction within a hub.
    `HCPartyAdaptedType` | `putHCParty(HCPartyAdaptedType hcParty)` This operation should be used to create a healthcare party within a hub.
    `void` | `putHCPartyConsent(ConsentHCPartyType consent)` This operation should be used to declare the consent of an healthcare party within a hub.
    `PersonType` | `putPatient(PersonType patient)` This operation should be used to create a patient within a hub.
    `void` | `putPatientConsent(ConsentType patientConsent)` This operation should be used to declare the consent of a patient within a hub.
    `void` | `putTherapeuticLink(TherapeuticLinkType therapeuticLink)` This operation should be used to declare therapeutic link between a patient and a healthcare party within a hub.
    `void` | `putTransaction(Kmehrmessage kmehrHeader)` This operation should be used to declare and to store a given transaction within a hub.
    `void` | `requestPublication(PatientIdType patient, TransactionWithPeriodType transaction, String comment)` This operation allows a healthcare party to ask to another healthcare party to publish documents related to a patient.
    `void` | `revokeAccessRight(SelectRevokeAccessRightType accessRight)` This operation should be used to revoke access right on a transaction within a hub.
    `void` | `revokeHCPartyConsent(ConsentHCPartyType consent)` This operation should be used to revoke the consent of a healthcare party within a hub.
    `void` | `revokePatientConsent(ConsentType patientConsent)` This operation should be used to revoke the consent of a patient within a hub.
    `void` | `revokeTherapeuticLink(TherapeuticLinkType therapeuticLink)` This operation should be used to revoke a therapeutic link between a patient and a healthcare party within a hub.
    `void` | `revokeTransaction(PatientIdType patient, TransactionIdType transaction)` This operation should be used to 'unpublish' a given transaction.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### HubServiceImpl

          public HubServiceImpl(SessionValidator sessionValidator)
                         throws TechnicalConnectorException,
                                IntraHubBusinessConnectorException

      Instantiates a new Hub Service.
      Parameters:
        `sessionValidator` - the session validator
      Throws:
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

  - ### Method Detail

    - #### declareTransaction

          public List<IDKMEHR> declareTransaction(KmehrHeaderDeclareTransaction kmehrHeader)
                                           throws TechnicalConnectorException,
                                                  IntraHubBusinessConnectorException

      This operation should be used to declare a transaction within a hub.
      Specified by:
        `declareTransaction` in interface `HubService`
      Parameters:
        `kmehrHeader` - A Kmehr message formatted as XML String containing a Patient and a Transaction.
      Returns:
        A list of Transaction ID's.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException`

    - #### putTransaction

          public void putTransaction(Kmehrmessage kmehrHeader)
                              throws TechnicalConnectorException,
                                     IntraHubBusinessConnectorException

      This operation should be used to declare and to store a given transaction within a hub.
      Specified by:
        `putTransaction` in interface `HubService`
      Parameters:
        `kmehrHeader` - A Kmehr message formatted as XML String containing a Patient and a Transaction.
      Throws:
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException`

    - #### revokeTransaction

          public void revokeTransaction(PatientIdType patient,
                                        TransactionIdType transaction)
                                 throws TechnicalConnectorException,
                                        IntraHubBusinessConnectorException

      This operation should be used to 'unpublish' a given transaction.
      Specified by:
        `revokeTransaction` in interface `HubService`
      Parameters:
        `patient` - Patient for which to revoke the transaction.
        `transaction` - Transaction to revoke.
      Throws:
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException`

    - #### getTransactionList

          public KmehrHeaderGetTransactionList getTransactionList(PatientIdType patient,
                                                                  LocalSearchType searchType,
                                                                  TransactionWithPeriodType transaction)
                                                           throws TechnicalConnectorException,
                                                                  IntraHubBusinessConnectorException

      This operation should be used to get the list of available transactions that fulfill some given criteria.
      Specified by:
        `getTransactionList` in interface `HubService`
      Parameters:
        `patient` - Patient for which to retrieve the transaction list.
        `searchType` - The search type (local or national)
        `transaction` - Transaction types to search.
      Returns:
        A Kmehr message formatted as XML String containing a Patient and 1 or more Transactions.
      Throws:
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### getTransaction

          public Kmehrmessage getTransaction(PatientIdType patient,
                                             TransactionBaseType transaction)
                                      throws TechnicalConnectorException,
                                             IntraHubBusinessConnectorException

      This operation should be used to retrieve a transaction (given a transaction identifier) within a hub.
      Specified by:
        `getTransaction` in interface `HubService`
      Parameters:
        `patient` - Patient for which to retrieve the transaction.
        `transaction` - Transaction identification
      Returns:
        the transaction
      Throws:
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### requestPublication

          public void requestPublication(PatientIdType patient,
                                         TransactionWithPeriodType transaction,
                                         String comment)
                                  throws TechnicalConnectorException,
                                         IntraHubBusinessConnectorException

      This operation allows a healthcare party to ask to another healthcare party to publish documents related to a patient.
      Specified by:
        `requestPublication` in interface `HubService`
      Parameters:
        `patient` - The Patient for who the ation is.
        `transaction` - Transaction types and Health Care Parties
        `comment` - Comment
      Throws:
        `IntraHubBusinessConnectorException`
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception

    - #### getHCParty

          public HCPartyAdaptedType getHCParty(HCPartyIdType hcParty)
                                        throws TechnicalConnectorException,
                                               IntraHubBusinessConnectorException

      This operation should be used to retrieve the data associated with a healthcare party within a hub.
      Specified by:
        `getHCParty` in interface `HubService`
      Parameters:
        `hcParty` - This is the NIHII or SSIN number according to the type of healthcare party. Other local identifiers are allowed.
      Returns:
        Information about the healthcare party
      Throws:
        `IntraHubBusinessConnectorException`
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception

    - #### putHCParty

          public HCPartyAdaptedType putHCParty(HCPartyAdaptedType hcParty)
                                        throws TechnicalConnectorException,
                                               IntraHubBusinessConnectorException

      This operation should be used to create a healthcare party within a hub. It can also be used to update the information about this healthcare party.
      Specified by:
        `putHCParty` in interface `HubService`
      Parameters:
        `hcParty` - Information about the healthcare party
      Returns:
        Information about the healthcare party
      Throws:
        `IntraHubBusinessConnectorException`
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception

    - #### putHCPartyConsent

          public void putHCPartyConsent(ConsentHCPartyType consent)
                                 throws TechnicalConnectorException,
                                        IntraHubBusinessConnectorException

      This operation should be used to declare the consent of an healthcare party within a hub.
      Specified by:
        `putHCPartyConsent` in interface `HubService`
      Parameters:
        `consent` - A Consent containing a HCParty and the signature date.
      Throws:
        `IntraHubBusinessConnectorException`
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception

    - #### getHCPartyConsent

          public ConsentHCPartyType getHCPartyConsent(HCPartyIdType hcPartyId)
                                               throws TechnicalConnectorException,
                                                      IntraHubBusinessConnectorException

      This operation should be used to retrieve the consent of a healthcare party within a hub.
      Specified by:
        `getHCPartyConsent` in interface `HubService`
      Parameters:
        `hcPartyId` - This is the NIHII or INSS number according to the type of healthcare party. Other local identifiers are allowed.
      Returns:
        A Consent containing a HCParty and the signature date.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### revokeHCPartyConsent

          public void revokeHCPartyConsent(ConsentHCPartyType consent)
                                    throws TechnicalConnectorException,
                                           IntraHubBusinessConnectorException

      This operation should be used to revoke the consent of a healthcare party within a hub.
      Specified by:
        `revokeHCPartyConsent` in interface `HubService`
      Parameters:
        `consent` - A Consent containing a HCParty and the signature date.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException`

    - #### putPatient

          public PersonType putPatient(PersonType patient)
                                throws TechnicalConnectorException,
                                       IntraHubBusinessConnectorException

      This operation should be used to create a patient within a hub. It can also be used to update the information about a patient.
      Specified by:
        `putPatient` in interface `HubService`
      Parameters:
        `patient` - Information about a patient
      Returns:
        Information about a patient.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### getPatient

          public PersonType getPatient(PatientIdType patientId)
                                throws TechnicalConnectorException,
                                       IntraHubBusinessConnectorException

      This operation should be used to declare the consent of an healthcare party within a hub.
      Specified by:
        `getPatient` in interface `HubService`
      Parameters:
        `patientId` - Patient contains only the identifiers of the patient. Several identifiers of the same patient are allowed.
      Returns:
        Information about a patient.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### putPatientConsent

          public void putPatientConsent(ConsentType patientConsent)
                                 throws TechnicalConnectorException,
                                        IntraHubBusinessConnectorException

      This operation should be used to declare the consent of a patient within a hub.
      Specified by:
        `putPatientConsent` in interface `HubService`
      Parameters:
        `patientConsent` - Patient Consent data structure that contains signing date of the consent, scope of the consent, 'retrospective'/ 'prospective' attribute.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### getPatientConsent

          public ConsentType getPatientConsent(SelectGetPatientConsentType patientConsent)
                                        throws TechnicalConnectorException,
                                               IntraHubBusinessConnectorException

      This operation should be used to retrieve the consent of a patient within a hub.
      Specified by:
        `getPatientConsent` in interface `HubService`
      Parameters:
        `patientConsent` - Contains the Patient Identifiers and the scope of the consent
      Returns:
        Patient Consent data structure that contains signing date of the consent, scope of the consent, 'retrospective' 'prospective' attribute.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### revokePatientConsent

          public void revokePatientConsent(ConsentType patientConsent)
                                    throws TechnicalConnectorException,
                                           IntraHubBusinessConnectorException

      This operation should be used to revoke the consent of a patient within a hub.
      Specified by:
        `revokePatientConsent` in interface `HubService`
      Parameters:
        `patientConsent` - Patient Consent data structure that contains signing date of the consent, scope of the consent, 'retrospective' 'prospective' attribute.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### putTherapeuticLink

          public void putTherapeuticLink(TherapeuticLinkType therapeuticLink)
                                  throws ConnectorException,
                                         SessionManagementException

      This operation should be used to declare therapeutic link between a patient and a healthcare party within a hub.
      Specified by:
        `putTherapeuticLink` in interface `HubService`
      Parameters:
        `therapeuticLink` - A Therapeutic link containing Patient Identifier, HCP identifier, Link type, link start date , link end date (optional), comment (optional)).
      Throws:
        `SessionManagementException`
        `ConnectorException`

    - #### getTherapeuticLink

          public Collection<TherapeuticLinkType> getTherapeuticLink(SelectGetHCPartyPatientConsentType patientConsent)
                                                             throws ConnectorException

      This operation should be used to get therapeutic link between a patient and a healthcare party within a hub.
      Specified by:
        `getTherapeuticLink` in interface `HubService`
      Parameters:
        `patientConsent` - Contains the Patient Identifiers and the scope of the consent
      Returns:
        the therapeutic link
      Throws:
        `ConnectorException`
        `SessionManagementException` - the session management exception

    - #### revokeTherapeuticLink

          public void revokeTherapeuticLink(TherapeuticLinkType therapeuticLink)
                                     throws TechnicalConnectorException,
                                            IntraHubBusinessConnectorException

      This operation should be used to revoke a therapeutic link between a patient and a healthcare party within a hub.
      Specified by:
        `revokeTherapeuticLink` in interface `HubService`
      Parameters:
        `therapeuticLink` - the therapeutic link
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### putAccessRight

          public void putAccessRight(AccessRightType accessRight)
                              throws TechnicalConnectorException,
                                     IntraHubBusinessConnectorException

      This operation should be used to put an access right on a transaction within a hub.
      Specified by:
        `putAccessRight` in interface `HubService`
      Parameters:
        `accessRight` - the access right
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### getAccessRight

          public AccessRightListType getAccessRight(TransactionIdType transaction)
                                             throws TechnicalConnectorException,
                                                    IntraHubBusinessConnectorException

      This operation should be used to get access rights on a transaction within a hub.
      Specified by:
        `getAccessRight` in interface `HubService`
      Parameters:
        `transaction` - A transaction ID Type containing the Transaction Identifier.
      Returns:
        The List of access rights on a transaction. Can be empty.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### revokeAccessRight

          public void revokeAccessRight(SelectRevokeAccessRightType accessRight)
                                 throws TechnicalConnectorException,
                                        IntraHubBusinessConnectorException

      This operation should be used to revoke access right on a transaction within a hub.
      Specified by:
        `revokeAccessRight` in interface `HubService`
      Parameters:
        `accessRight` - Contains a transaction and a HC Party
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

    - #### getPatientAuditTrail

          public TransactionAccessListType getPatientAuditTrail(SelectGetPatientAuditTrailType patientAuditTrail)
                                                         throws TechnicalConnectorException,
                                                                IntraHubBusinessConnectorException

      This operation should be used to get the list of transaction accesses for a given patient.
      Specified by:
        `getPatientAuditTrail` in interface `HubService`
      Parameters:
        `patientAuditTrail` - Contains the search parameters for the audit trail.
      Returns:
        A list of Transaction Access elements.
      Throws:
        `SessionManagementException`
        `TechnicalConnectorException` - the technical connector exception
        `IntraHubBusinessConnectorException` - the business connector exception

Connector Packaging generic 4.2.0 API
Copyright © {inceptionYear}-2022 eHealth. All Rights Reserved.