11import { Logger } from "@aws-lambda-powertools/logger"
22
33import axios from "axios"
4-
54import { setupAxios } from "./axios"
5+ import { LOG_MESSAGES } from "@psu-common/utilities"
6+
67import {
78 NotifyDataItemMessage ,
89 CreateMessageBatchRequest ,
@@ -96,6 +97,23 @@ async function makeFakeNotifyRequest(
9697 const messageStatus = "silent running"
9798 const messageBatchReference = crypto . randomUUID ( )
9899
100+ logNotificationRequest ( logger , messageBatchReference , messages , data , messageStatus )
101+
102+ // Map each input item to a "successful" NotifyDataItemMessage
103+ return data . map ( item => {
104+ return {
105+ ...item ,
106+ messageBatchReference,
107+ messageStatus,
108+ notifyMessageId : crypto . randomUUID ( ) // Create a dummy UUID
109+ }
110+ } )
111+ }
112+
113+ function logNotificationRequest ( logger : Logger ,
114+ messageBatchReference : string , messages : Array < MessageBatchItem > ,
115+ data : Array < NotifyDataItemMessage > , messageStatus : string ) {
116+ // TODO: preserve legacy logging until reports updated
99117 logger . info ( "Requested notifications OK!" , {
100118 messageBatchReference,
101119 messageReferences : messages . map ( e => ( {
@@ -105,15 +123,21 @@ async function makeFakeNotifyRequest(
105123 } ) ) ,
106124 messageStatus : messageStatus
107125 } )
108-
109- // Map each input item to a "successful" NotifyDataItemMessage
110- return data . map ( item => {
111- return {
112- ...item ,
126+ // Log each message individually for less memory intensive reporting
127+ const code = Object . keys ( LOG_MESSAGES )
128+ . find ( key => LOG_MESSAGES [ key as keyof typeof LOG_MESSAGES ] === LOG_MESSAGES . PSU0002 )
129+ messages . forEach ( ( message , index ) => {
130+ const correspondingData = data . find ( item => item . messageReference === message . messageReference )
131+ logger . info ( LOG_MESSAGES . PSU0002 , {
132+ reportCode : code ,
113133 messageBatchReference,
114- messageStatus,
115- notifyMessageId : crypto . randomUUID ( ) // Create a dummy UUID
116- }
134+ messageIndex : index ,
135+ nhsNumber : message . recipient . nhsNumber ,
136+ messageReference : message . messageReference ,
137+ psuRequestId : correspondingData ?. PSUDataItem . RequestID ,
138+ notifyMessageId : messageStatus === "silent running" ? crypto . randomUUID ( ) : correspondingData ?. notifyMessageId ,
139+ messageStatus : messageStatus
140+ } )
117141 } )
118142}
119143
@@ -186,16 +210,7 @@ export async function makeRealNotifyRequest(
186210 // From here is just logging stuff for reporting, and mapping the response back to the input data
187211
188212 if ( resp . status === 201 ) {
189- logger . info ( "Requested notifications OK!" , {
190- messageBatchReference,
191- messageReferences : messages . map ( e => ( {
192- nhsNumber : e . recipient . nhsNumber ,
193- messageReference : e . messageReference ,
194- psuRequestId : data . find ( ( el ) => el . messageReference === e . messageReference ) ?. PSUDataItem . RequestID ,
195- pharmacyODSCode : e . originator . odsCode
196- } ) ) ,
197- messageStatus : "requested"
198- } )
213+ logNotificationRequest ( logger , messageBatchReference , messages , data , "requested" )
199214
200215 // Map each input item to a NotifyDataItemMessage, marking success and attaching the notify ID.
201216 // Only return items that belong to *this* batch (so we handle recursive splits correctly).
0 commit comments