using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Strata.ContinuousImprovement.Biz.QualityVariation.QVI; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace Strata.ContinuousImprovement.Api.Controllers.JazzQvi { [ApiController] [ApiVersion("1.0")] [Route("api/v{api-version:apiVersion}/quality-variation-savings/line-items")] public class QviLineItemSavingsController : ControllerBase { private readonly IQviLineItemSavingsService _qviLineItemSavingsService; public QviLineItemSavingsController(IQviLineItemSavingsService qviLineItemSavingsService) { _qviLineItemSavingsService = qviLineItemSavingsService; } [HttpGet("case-type-families")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesDefaultResponseType] public async Task>> GetCaseTypeFamilies( [FromQuery] Guid configurationGuid, [FromQuery] bool isBaseline = false, CancellationToken cancellationToken = default) { if (configurationGuid == Guid.Empty) { return BadRequest("configurationGuid is required."); } var result = await _qviLineItemSavingsService.GetCaseTypeFamilyInfoAsync( configurationGuid, isBaseline, cancellationToken); return Ok(result); } [HttpGet("drg-types")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesDefaultResponseType] public async Task>> GetDrgTypes( [FromQuery] Guid configurationGuid, [FromQuery] bool isBaseline = false, CancellationToken cancellationToken = default) { if (configurationGuid == Guid.Empty) { return BadRequest("configurationGuid is required."); } var result = await _qviLineItemSavingsService.GetDrgTypeInfoAsync( configurationGuid, isBaseline, cancellationToken); return Ok(result); } [HttpGet("encounter-savings")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesDefaultResponseType] public async Task>> GetEncounterSavings( [FromQuery] Guid configurationGuid, [FromQuery] Guid? opportunityGuid = null, [FromQuery] bool? isBaseline = null, CancellationToken cancellationToken = default) { if (configurationGuid == Guid.Empty) { return BadRequest("configurationGuid is required."); } var result = await _qviLineItemSavingsService.GetEncounterSavingInfoAsync( configurationGuid, opportunityGuid, isBaseline, cancellationToken); return Ok(result); } } }