@@ -17,19 +17,19 @@ namespace LantanaGroup.Link.Census.Listeners;
1717
1818public class PatientListsAcquiredListener : BackgroundService
1919{
20- private readonly IKafkaConsumerFactory < string , List < PatientListItem > > _kafkaConsumerFactory ;
20+ private readonly IKafkaConsumerFactory < string , PatientListMessage > _kafkaConsumerFactory ;
2121 private readonly ILogger < PatientListsAcquiredListener > _logger ;
22- private readonly IDeadLetterExceptionHandler < string , List < PatientListItem > > _nonTransientExceptionHandler ;
23- private readonly ITransientExceptionHandler < string , List < PatientListItem > > _transientExceptionHandler ;
22+ private readonly IDeadLetterExceptionHandler < string , PatientListMessage > _nonTransientExceptionHandler ;
23+ private readonly ITransientExceptionHandler < string , PatientListMessage > _transientExceptionHandler ;
2424 private readonly IServiceScopeFactory _scopeFactory ;
2525 private readonly IEventProducerService < PatientEvent > _eventProducerService ;
2626
2727 public PatientListsAcquiredListener (
2828 ILogger < PatientListsAcquiredListener > logger ,
29- IKafkaConsumerFactory < string , List < PatientListItem > > kafkaConsumerFactory ,
29+ IKafkaConsumerFactory < string , PatientListMessage > kafkaConsumerFactory ,
3030 IProducer < string , object > kafkaProducer ,
31- IDeadLetterExceptionHandler < string , List < PatientListItem > > nonTransientExceptionHandler ,
32- ITransientExceptionHandler < string , List < PatientListItem > > transientExceptionHandler ,
31+ IDeadLetterExceptionHandler < string , PatientListMessage > nonTransientExceptionHandler ,
32+ ITransientExceptionHandler < string , PatientListMessage > transientExceptionHandler ,
3333 IServiceScopeFactory scopeFactory ,
3434 IEventProducerService < PatientEvent > eventProducerService
3535 )
@@ -70,7 +70,7 @@ private async Task StartConsumerLoop(CancellationToken cancellationToken)
7070
7171 IEnumerable < IBaseResponse > ? responseMessages = null ;
7272 kafkaConsumer . Subscribe ( KafkaTopic . PatientListsAcquired . ToString ( ) ) ;
73- ConsumeResult < string , List < PatientListItem > > ? rawmessage = null ;
73+ ConsumeResult < string , PatientListMessage > ? rawmessage = null ;
7474
7575 using var scope = _scopeFactory . CreateScope ( ) ;
7676
@@ -80,7 +80,7 @@ private async Task StartConsumerLoop(CancellationToken cancellationToken)
8080 {
8181 try
8282 {
83- await kafkaConsumer . ConsumeWithInstrumentation ( ( Func < ConsumeResult < string , List < PatientListItem > > ? , CancellationToken , Task > ) ( async ( result , CancellationToken ) =>
83+ await kafkaConsumer . ConsumeWithInstrumentation ( ( Func < ConsumeResult < string , PatientListMessage > ? , CancellationToken , Task > ) ( async ( result , CancellationToken ) =>
8484 {
8585 rawmessage = result ;
8686
@@ -111,7 +111,18 @@ await kafkaConsumer.ConsumeWithInstrumentation((Func<ConsumeResult<string, List<
111111 try
112112 {
113113 var patientListService = scope . ServiceProvider . GetRequiredService < IPatientListService > ( ) ;
114- responseMessages = await patientListService . ProcessLists ( facilityId , rawmessage . Message . Value , cancellationToken ) ;
114+ responseMessages = await patientListService . ProcessLists ( facilityId , rawmessage . Message . Value . PatientLists , cancellationToken ) ;
115+
116+ // Inject reportTrackingId into each PatientEvent
117+ responseMessages = responseMessages . Select ( resp =>
118+ {
119+ if ( resp is PatientEventResponse per && per . PatientEvent != null )
120+ {
121+ per . PatientEvent . ReportTrackingId = rawmessage . Message . Value . ReportTrackingId ;
122+ }
123+ return resp ;
124+ } ) . ToList ( ) ;
125+
115126
116127 if ( responseMessages == null || ! responseMessages . Any ( ) )
117128 {
0 commit comments