| 
						 | 
						using Dapper;using Npgsql;using NPOI.SS.Formula.Functions;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(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 { 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();
        }    }}
  |