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
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();
|
|
|
|
}
|
|
}
|
|
}
|