17 changed files with 436 additions and 48 deletions
-
173ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs
-
6ThirdPlugIns/Shentun.Peis.PlugIns.Gem/LisRequestPlugInsGem.cs
-
6ThirdPlugIns/Shentun.Peis.PlugIns.Gem/PatientRegisterPluginsGemHis.cs
-
2ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/LisRequestPlugInsGemTest.cs
-
16src/Shentun.ColumnReferencePlugIns/ChargeRequestAsbitemForPlugIns.cs
-
31src/Shentun.ColumnReferencePlugIns/ChargeRequestForPlugIns.cs
-
97src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs
-
7src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs
-
12src/Shentun.ColumnReferencePlugIns/LisRequestPlugInsBase.cs
-
9src/Shentun.ColumnReferencePlugIns/PlugInsBase.cs
-
2src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs
-
26src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs
-
4src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
-
14src/Shentun.Peis.Domain/ChargeRequestAsbitems/ChargeRequestAsbitemManager.cs
-
59src/Shentun.Peis.Domain/ChargeRequests/ChargeRequestManager.cs
-
10src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs
-
6test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs
@ -0,0 +1,173 @@ |
|||
using Dapper; |
|||
using Npgsql; |
|||
using ServiceReferenceHzcyHis; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Data.Common; |
|||
using System.Linq; |
|||
using System.ServiceModel; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using static ServiceReferenceHzcyHis.bstjPortTypeClient; |
|||
|
|||
namespace Shentun.Peis.PlugIns.Gem |
|||
{ |
|||
public class ChargeRequestPlugInsGem : ChargeRequestPlugInsBase |
|||
{ |
|||
private string _endpointAddress = ""; |
|||
public ChargeRequestPlugInsGem(string parmValue) : base(parmValue) |
|||
{ |
|||
_endpointAddress = InterfaceConfig.GetSection("Interface").GetSection("EndpointAddress").Value; |
|||
} |
|||
public override async Task<ChargeRequestPlugInsOut> SendRequest(ChargeRequestPlugInsInput input) |
|||
{ |
|||
//建立人员档案
|
|||
var patientRegisterForPlugIns = await GetPatientRegisterForPlugInsAsync(input.ChargeRequestId); |
|||
var chargeRequestForPlugIns = await GeChargeRequestForPlugInsAsync(input.ChargeRequestId); |
|||
if(chargeRequestForPlugIns == null) |
|||
{ |
|||
throw new Exception("没有申请单信息"); |
|||
} |
|||
if (!chargeRequestForPlugIns.Asbitems.Any()) |
|||
{ |
|||
throw new Exception("申请单没有组合项目信息"); |
|||
} |
|||
if (patientRegisterForPlugIns.BirthDate == null) |
|||
{ |
|||
throw new Exception("出生日期不能为空"); |
|||
} |
|||
var hisPatientQueryInput = new HisPatientQueryInput() |
|||
{ |
|||
Data = new HisPatientQueryDataInput() |
|||
{ |
|||
MsgHeader = new HisMsgHeaderInput() |
|||
{ |
|||
Sender = "PEIS", |
|||
MsgType = "SVR_ODS_1101", |
|||
MsgVersion = "3.1", |
|||
}, |
|||
Patient = new HisPatientQueryPatientInput() |
|||
{ |
|||
IdCard = patientRegisterForPlugIns.IdNo, |
|||
IdCardCode = "01", |
|||
Name = patientRegisterForPlugIns.PatientName, |
|||
Sex = "1", |
|||
BirthDate = ((DateTime)patientRegisterForPlugIns.BirthDate).ToString("yyyy-MM-dd", System.Globalization.DateTimeFormatInfo.InvariantInfo), |
|||
PatientPhone = patientRegisterForPlugIns.MobileTelephone, |
|||
EthnicGroupCode = "01", |
|||
WorkUnit = patientRegisterForPlugIns.CustomerOrgName, |
|||
Address = patientRegisterForPlugIns.Address, |
|||
} |
|||
} |
|||
}; |
|||
|
|||
var result = await PatientQuery(hisPatientQueryInput); |
|||
|
|||
if (result.MsgHeader.Status != "true") |
|||
{ |
|||
throw new Exception("建立HIS档案失败"+ result.MsgHeader.Detail); |
|||
|
|||
} |
|||
//更新人员登记信息
|
|||
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) |
|||
{ |
|||
conn.Execute(@"update patient_register set his_patient_id = @HisPatientId
|
|||
where id = @PatientRegisterId",
|
|||
new { HisPatientId = result.Patient.PatientId, |
|||
PatientRegisterId = patientRegisterForPlugIns.PatientRegisterId |
|||
}); |
|||
|
|||
} |
|||
|
|||
//发送项目
|
|||
var hisInput = new HisMecSaveInput() |
|||
{ |
|||
Data = new HisMecSaveDataInput() |
|||
{ |
|||
MsgHeader = new HisMsgHeaderInput() |
|||
{ |
|||
Sender = "PEIS", |
|||
MsgType = "SVR_ODS_6101", |
|||
MsgVersion = "3.1", |
|||
}, |
|||
Items = new List<HisMecSaveDataItemInput>() |
|||
{ |
|||
new HisMecSaveDataItemInput() |
|||
{ |
|||
ExamRequestNo =chargeRequestForPlugIns.ChargeRequestNo, |
|||
FeeType = "1", |
|||
EmpId = result.Patient.PatientId, |
|||
DeptId = "", |
|||
DoctId = "", |
|||
ExeDeptId = "", |
|||
Tjunit = patientRegisterForPlugIns.CustomerOrgName, |
|||
Tjfee = chargeRequestForPlugIns.Asbitems.Sum(o=>o.Charges).ToString(), |
|||
Ztxm = "", |
|||
Remark = "体检科" |
|||
|
|||
}, |
|||
|
|||
} |
|||
} |
|||
}; |
|||
var mecSaveResult = await MecSave(hisInput); |
|||
if (mecSaveResult.MsgHeader.Status != "true") |
|||
{ |
|||
throw new Exception("建立HIS档案失败" + mecSaveResult.MsgHeader.Detail); |
|||
} |
|||
//更新申请单信息
|
|||
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) |
|||
{ |
|||
conn.Execute(@"update charge_request set his_charge_no = @HisChargeNo
|
|||
where id = @ChargeRequestId",
|
|||
new |
|||
{ |
|||
HisChargeNo = mecSaveResult.MsgHeader.Yjxh, |
|||
ChargeRequestId = input.ChargeRequestId |
|||
}); |
|||
|
|||
} |
|||
return new ChargeRequestPlugInsOut(); |
|||
} |
|||
|
|||
|
|||
public async Task<HisPatientQueryOut> PatientQuery(HisPatientQueryInput input) |
|||
{ |
|||
using (var client = CreateClient()) |
|||
{ |
|||
input.SeviceBaseArg.Service = "patientQuery"; |
|||
var data = XmlHelper.SerializeToXml(input.Data); |
|||
|
|||
var resultStr = (await client.invokeAsync(input.SeviceBaseArg.Service, |
|||
input.SeviceBaseArg.Urid, |
|||
input.SeviceBaseArg.Pwd, |
|||
data)).@return; |
|||
var result = XmlHelper.DeserializeXml<HisPatientQueryOut>(resultStr); |
|||
return result; |
|||
} |
|||
} |
|||
|
|||
public async Task<HisMecSaveOut> MecSave(HisMecSaveInput input) |
|||
{ |
|||
using (var client = CreateClient()) |
|||
{ |
|||
input.SeviceBaseArg.Service = "mecSave"; |
|||
var data = XmlHelper.SerializeToXml(input.Data); |
|||
|
|||
var resultStr = (await client.invokeAsync(input.SeviceBaseArg.Service, |
|||
input.SeviceBaseArg.Urid, |
|||
input.SeviceBaseArg.Pwd, |
|||
data)).@return; |
|||
var result = XmlHelper.DeserializeXml<HisMecSaveOut>(resultStr); |
|||
return result; |
|||
} |
|||
} |
|||
|
|||
private bstjPortTypeClient CreateClient() |
|||
{ |
|||
return new bstjPortTypeClient(EndpointConfiguration.bstjHttpSoap11Endpoint, |
|||
_endpointAddress); |
|||
} |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Shentun.Peis.PlugIns |
|||
{ |
|||
public class ChargeRequestAsbitemForPlugIns |
|||
{ |
|||
public Guid AsbitemId { get; set; } |
|||
public string AsbitemName { get; set; } = string.Empty; |
|||
public string ThirdAsbitemCode { get; set; } = string.Empty; |
|||
public decimal Charges { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.ComponentModel.DataAnnotations.Schema; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Shentun.Peis.PlugIns |
|||
{ |
|||
public class ChargeRequestForPlugIns |
|||
{ |
|||
/// <summary>
|
|||
/// 收费申请单号
|
|||
/// </summary>
|
|||
|
|||
public string ChargeRequestNo { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// HIS收费单号
|
|||
/// </summary>
|
|||
public string HisChargeNo { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 0、申请 1-收费,2-退费
|
|||
/// </summary>
|
|||
public char ChargeRequestFlag { get; set; } |
|||
|
|||
public List<ChargeRequestAsbitemForPlugIns> Asbitems = new List<ChargeRequestAsbitemForPlugIns> (); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue