using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Shentun.PeisReport.Api.Dto;
using Shentun.PeisReport.Api.Dto.ReportBusiness;
using Shentun.PeisReport.Api.Jwt;
using SqlSugar;
using System.Data;
using System.Security.Claims;
namespace Shentun.PeisReport.Api.Controllers
{
///
/// 监利医院
///
[Route("api/[controller]/[action]")]
[ApiController]
[ApiExplorerSettings(GroupName ="JianLiApi")]
//[Authorize]
public class ReportBusinessController : ControllerBase
{
private readonly SqlSugarClient _peisDb;
private readonly SqlSugarClient _lisDb;
private readonly IConfiguration _configuration;
private readonly ILogger _logger;
///
///
///
public ReportBusinessController(
ILogger logger,
IConfiguration configuration
)
{
_logger = logger;
_configuration = configuration;
_peisDb = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = _configuration.GetSection("ConnectionStrings:Default").Value,
DbType = SqlSugar.DbType.SqlServer,
IsAutoCloseConnection = true
});
_lisDb = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = _configuration.GetSection("ConnectionStrings:Lis").Value,
DbType = SqlSugar.DbType.SqlServer,
IsAutoCloseConnection = true
});
}
///
/// 根据身份证号码获取体检报告
///
///
///
[HttpPost]
public async Task GetPeisReportByIdNoAsync(GetPeisReportByIdNoInputDto input)
{
var result = new GetPeisReportByIdNoDto
{
Code = 100,
Message = "请求失败"
};
if (string.IsNullOrWhiteSpace(input.IdNo))
{
result.Message = "身份证不能为空";
return result;
}
try
{
var query = await _peisDb.Ado.GetDataTableAsync($"select top {input.ReportCount} patient_register_id,barcode_no,medical_times,id_card_no," +
$"medical_start_date,mobile_telephone,name as patient_name" +
$" from patient_register " +
$" where id_card_no='{input.IdNo}' and create_pdf_flag='1' order by patient_register_id desc ");
if (query.Rows.Count > 0)
{
List patientRegisterList = new List();
foreach (DataRow row in query.Rows)
{
var patientRegister = new GetPeisReportByIdNoResultDataDto
{
BarcodeNo = row["barcode_no"].ToString(),
MedicalDate = Convert.ToDateTime(row["medical_start_date"].ToString()).ToString("yyyy-MM-dd"),
MedicalTimes = row["medical_times"].ToString(),
MobileTelephone = row["mobile_telephone"].ToString(),
PatientName = row["patient_name"].ToString(),
IdNo = row["id_card_no"].ToString()
};
var patientRegisterId = row["patient_register_id"].ToString();
string directoryDate = patientRegisterId.Substring(0, 6);
string hostAddress = _configuration.GetSection("HostAddress").Value;
string reportVirtual = _configuration.GetSection("ReportVirtualPath:RequestPath").Value;
string reportUrl = $"{hostAddress + reportVirtual}/{directoryDate}/{patientRegisterId}({patientRegister.PatientName}).pdf";
patientRegister.ReportUrl = reportUrl;
patientRegisterList.Add(patientRegister);
}
result.Message = "请求成功";
result.Data = patientRegisterList;
result.Code = 200;
}
else
{
result.Code = 100;
result.Message = "身份证号未查到体检数据";
}
}
catch (Exception ex)
{
result.Message = ex.Message;
_logger.LogError($"访问GetPeisReportByIdNoAsync异常,异常信息:{ex.Message}");
}
return result;
}
///
/// 根据身份证号码获取检验报告
///
///
///
[HttpPost]
public async Task GetLisReportByIdNoAsync(GetLisReportByIdNoInputDto input)
{
var result = new GetLisReportByIdNoDto
{
Code = 100,
Message = "请求失败"
};
if (string.IsNullOrWhiteSpace(input.IdNo))
{
result.Message = "身份证不能为空";
return result;
}
try
{
var query = await _lisDb.Ado.GetDataTableAsync($" select patient_register_id,patient_name,inspection_purpose,telephone,send_datetime from patient_register" +
$" where upload_web_flag='Y' and inspection_datetime>= DATEADD(DAY,-{input.ReportDay},GETDATE()) " +
$" and recieve_source_primarykey in " +
$" (select recieve_source_primarykey from patient_request where id_card_no='{input.IdNo}' ) order by patient_register_id desc ");
if (query.Rows.Count > 0)
{
List patientRegisterList = new List();
foreach (DataRow row in query.Rows)
{
var patientRegister = new GetLisReportByIdNoResultDataDto
{
InspectionPurpose = row["inspection_purpose"].ToString(),
SendDateTime = Convert.ToDateTime(row["send_datetime"].ToString()).ToString("yyyy-MM-dd"),
MobileTelephone = row["telephone"].ToString(),
PatientName = row["patient_name"].ToString(),
IdNo = input.IdNo
};
var patientRegisterId = row["patient_register_id"].ToString();
string hostAddress = _configuration.GetSection("HostAddress").Value;
string reportVirtual = _configuration.GetSection("LisReportVirtualPath:RequestPath").Value;
string reportUrl = $"{hostAddress + reportVirtual}/{patientRegisterId}.pdf";
patientRegister.ReportUrl = reportUrl;
patientRegisterList.Add(patientRegister);
}
result.Message = "请求成功";
result.Data = patientRegisterList;
result.Code = 200;
}
else
{
result.Code = 100;
result.Message = "身份证号未查到检验报告数据";
}
}
catch (Exception ex)
{
result.Message = ex.Message;
_logger.LogError($"访问GetLisReportByIdNoAsync异常,异常信息:{ex.Message}");
}
return result;
}
#region 身份验证
/////
///// 登陆
/////
/////
//[HttpPost]
//[AllowAnonymous]
//public ActionResult Logon()
//{
// var userId = "001";
// var userName = "wenxiande";
// var roleName = "Bus";
// var claims = new List()
// {
// new Claim("UserId",userId),
// new Claim(ClaimTypes.Sid,userId),
// new Claim("UserName",userName),
// new Claim(ClaimTypes.Name,userName)
// };
// claims.Add(new Claim(ClaimTypes.Role, roleName));
// JwtHelper jwtHelper = new JwtHelper();
// return jwtHelper.GetJwt(claims);
//}
/////
///// 查询测试
/////
/////
//[HttpPost]
//[Authorize(Roles = "Bus")]
//public PublicResultDto TestSqlAsync()
//{
// var result = new PublicResultDto
// {
// Code = 200,
// Message = "请求成功"
// };
// return result;
//}
#endregion
}
}