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.Gem { public class LisRequestPlugInsGem : LisRequestPlugInsBase { public LisRequestPlugInsGem(Guid thirdInterfaceId) : base(thirdInterfaceId) { } public LisRequestPlugInsGem(string parmValue) : base(parmValue) { } public override async Task 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 { LisRequestId = 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.Charges), ChargeFlag = "2", PatientType = "3", ChargeType = "1", SampleType = thirdSampleTypeCode, SamplerCode = "", SampleRequestFlag = "正常" }; conn.Execute(sql, thirdLisRequestEntity); } return new LisRequestPlugInsOut(); } } }