SureScripts integrations with the custom EMR developed in ASP.NET CORE
SureScripts offers a range of integration services that allow healthcare applications like EMRs (Electronic Medical Records) to interact with pharmacies, providers, and patients in a secure, efficient manner. Below, I'll outline examples of how to integrate each SureScripts functionality with an EMR developed in ASP.NET Core. For each example, I'll focus on the following core SureScripts services:
Each example assumes the ASP.NET Core EMR is set up with dependency injection, HttpClient, and configuration for secure API communication.
1. E-Prescribing (NewRx)
Purpose: To send new prescriptions to pharmacies electronically.
Example:
// Endpoint configuration
string sureScriptsEndpoint = "https://api.surescripts.net/newrx";
string apiKey = "YOUR_SURESCRIPTS_API_KEY";
?
// DTO for NewRx request
public class NewRxRequest
{
??? public string PatientId { get; set; }
??? public string PharmacyId { get; set; }
??? public string Medication { get; set; }
??? public string Dosage { get; set; }
??? public string Instructions { get; set; }
??? public string PrescriberId { get; set; }
??? // Additional fields as needed
}
?
// Service to send NewRx
public class SureScriptsService
{
??? private readonly HttpClient _httpClient;
?
??? public SureScriptsService(HttpClient httpClient)
??? {
??????? _httpClient = httpClient;
??? }
?
??? public async Task<HttpResponseMessage> SendNewRxAsync(NewRxRequest request)
??? {
??????? _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
??????? var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
??????? return await _httpClient.PostAsync(sureScriptsEndpoint, content);
??? }
}
Usage in Controller:
?[HttpPost("send-new-rx")]
public async Task<IActionResult> SendNewRx([FromBody] NewRxRequest request)
{
??? var response = await _sureScriptsService.SendNewRxAsync(request);
??? return Ok(response);
}
2. Refill Requests and Responses (RefReq, RefRes)
Purpose: To process refill requests from pharmacies and send responses.
Example (Receiving Refill Request):
[HttpPost("receive-refill-request")]
public IActionResult ReceiveRefillRequest([FromBody] RefillRequestDto refillRequest)
{
??? // Process the refill request (validate, check patient records, etc.)
??? bool isApproved = true; // Business logic to determine if the request is approved
?
??? // Generate response based on the approval status
??? RefillResponseDto refillResponse = new RefillResponseDto
??? {
??????? RequestId = refillRequest.RequestId,
??????? Status = isApproved ? "Approved" : "Denied",
??????? Message = isApproved ? "Refill approved." : "Refill denied due to policy."
??? };
?
??? // Send the response back to SureScripts
??? return Ok(refillResponse);
}
3. Medication History (MedHx)
Purpose: To retrieve a patient's medication history from SureScripts.
Example:
// DTO for MedHx request
public class MedHxRequest
{
??? public string PatientId { get; set; }
??? public DateTime StartDate { get; set; }
??? public DateTime EndDate { get; set; }
??? public string PrescriberId { get; set; }
}
?
// Service to request medication history
public async Task<HttpResponseMessage> GetMedicationHistoryAsync(MedHxRequest request)
{
领英推荐
??? string medHxEndpoint = "https://api.surescripts.net/medhx";
??? _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
?? ?var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
??? return await _httpClient.PostAsync(medHxEndpoint, content);
}
Usage:
[HttpPost("get-medication-history")]
public async Task<IActionResult> GetMedicationHistory([FromBody] MedHxRequest request)
{
??? var response = await _sureScriptsService.GetMedicationHistoryAsync(request);
??? return Ok(response);
}
4. CancelRx (Prescription Cancellation)
Purpose: To cancel an already sent prescription.
Example:
public class CancelRxRequest
{
??? public string PrescriptionId { get; set; }
??? public string Reason { get; set; }
}
?
public async Task<HttpResponseMessage> CancelPrescriptionAsync(CancelRxRequest request)
{
??? string cancelRxEndpoint = "https://api.surescripts.net/cancelrx";
??? _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
??? var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
??? return await _httpClient.PostAsync(cancelRxEndpoint, content);
}
Usage:
[HttpPost("cancel-rx")]
public async Task<IActionResult> CancelRx([FromBody] CancelRxRequest request)
{
??? var response = await _sureScriptsService.CancelPrescriptionAsync(request);
??? return Ok(response);
}
5. RxChange Requests and Responses
Purpose: To respond to pharmacy requests for changes to prescriptions.
Example (Receiving RxChange Request):
[HttpPost("receive-rxchange-request")]
public IActionResult ReceiveRxChangeRequest([FromBody] RxChangeRequestDto changeRequest)
{
??? bool isApproved = true; // Business logic for evaluating change
?
??? RxChangeResponseDto changeResponse = new RxChangeResponseDto
??? {
??????? RequestId = changeRequest.RequestId,
??????? Status = isApproved ? "Approved" : "Denied",
?????? ?Message = isApproved ? "Change approved." : "Change denied."
??? };
?
??? return Ok(changeResponse);
}
6. Real-Time Prescription Benefit (RTPB) Inquiry and Response
Purpose: To provide real-time cost and benefit information for prescribed medications.
Example:
public class RTPBRequest
{
??? public string PatientId { get; set; }
??? public string Medication { get; set; }
??? public string PharmacyId { get; set; }
}
?
public async Task<HttpResponseMessage> GetPrescriptionBenefitAsync(RTPBRequest request)
{
??? string rtpbEndpoint = "https://api.surescripts.net/rtpb";
??? _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
??? var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
?? ?return await _httpClient.PostAsync(rtpbEndpoint, content);
}
Usage:
[HttpPost("get-prescription-benefit")]
public async Task<IActionResult> GetPrescriptionBenefit([FromBody] RTPBRequest request)
{
??? var response = await _sureScriptsService.GetPrescriptionBenefitAsync(request);
??? return Ok(response);
}
Configuration Summary
Each of these methods would be refined based on SureScripts’ latest API specifications, including secure access (OAuth or API keys) and data validation requirements.