Enum Class CdrPointcut

java.lang.Object
java.lang.Enum<CdrPointcut>
ca.cdr.api.fhir.interceptor.CdrPointcut
All Implemented Interfaces:
IPointcut, Serializable, Comparable<CdrPointcut>, Constable

public enum CdrPointcut extends Enum<CdrPointcut> implements IPointcut
Value for CdrHook.value()

Hook pointcuts are divided into several broad categories:

  • FHIRGW_xxx: Hooks on the FHIR Gateway module

  • Enum Constant Details

    • CDA_PRE_IMPORT

      public static final CdrPointcut CDA_PRE_IMPORT
      CDA pre-import Hook:

      This pointcut provides access to documents before they are imported via the $import-cda endpoint.

      Hooks may accept the following parameters:

      • String - the document to be imported, in xml format.
      • CdaToFhirConversionResultJson - object used to contain all relevant data involved in the conversion of a CDA document to an IBaseBundle.

      Hooks should return the document after performing any modifications.

    • CDA_POST_IMPORT

      public static final CdrPointcut CDA_POST_IMPORT
      CDA post-import Hook:

      This pointcut provides access to documents after they are imported via the $import-cda endpoint.

      Hooks may accept the following parameters:

      • IBaseOperationOutcome - an operation outcome which can be used to track issues with the import.
      • IBaseBundle - the transaction bundle which can be modified by this Hook.
      • String - the document that was imported, in xml format.
      • CdaToFhirConversionResultJson - object used to contain all relevant data involved in the conversion of a CDA document to an IBaseBundle.

      To modify the document before the IBaseBundle is generated, use the pre-import Hook instead.

    • CDA_POST_EXPORT

      public static final CdrPointcut CDA_POST_EXPORT
      CDA post-export Hook:

      This pointcut provides access to documents after they are exported, and immediately before they are returned to the API client.

      Hooks may accept the following parameters:

      • IBaseBundle - the bundle associated with this export.
      • String - the document being exported, in xml format.

      Hooks should return the document after performing any modifications. The resulting document is what will be returned to the API client.

    • CHANNEL_IMPORT_MESSAGE_PRE_PROCESSED

      Channel Import Hook: The pointcut provides access to messages received on a broker queue. It allows an interceptor to inspect, modify or mark for discard incoming messages before ingestion by the Channel Import module.

      Hooks may accept the following parameters:

      • ResourceOperationJsonMessage - Hook methods for this pointcut should take a single parameter of ResourceOperationJsonMessage as the input. This object contains the pre-processed channel import message.

      Hook methods must return a Boolean which indicates whether to process the message.
    • FHIRGW_DELETE_POST_SELECT_ROUTE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has just determined which routes should be invoked for a given FHIR delete operation. This hook is called once per client request, regardless of how many individual targets are eventually invoked against.

      Hooks may accept the following parameters:

      • ServletRequestDetails - A bean containing details about the request that is about to be processed.
      • DeleteRequest - The delete that is about to be invoked. The hook method can modify this request, and modifications will affect all the operations that are performed against the target servers
      • MatchedRoutesJson - A collection of IBaseRouteJson which have been selected for this request. Routes can be added or removed from this collection to affect which routes are invoked. They can be cast to their specific subclasses if necessary.
      • AvailableRoutesJson - A collection of IBaseRouteJson which match the operation type of the request, e.g. read, create, delete, search, operation.

      Hook methods must return void.
    • FHIRGW_UPDATE_POST_SELECT_ROUTE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has just determined which routes should be invoked for a given FHIR update operation. This hook is called once per client request, regardless of how many individual targets are eventually invoked against.

      Hooks may accept the following parameters:

      • ServletRequestDetails - A bean containing details about the request that is about to be processed.
      • UpdateRequest - The update that is about to be invoked. The hook method can modify this request, and modifications will affect all the operations that are performed against the target servers
      • MatchedRoutesJson - A collection of IBaseRouteJson which have been selected for this request. Routes can be added or removed from this collection to affect which routes are invoked. They can be cast to their specific subclasses if necessary.
      • AvailableRoutesJson - A collection of IBaseRouteJson which match the operation type of the request, e.g. read, create, delete, search, operation.

      Hook methods must return void.
    • FHIRGW_OPERATION_POST_SELECT_ROUTE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has just determined which routes should be invoked for a given FHIR operation operation. This hook is called once per client request, regardless of how many individual targets are eventually invoked against.

      Hooks may accept the following parameters:

      • ServletRequestDetails - A bean containing details about the request that is about to be processed.
      • OperationRequest - The operation that is about to be invoked. The hook method can modify this request, and modifications will affect all the operations that are performed against the target servers
      • MatchedRoutesJson - A collection of IBaseRouteJson which have been selected for this request. Routes can be added or removed from this collection to affect which routes are invoked. They can be cast to their specific subclasses if necessary.
      • AvailableRoutesJson - A collection of IBaseRouteJson which match the operation type of the request, e.g. read, create, delete, search, operation.

      Hook methods must return void.
    • FHIRGW_SEARCH_POST_SELECT_ROUTE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has just determined which routes should be invoked for a given FHIR search operation. This hook is called once per client request, regardless of how many individual targets are eventually invoked against.

      Hooks may accept the following parameters:

      • ServletRequestDetails - A bean containing details about the request that is about to be processed.
      • SearchRequest - The search that is about to be invoked. The hook method can modify this request, and modifications will affect all the operations that are performed against the target servers
      • MatchedRoutesJson - A collection of IBaseRouteJson which have been selected for this request. Routes can be added or removed from this collection to affect which routes are invoked. They can be cast to their specific subclasses if necessary.
      • AvailableRoutesJson - A collection of IBaseRouteJson which match the operation type of the request, e.g. read, create, delete, search, operation.

      Hook methods must return void.
    • FHIRGW_CREATE_POST_SELECT_ROUTE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has just determined which routes should be invoked for a given FHIR create operation. This hook is called once per client request, regardless of how many individual targets are eventually invoked against.

      Hooks may accept the following parameters:

      • ServletRequestDetails - A bean containing details about the request that is about to be processed.
      • CreateRequest - The create that is about to be invoked. The hook method can modify this request, and modifications will affect all the operations that are performed against the target servers
      • MatchedRoutesJson - A collection of IBaseRouteJson which have been selected for this request. Routes can be added or removed from this collection to affect which routes are invoked. They can be cast to their specific subclasses if necessary.
      • AvailableRoutesJson - A collection of IBaseRouteJson which match the operation type of the request, e.g. read, create, delete, search, operation.

      Hook methods must return void.
    • FHIRGW_READ_POST_SELECT_ROUTE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has just determined which routes should be invoked for a given FHIR read operation. This hook is called once per client request, regardless of how many individual targets are eventually invoked against.

      Hooks may accept the following parameters:

      • ServletRequestDetails - A bean containing details about the request that is about to be processed.
      • ReadRequest - The read that is about to be invoked. The hook method can modify this request, and modifications will affect all the operations that are performed against the target servers
      • MatchedRoutesJson - A collection of IBaseRouteJson which have been selected for this request. Routes can be added or removed from this collection to affect which routes are invoked. They can be cast to their specific subclasses if necessary.
      • AvailableRoutesJson - A collection of IBaseRouteJson which match the operation type of the request, e.g. read, create, delete, search, operation.

      Hook methods must return void.
    • FHIRGW_TRANSACTION_POST_SELECT_ROUTE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has just determined which routes should be invoked for a given FHIR transaction operation. This hook is called once per client request, regardless of how many individual targets are eventually invoked against.

      Hooks may accept the following parameters:

      • ServletRequestDetails - A bean containing details about the request that is about to be processed.
      • TransactionRequest - The transaction that is about to be invoked. The hook method can modify this request, and modifications will affect all the operations that are performed against the target servers.
      • MatchedRoutesJson - A collection of IBaseRouteJson which have been selected for this request. Routes can be added or removed from this collection to affect which routes are invoked. They can be cast to their specific subclasses if necessary.
      • AvailableRoutesJson - A collection of IBaseRouteJson which match the operation type of the request, e.g. read, create, delete, search, operation.

      Hook methods must return void.
    • FHIRGW_READ_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR read or vread operation against an individual target server. This hook is called once for each target that will be called, so if a single client read is being multicasted against two target servers, this hook will be invoked twice.

      Hooks may accept the following parameters:

      • ReadRequest - The read that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • FHIRGW_OPERATION_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR operation operation against an individual target server.

      Hooks may accept the following parameters:

      • OperationRequest - The read that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • FHIRGW_OPERATION_TARGET_POSTINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has finished invoking a FHIR extended operation operation against an individual target server. This hook is called once for each target that has been called, so if a single client operation is being multicasted against two target servers, this hook will be invoked twice.

      Hooks may accept the following parameters:

      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ISearchResultsAccumulator - The accumulator being used to collect the search results so far. This may be empty in the case of operations which do not return search results. Some operations, such as $everything, will return search results, but others such as $ Hook methods may use this object to inspect results received by other endpoints when searching in serial mode, and can modify the results as needed. Note that the FHIRGW_SEARCH_TARGET_POSTINVOKE pointcut is invoked once for each gateway target, before the search results are added to the accumulator. Results from the current target are found in the SearchResponse object, and will be moved from that object into the accumulator after this pointcut is complete.
      • OperationResponse - This object contains the Operation Response from the individual Gateway Target that was called. Interceptors may modify this object in any way they want. This may be null if the operation returns a Bundle (check the SearchResultsAccumulator instead).

      Hook methods must return void.
    • FHIRGW_SEARCH_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR search operation against an individual target server. This hook is called once for each target that will be called, so if a single client search is being multicasted against two target servers, this hook will be invoked twice.

      This hook can be contrasted with FHIRGW_SEARCH_PAGE_TARGET_PREINVOKE:

      Hooks may accept the following parameters:

      • SearchRequest - The search that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ISearchResultsAccumulator - The accumulator being used to collect the search results so far. Hook methods may use this object to inspect results recieved by other endpoints when searching in serial mode, and can modify the results as needed.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • FHIRGW_SEARCH_PAGE_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR search paging operation against an individual target server. This hook is called once for each target that will be called, so if a single client search is being multicasted against two target servers, this hook will be invoked twice.

      This hook can be contrasted with FHIRGW_SEARCH_TARGET_PREINVOKE:

      Hooks may accept the following parameters:

      • SearchPageRequest - The search that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ISearchResultsAccumulator - The accumulator being used to collect the search results so far. Hook methods may use this object to inspect results received by other endpoints when searching in serial mode, and can modify the results as needed.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • FHIRGW_SEARCH_TARGET_POSTINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway has finished invoking a FHIR search operation against an individual target server. This hook is called once for each target that has been called, so if a single client search is being multicasted against two target servers, this hook will be invoked twice.

      Hooks may accept the following parameters:

      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ISearchResultsAccumulator - The accumulator being used to collect the search results so far. Hook methods may use this object to inspect results received by other endpoints when searching in serial mode, and can modify the results as needed. Note that the FHIRGW_SEARCH_TARGET_POSTINVOKE pointcut is invoked once for each gateway target, before the search results are added to the accumulator. Results from the current target are found in the SearchResponse object, and will be moved from that object into the accumulator after this pointcut is complete.
      • SearchResponse - This object contains the search results from the individual Gateway Target that was called. Interceptors may modify this object in any way they want.

      Hook methods must return void.
    • FHIRGW_CREATE_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR create operation against an individual target server. This hook is called once for each target that will be called, so if a single client create is being multicasted against two target servers, this hook will be invoked twice.

      For creates where a client id is specified, the update hook will be fired instead.

      Hooks may accept the following parameters:

      • CreateRequest - The create that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • FHIRGW_TRANSACTION_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR transaction operation against an individual target server. This hook is called once for each target that will be called, so if a single client create is being multicasted against two target servers, this hook will be invoked twice.

      For creates where a client id is specified, the update hook will be fired instead.

      Hooks may accept the following parameters:

      • TransactionRequest - The transaction that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • FHIRGW_UPDATE_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR update operation against an individual target server. This hook is called once for each target that will be called, so if a single client update is being multicasted against two target servers, this hook will be invoked twice.

      This hook will also be called for create operations when a client id is provided.

      Hooks may accept the following parameters:

      • UpdateRequest - The update that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • FHIRGW_DELETE_TARGET_PREINVOKE

      FHIR Gateway Hook: This hook is called when the FHIR Gateway is about to invoke a FHIR delete operation against an individual target server. This hook is called once for each target that will be called, so if a single client delete is being multicasted against two target servers, this hook will be invoked twice.

      Hooks may accept the following parameters:

      • DeleteRequest - The delete that is about to be invoked. The hook method can modify this request, and modifications will affect the operation that is actually performed against the target server.
      • GatewayTargetJson - The gateway target server definition. Hook methods should not modify this object, and any changes will be ignored.
      • ServletRequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods must return void.
    • HL7V2IN_PRE_HL7V2_TO_FHIR_MAPPING_PROCESSING

      HL7v2 Hook: This hook is the first one called when a HL7v2 endpoint processes incoming messages. It is invoked before the HL7v2 to FHIR mapping takes place for each incoming request. It may be used to provide alternate handling for some requests, screen requests before they are handled, alter the incoming message,etc.

      Note that any exceptions thrown by this method will not be trapped by HAPI (they will be passed up to the server)

      Hooks may accept the following parameters:

      Hook methods may return true or void if processing should continue normally. This is generally the right thing to do. If your interceptor is processing the response rather than letting HAPI do it, you must return false. In this case, no further processing will occur.
    • HL7V2IN_POST_HL7V2_TO_FHIR_MAPPING_PROCESSING

      HL7v2 Hook: This hook is invoked after Smile has transformed an HL7V2 message into a collection of Transaction Bundle operations.

      Note that any exceptions thrown by this method will not be trapped by HAPI (they will be passed up to the server)

      Hooks may accept the following parameters:

    • STORAGE_MEGASCALE_PROVIDE_DB_INFO

      Persistence (RDBMS) Hook: This pointcut is invoked my the Persistence (RDBMS) module when running in MegaScale mode in order to request the database credentials associated with a given partition ID.

      Hooks may accept the following parameters:

      Hook methods for this pointcut must return a MegaScaleCredentialResponseJson object which contains the JDBC URL and credentials associated with the partition ID. These credentials will be cached, so this Pointcut will not be invoked repeatedly for the same partition ID (therefore it is ok if hook methods have some latency).
      Since:
      2023.02.R01
    • SERVER_CONFIGURATION_KEYSTORE

      Server Endpoint Hook: The pointcut provides the capability to supply a provisioned KeyStore file for TLS base encryption. Note that pointcut SERVER_CONFIGURATION_KEYSTORE is invoked only if the endpoint listener is said to required TLS encryption for incoming connections through environment property tls.enabled

      Hooks may accept the following parameters:

      • String - The keystore password

      Interceptors for this pointcut must be registered with the specific endpoint module where the keystore will be used.

      Hook methods must return KeyStore.
    • SMART_FEDERATED_OIDC_PRE_PROVIDER_SELECTION

      SMART/OIDC Hook: The pointcut is called when a SMART Outbound Security module is configured in federated mode, and there are multiple federated providers configured, prior to the user being asked to select a provider. This pointcut can be used to programmatically select a provider instead of relying on the user to make a selection.

      Hooks may accept the following parameters:

      • ca.cdr.api.fhir.interceptor.OidcAuthRequestDetails - This object contains details about the auth request and can be used to extract request parameter values.

      Hook methods may return a String, which should be the the Registration ID of an OpenID Connect Server definition (i.e. the value of the "Registration ID" field in the Smile CDR OIDC Server definition page). If the returned String is not null and does not match any server definition, the flow will be halted and the user will see an error. If the returned string is null, the user will be redirected to a server selection screen.
    • SMART_OIDC_CLIENT_SAVED

      public static final CdrPointcut SMART_OIDC_CLIENT_SAVED
      SMART/OIDC Hook: The pointcut is called when an OIDC client is being saved. This could mean that a new client is being created, or an existing client is being updated or disabled.

      This hook is called after the database transaction used to save the object has been committed. This means that the record already appears in the database. Any exceptions thrown by hooks for this pointcut may cause an error to appear for the user requesting the operation, but will not affect what has been saved in the database, so no exceptions should be thrown within this pointcut.

      Hooks may accept the following parameters:

      Hook methods must return void.
    • SMART_OIDC_CLIENT_SAVING

      SMART/OIDC Hook: The pointcut is called when an OIDC client is being saved. This could mean that a new client is being created, or an existing client is being updated or disabled.

      This hook is called within the open database transaction used to save the object. This means that at the time this pointcut is invoked, the record does not yet appear in the database. It also means that any exception thrown by this pointcut will block the operation.

      Hooks may accept the following parameters:

      Hook methods must return void.
    • AG_APPLICATION_STATUS_UPDATING

      appSphere Hook: The Pointcut is called when an appSphere admin updates the status of an application or service

      This hook is called within the open database transaction used to save the object. This means that at the time this pointcut is invoked, the record does not yet appear in the database. It also means that any exception thrown by this pointcut will block the operation.

      Hooks may accept the following parameters:

      • AGConsoleJson - The application or service being updated. Pointcuts should not modify this object.

      Hook methods must return void.
    • AG_APPLICATION_STATUS_UPDATED

      appSphere Hook: The pointcut is called after an appSphere admin updates the status of an application or service

      This hook is called after the database transaction used to save the object has been committed. This means that the record already appears in the database. Any exceptions thrown by hooks for this pointcut may cause an error to appear for the user requesting the operation, but will not affect what has been saved in the database, so no exceptions should be thrown within this pointcut.

      Hooks may accept the following parameters:

      • AGConsoleJson - The application or service that was updated. Pointcuts should not modify this object.

      Hook methods must return void.
    • AG_APPLICATION_REGISTER

      public static final CdrPointcut AG_APPLICATION_REGISTER
      appSphere Hook: The Pointcut is called when an appSphere developer registers an application, prior to commiting the registration to the database

      This hook is called within the open database transaction used to save the object. This means that at the time this pointcut is invoked, the record does not yet appear in the database. It also means that any exception thrown by this pointcut will block the operation.

      Hooks may accept the following parameters:

      • AGApplicationJson - The application or service being registered. Pointcuts can modify this object.

      Hook methods must return void.
    • AG_APPLICATION_RE_REGISTER

      appSphere Hook: The Pointcut is called when an appSphere developer re-registers an application, prior to commiting the registration to the database

      This hook is called within the open database transaction used to save the object. This means that at the time this pointcut is invoked, the record does not yet appear in the database. It also means that any exception thrown by this pointcut will block the operation.

      Hooks may accept the following parameters:

      • AGApplicationJson - The application or service being re-registered. Pointcuts can modify this object.

      Hook methods must return void.
    • MEMBER_MATCH

      public static final CdrPointcut MEMBER_MATCH
      System-to-System Data Exchange Hook: This pointcut is called when doing resource matching in the $member-match operation. It provides the ability for clients to execute custom matching JavaScript for the patient matching in $member-match.

      Hooks may accept the following parameters:

      • IMemberMatchRequest - the wrapper request object that contains memberPatient and CoverageToMatch Resources.
      • RequestDetails - A bean containing details about the request that is about to be processed.

      Hook methods may return Patient if a matching patient is found, or void otherwise. Note that if void is returned, then the system will perform the default matching algorithm to try to find any matching patient.
  • Method Details