Connection details page - camel and aggregation strategies

3 cases:

  1. Doctor exists in GMC and TIS (and gmc details match up) - this works fine

  2. Doctor exists in GMC only - an error is thrown when trying to fetch details for the non existent doctor in TIS

  3. Doctor exists in TIS only - an error is thrown when trying to fetch notes for the non-existent doctor in reval (and would also be thrown when fetching connection history)

 

Current Operation

  • Two connection URLS are called on page load

    1. /api/trainee/{gmcId} - This appears to populate the sidebar

    2. /api/connection/{gmcId}

 

 

Proposal 1

 

 

Proposal 2

Proposal 3

 

from("direct:trainee") .multicast(AGGREGATOR) .parallelProcessing() .to("direct:trainee-details") .to("direct:traineenotes-get") .to("direct:gmc-doctors-by-ids"); from("direct:trainee-details") .setHeader(OIDC_ACCESS_TOKEN_HEADER).method(keycloakBean, GET_TOKEN_METHOD) .setHeader("gmcId").method(gmcIdProcessorBean, "getGmcIdOfRecommendationTrainee") .setHeader(AggregationKey.HEADER).constant("programme") .toD(serviceUrl + API_TRAINEE); from("direct:traineenotes-get") .setHeader(AggregationKey.HEADER).constant("notes") .toD(coreServiceUrl + API_TRAINEENOTES); from("direct:gmc-doctors-by-ids") .setHeader(AggregationKey.HEADER).constant("doctor") .setHeader("gmcIds").method(gmcIdProcessorBean, "getHiddenGmcIds") .toD(recommendationServiceUrl + GET_DOCTORS_BY_GMC_IDS);