public static MedicalEditsRequestModel GetMedicalEditsClientRequest() { var medicalEditsRequestModel = new MedicalEditsRequestModel { username = "", password = "", services = "1", isStrictCheck = "0", claims = new List <Claim> { new Claim { claimID = "DHA-F-0045687-TPA333-201910152304421-143", claimSubmissionActivityList = new List <ClaimSubmissionActivity> { new ClaimSubmissionActivity { activityCode = "0043-197703-0511", activityId = "1", activitySource = "CURRENT", activityStart = "15/10/2019", activityType = "5", duration = "10", quantity = "5" } }, claimSubmissionDiagnosisList = new List <ClaimSubmissionDiagnosis> { new ClaimSubmissionDiagnosis { diagnosisCode = "R25.0", diagnosisSource = "CURRENT", diagnosisType = "Principal" } }, claimSubmissionPerson = new ClaimSubmissionPerson { dateOfBirth = "22/01/2018", gender = "M", height = 80, nationalId = "2291987021", patientId = "39", weight = 20 }, payerId = "INS004", providerId = "DHA-F-0045687" } } }; return(medicalEditsRequestModel); }
private MedicalEditsRequestModel ToMedicalEditsRequestModel(MedicalEditsViewModel request) { try { //set medical Service setting data var medicalEditsRequest = new MedicalEditsRequestModel { password = medicalEditsSetting.Password, username = medicalEditsSetting.UserName, services = string.Join(',', medicalEditsSetting.Services), isStrictCheck = medicalEditsSetting.IsStrictCheck }; // prepare claim data var claim = new Claim { claimID = request.ClaimId, providerId = request.ProviderId, payerId = request.PayerId }; // set claim activities claim.claimSubmissionActivityList = request.ActivityList?.Select(activity => new ClaimSubmissionActivity { activityCode = activity.ActivityCode, activityId = activity.Id.ToString(), activitySource = activity.ActivitySource, activityStart = activity.StartDate.ToLocalTime().ToString("dd/MM/yyyy"), activityType = activity.ActivityType, clinician = activity.Clinician, orderingClinician = activity.OrderingClinician, duration = activity.Duration, quantity = activity.Quantity, unit = activity.Unit, claimSubmissionObservationList = activity.ObservationList != null ? activity.ObservationList.Select(obs => new ClaimSubmissionObservation { observationCode = obs.Code, observationValue = obs.Value, observationValueType = obs.ValueType, observationType = obs.Type, }).ToList() : null }).ToList(); // add ActiveDrugs as history for the patient if (request.ActiveDrugs?.Count > 0) { var i = 1; claim.claimSubmissionActivityList.AddRange(request.ActiveDrugs.Select(activity => new ClaimSubmissionActivity { activityCode = activity.ActivityCode, activityId = $"ActiveDrug-{i++}", activitySource = "HISTORY", activityStart = activity.StartDate.ToLocalTime().ToString("dd/MM/yyyy"), activityType = activity.ActivityType, clinician = activity.Clinician, orderingClinician = activity.OrderingClinician, duration = activity.Duration, quantity = activity.Quantity, unit = activity.Unit, claimSubmissionObservationList = activity.ObservationList != null ? activity.ObservationList.Select(obs => new ClaimSubmissionObservation { observationCode = obs.Code, observationValue = obs.Value, observationValueType = obs.ValueType, observationType = obs.Type, }).ToList() : null })); } // set claim diagnosis claim.claimSubmissionDiagnosisList = request.DiagnosisList != null ? request.DiagnosisList.Select(x => new ClaimSubmissionDiagnosis() { diagnosisCode = x.Code, diagnosisSource = x.Source, diagnosisType = x.Type }).ToList() : null; // add ChronicDiseases as dignosis history for the patient if (request.ChronicDiseases?.Count > 0) { var filteredChronicDiseases = request.ChronicDiseases.Where(a => ! claim.claimSubmissionDiagnosisList.Select(c => c.diagnosisCode).Contains(a.Code))?.Select(c => new ClaimSubmissionDiagnosis { diagnosisCode = c.Code, diagnosisType = "Secondary", // set the type of dignosis as Secondary for ChronicDiseases diagnosisSource = "HISTORY", }) .ToList(); if (filteredChronicDiseases?.Count > 0) { claim.claimSubmissionDiagnosisList.AddRange(filteredChronicDiseases); } } // set ClaimSubmissionPerson var patient = _repository.Find <Patient>( p => p.Id == request.PatientId && !p.IsDeleted && p.DateOfBirth > DateTimeOffset.MinValue); if (patient != null) { claim.claimSubmissionPerson = new ClaimSubmissionPerson { dateOfBirth = patient.DateOfBirth.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture), nationalId = patient.NationalId, patientId = patient.Code, weight = request.Weight, height = request.height }; } // set ClaimSubmissionAllergy if (request.AllergiesList != null && request.AllergiesList.Count != 0) { claim.claimSubmissionAllergyList = request.AllergiesList.Select(p => new ClaimSubmissionAllergy() { allergyCode = p.Code, allergyId = p.Code }).ToList(); } medicalEditsRequest.claims = new List <Claim>(); medicalEditsRequest.claims.Add(claim); return(medicalEditsRequest); } catch { return(null); } }
public MedicalEditsClientTest() { _medicalEditsClientRequest = MedicalEditsDataProvider.GetMedicalEditsClientRequest(); }
/// <summary> /// Medical Service API to Get Medical Edits /// </summary> /// <param name="medicalEditsRequest"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <ClaimEditResponse> GetClaimsEditsAsync(MedicalEditsRequestModel medicalEditsRequest, CancellationToken cancellationToken = default(CancellationToken)) { var client_ = _httpClient; var urlBuilder_ = new StringBuilder(); //set the url of medical edit service urlBuilder_.Append(client_?.BaseAddress != null ? client_.BaseAddress?.OriginalString?.TrimEnd('/') : "").Append("/getClaimsEdits"); try { using (var request_ = new HttpRequestMessage()) { var content_ = new StringContent(JsonConvert.SerializeObject(medicalEditsRequest, _settings.Value)); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); var url_ = urlBuilder_.ToString(); request_.RequestUri = new System.Uri(url_, UriKind.Absolute); var response_ = await client_.SendAsync(request_, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); try { var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) { headers_[item_.Key] = item_.Value; } } var status_ = ((int)response_.StatusCode).ToString(); // check the status code returned from the response // getClaimsEdits API return 200 status code, the sucess field returned in response indicates Whether the service call is successful or not if (status_ == "200") { var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); var result_ = default(ClaimEditResponse); try { result_ = JsonConvert.DeserializeObject <ClaimEditResponse>(responseData_, _settings.Value); return(result_); } catch (Exception exception_) { throw new MedicalEditsAPIException("Could not deserialize the response body.", (int)response_.StatusCode, responseData_, headers_, exception_); } } else { var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); throw new MedicalEditsAPIException("The HTTP status code of the response was not expected (" + (int)response_.StatusCode + ").", (int)response_.StatusCode, responseData_, headers_, null); } } finally { if (response_ != null) { response_.Dispose(); } } } } finally { } }