You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
4.7 KiB

using Dapper;
using Npgsql;
using NPOI.SS.Formula.Functions;
using Shentun.Peis.PlugIns.LisRequests;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.PlugIns.Extensions.LisRequests.Hzcy
{
public class LisRequestPlugInsHzcy : LisRequestPlugInsBase
{
public LisRequestPlugInsHzcy(Guid thirdInterfaceId) : base(thirdInterfaceId)
{
}
public LisRequestPlugInsHzcy(string parmValue) : base(parmValue)
{
}
public override async Task<LisRequestPlugInsOut> SendRequestAsync(LisRequestPlugInsInput input)
{
var patientRegisterForPlugIns = await GetPatientRegisterForPlugInsAsync(input.LisRequestId);
var lisRequestForPlugIns = await GetLisRequestForPlugInsAsync(input.LisRequestId);
if (lisRequestForPlugIns == null)
{
return null;
}
if (lisRequestForPlugIns.SampleTypeId == Guid.Empty)
{
throw new Exception($"标本类型没有编码");
}
var columnReferenceInterfaceCodeValue = (await GetColumnReferenceInterfaceCodeValuesAsync(SampleTypeColumnReferenceId,
lisRequestForPlugIns.SampleTypeId.ToString())).FirstOrDefault();
string thirdSampleTypeCode = "";
if (columnReferenceInterfaceCodeValue != null)
{
thirdSampleTypeCode = columnReferenceInterfaceCodeValue.InterfaceCodeValue;
}
else
{
//throw new Exception($"{lisRequestForPlugIns.SampleTypeName}没有对照");
}
foreach (var asbitem in lisRequestForPlugIns.Asbitems)
{
columnReferenceInterfaceCodeValue = (await GetColumnReferenceInterfaceCodeValuesAsync(AsbitemColumnReferenceId,
asbitem.AsbitemId.ToString())).FirstOrDefault();
if (columnReferenceInterfaceCodeValue != null)
{
asbitem.ThirdAsbitemCode = columnReferenceInterfaceCodeValue.InterfaceCodeValue;
}
else
{
throw new Exception($"{asbitem.AsbitemName}没有对照");
}
}
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
conn.Execute("delete from third_lis_request where lis_request_id = @LisRequestId",
new { input.LisRequestId });
string sql;
sql = @"insert into third_lis_request (id,
lis_request_id,
asbitem_names,
asbitem_codes,
department_code,
requester_code,
telephone,
request_date,
charges,
charge_flag,
patient_type,
charge_type,
sample_type,
sampler_code,
sample_request_flag)
VALUES (@Id, @LisRequestId,@AsbitemNames,@AsbitemCodes,@DepartmentCode,
@RequesterCode,@Telephone,@RequestDate,@Charges,@ChargeFlag,
@PatientType,@ChargeType,@SampleType,@SamplerCode,
@SampleRequestFlag)
";
var thirdLisRequestEntity = new ThirdLisRequestEntity()
{
Id = Guid.NewGuid(),
LisRequestId = input.LisRequestId,
AsbitemNames = string.Join("+", lisRequestForPlugIns.Asbitems.Select(o => o.AsbitemName)),
AsbitemCodes = string.Join("^", lisRequestForPlugIns.Asbitems.Select(o => o.ThirdAsbitemCode)),
DepartmentCode = "",
RequesterCode = "",
Telephone = patientRegisterForPlugIns.MobileTelephone,
RequestDate = DateTime.Now,
Charges = lisRequestForPlugIns.Asbitems.Sum(o => o.Standards),
ChargeFlag = "2",
PatientType = "3",
ChargeType = "1",
SampleType = thirdSampleTypeCode,
SamplerCode = "",
SampleRequestFlag = "正常"
};
conn.Execute(sql, thirdLisRequestEntity);
}
return new LisRequestPlugInsOut();
}
}
}