public async Task <PharmanetCollegeRecord> GetCollegeRecordAsync(Certification certification) { certification.ThrowIfNull(nameof(certification)); var requestParams = new CollegeRecordRequestParams(certification); HttpResponseMessage response = null; try { response = await _client.PostAsync(PrimeEnvironment.PharmanetApi.Url, requestParams.ToRequestContent()); } catch (Exception ex) { await LogError(requestParams, response, ex); throw new PharmanetCollegeApiException("Error occurred when calling Pharmanet API. Try again later.", ex); } if (!response.IsSuccessStatusCode) { await LogError(requestParams, response); throw new PharmanetCollegeApiException($"Error code {response.StatusCode} was returned when calling Pharmanet API."); } var content = await response.Content.ReadAsAsync <List <PharmanetCollegeRecord> >(); var practicionerRecord = content.SingleOrDefault(); // If we get a record back, it should have the same transaction UUID as our request. if (practicionerRecord != null && practicionerRecord.applicationUUID != requestParams.applicationUUID) { throw new PharmanetCollegeApiException($"Expected matching applicationUUIDs between request data and response data. Request was \"{requestParams.applicationUUID}\", response was \"{practicionerRecord.applicationUUID}\"."); } return(practicionerRecord); }