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.
		
		
		
		
		
			
		
			
				
					
					
						
							108 lines
						
					
					
						
							4.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							108 lines
						
					
					
						
							4.5 KiB
						
					
					
				
								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> SendRequest(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 GetColumnReferenceInterfaceCodeValues(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 GetColumnReferenceInterfaceCodeValues(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();
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 |