Skip to content

Commit 72d41b1

Browse files
Add request time to info logs
This will allow us to collect more accurate data about how long the API requests are taking; currently this is difficult to infer through other logs
1 parent c66b520 commit 72d41b1

File tree

1 file changed

+61
-30
lines changed

1 file changed

+61
-30
lines changed

app/lib/nhs/immunisations_api.rb

Lines changed: 61 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,18 @@ def create_immunisation(vaccination_record)
3939
" #{vaccination_record.id}"
4040
)
4141

42-
response =
43-
NHS::API.connection.post(
44-
"/immunisation-fhir-api/FHIR/R4/Immunization",
45-
vaccination_record.fhir_record.to_json,
46-
"Content-Type" => "application/fhir+json"
47-
)
42+
response, duration =
43+
execute_and_time do
44+
NHS::API.connection.post(
45+
"/immunisation-fhir-api/FHIR/R4/Immunization",
46+
vaccination_record.fhir_record.to_json,
47+
"Content-Type" => "application/fhir+json"
48+
)
49+
end
50+
51+
Rails.logger.info(
52+
"Create response returned with status #{response.status} in #{duration}s"
53+
)
4854

4955
if response.status == 201
5056
vaccination_record.update!(
@@ -94,15 +100,21 @@ def update_immunisation(vaccination_record)
94100
)
95101

96102
nhs_id = vaccination_record.nhs_immunisations_api_id
97-
response =
98-
NHS::API.connection.put(
99-
"/immunisation-fhir-api/FHIR/R4/Immunization/#{nhs_id}",
100-
vaccination_record.fhir_record.to_json,
101-
{
102-
"Content-Type" => "application/fhir+json",
103-
"E-Tag" => vaccination_record.nhs_immunisations_api_etag
104-
}
105-
)
103+
response, duration =
104+
execute_and_time do
105+
NHS::API.connection.put(
106+
"/immunisation-fhir-api/FHIR/R4/Immunization/#{nhs_id}",
107+
vaccination_record.fhir_record.to_json,
108+
{
109+
"Content-Type" => "application/fhir+json",
110+
"E-Tag" => vaccination_record.nhs_immunisations_api_etag
111+
}
112+
)
113+
end
114+
115+
Rails.logger.info(
116+
"Update response returned with status #{response.status} in #{duration}s"
117+
)
106118

107119
if response.status == 200
108120
vaccination_record.update!(
@@ -153,15 +165,21 @@ def delete_immunisation(vaccination_record)
153165
)
154166

155167
nhs_id = vaccination_record.nhs_immunisations_api_id
156-
response =
157-
NHS::API.connection.delete(
158-
"/immunisation-fhir-api/FHIR/R4/Immunization/#{nhs_id}",
159-
nil,
160-
{
161-
"Accept" => "application/fhir+json",
162-
"E-Tag" => vaccination_record.nhs_immunisations_api_etag
163-
}
164-
)
168+
response, duration =
169+
execute_and_time do
170+
NHS::API.connection.delete(
171+
"/immunisation-fhir-api/FHIR/R4/Immunization/#{nhs_id}",
172+
nil,
173+
{
174+
"Accept" => "application/fhir+json",
175+
"E-Tag" => vaccination_record.nhs_immunisations_api_etag
176+
}
177+
)
178+
end
179+
180+
Rails.logger.info(
181+
"Delete response returned with status #{response.status} in #{duration}s"
182+
)
165183

166184
if response.status == 204
167185
# It's not entirely clear if the e-tag should be changed here, but
@@ -226,12 +244,18 @@ def search_immunisations(patient, programmes:, date_from: nil, date_to: nil)
226244
"-date.to" => date_to&.strftime("%F")
227245
}.compact
228246

229-
response =
230-
NHS::API.connection.get(
231-
"/immunisation-fhir-api/FHIR/R4/Immunization",
232-
params,
233-
"Content-Type" => "application/fhir+json"
234-
)
247+
response, duration =
248+
execute_and_time do
249+
NHS::API.connection.get(
250+
"/immunisation-fhir-api/FHIR/R4/Immunization",
251+
params,
252+
"Content-Type" => "application/fhir+json"
253+
)
254+
end
255+
256+
Rails.logger.info(
257+
"Search response returned with status #{response.status} in #{duration}s"
258+
)
235259

236260
if response.status == 200
237261
# # To create fixtures for testing
@@ -361,5 +385,12 @@ def check_operation_outcome_entry(bundle)
361385
"OperationOutcome entry found in bundle: #{operation_outcome_entry.resource}"
362386
end
363387
end
388+
389+
def execute_and_time(&block)
390+
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
391+
result = block.call
392+
duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
393+
[result, duration]
394+
end
364395
end
365396
end

0 commit comments

Comments
 (0)