@ -34,269 +34,263 @@ namespace Shentun.Peis.PlugIns.Gem
private CustomerOrgRegisterDto _customerOrgRegisterDto ;
private List < PersonnelTypeDto > _personnelTypes ;
private List < CustomerOrgGroupDto > _customerOrgGroupDtos ;
private string _answerWebApiUrl ;
public ImportPatientRegisterPlugInsGem ( string parmValue ) : base ( parmValue )
{
}
public override async Task ImportAsync ( )
{
await LoginAsync ( ) ;
await InitAsync ( ) ;
for ( var i = 0 ; i < 3 0 ; i + + )
var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync ( ) ;
if ( qztlPatientRegisterFromInterface = = null | | ! qztlPatientRegisterFromInterface . plans . Any ( ) )
{
var qztlPatientRegisterFromInterface = await CallInterfaceServiceAsync ( ) ;
if ( qztlPatientRegisterFromInterface = = null | | ! qztlPatientRegisterFromInterface . plans . Any ( ) )
{
return ;
}
return ;
}
//设置导入人员信息
foreach ( var patient in qztlPatientRegisterFromInterface . plans )
//设置导入人员信息
foreach ( var patient in qztlPatientRegisterFromInterface . plans )
{
try
{
try
//婚姻状况
var maritalStatusId = ConvertMaritalStatus ( patient . wedding ) ;
//人员类别
var personnelType = ConvertPersonnelType ( patient . tjJieduan ) ;
//性别
var sexId = ConvertSex ( patient . sex ) ;
//体检类别
var medicalTypeName = patient . tjpcV ;
MedicalTypeDto medicalTypeDto = null ;
if ( ! string . IsNullOrWhiteSpace ( medicalTypeName ) )
{
//婚姻状况
var maritalStatusId = ConvertMaritalStatus ( patient . wedding ) ;
//人员类别
var personnelType = ConvertPersonnelType ( patient . tjJieduan ) ;
//性别
var sexId = ConvertSex ( patient . sex ) ;
//体检类别
var medicalTypeName = patient . tjpcV ;
MedicalTypeDto medicalTypeDto = null ;
if ( ! string . IsNullOrWhiteSpace ( medicalTypeName ) )
medicalTypeDto = await CallAppServiceAsync < DisplayNameInputDto , MedicalTypeDto > (
"api/app/MedicalType/GetByDisplayName" , new DisplayNameInputDto ( ) { DisplayName = medicalTypeName } ) ;
if ( medicalTypeDto = = null )
{
medicalTypeDto = await CallAppServiceAsync < DisplayNameInputDto , MedicalTypeDto > (
"api/app/MedicalType/GetByDisplayName" , new DisplayNameInputDto ( ) { DisplayName = medicalTypeName } ) ;
if ( medicalTypeDto = = null )
var createMedicalTypeDto = new CreateMedicalTypeDto ( )
{
var createMedicalTypeDto = new CreateMedicalTypeDto ( )
{
DisplayName = medicalTypeName ,
} ;
medicalTypeDto = await CallAppServiceAsync < CreateMedicalTypeDto , MedicalTypeDto > (
"api/app/medical-type" , new CreateMedicalTypeDto ( ) { DisplayName = medicalTypeName } ) ;
}
}
//职称
var jobTitle = ConvertJobTitle ( patient . gradeZwV ) ;
//职务
var jobPost = ConvertJobPost ( patient . tjTab1 ) ;
string workTypeV = patient . workTypeV ;
if ( string . IsNullOrWhiteSpace ( workTypeV ) )
{
workTypeV = "" ;
}
else
{
workTypeV = "," + workTypeV ;
}
jobPost = jobPost + workTypeV ;
if ( ! string . IsNullOrWhiteSpace ( jobPost ) & & jobPost . Length > = 1 0 )
{
jobPost = jobPost . Substring ( 0 , 1 0 ) ; //只能存储10个汉字
DisplayName = medicalTypeName ,
} ;
medicalTypeDto = await CallAppServiceAsync < CreateMedicalTypeDto , MedicalTypeDto > (
"api/app/medical-type" , new CreateMedicalTypeDto ( ) { DisplayName = medicalTypeName } ) ;
}
}
//职称
var jobTitle = ConvertJobTitle ( patient . gradeZwV ) ;
//职务
var jobPost = ConvertJobPost ( patient . tjTab1 ) ;
string workTypeV = patient . workTypeV ;
if ( string . IsNullOrWhiteSpace ( workTypeV ) )
{
workTypeV = "" ;
}
else
{
workTypeV = "," + workTypeV ;
}
jobPost = jobPost + workTypeV ;
if ( ! string . IsNullOrWhiteSpace ( jobPost ) & & jobPost . Length > = 1 0 )
{
jobPost = jobPost . Substring ( 0 , 1 0 ) ; //只能存储10个汉字
}
//查找子单位是否存在,如存在获取子单位id,如果不存在这创建子单位
var orgName = patient . orgName ;
var pos = orgName . IndexOf ( "_" ) ;
orgName = orgName . Substring ( 0 , pos ) ;
if ( string . IsNullOrWhiteSpace ( patient . mobile ) )
{
//青海省第五人民医院要强行设置为 11111111111
}
var customerOrgDtos = await CallAppServiceAsync < CustomerOrgIdInputDto , List < CustomerOrgDto > > (
"api/app/CustomerOrg/GetChildCustomerOrgsById" ,
new CustomerOrgIdInputDto ( ) { CustomerOrgId = _importCustomerOrgId } ) ;
CustomerOrgDto customerOrgDto = null ;
if ( customerOrgDtos ! = null & & customerOrgDtos . Any ( ) )
//查找子单位是否存在,如存在获取子单位id,如果不存在这创建子单位
var orgName = patient . orgName ;
var pos = orgName . IndexOf ( "_" ) ;
orgName = orgName . Substring ( 0 , pos ) ;
if ( string . IsNullOrWhiteSpace ( patient . mobile ) )
{
//青海省第五人民医院要强行设置为 11111111111
}
var customerOrgDtos = await CallAppServiceAsync < CustomerOrgIdInputDto , List < CustomerOrgDto > > (
"api/app/CustomerOrg/GetChildCustomerOrgsById" ,
new CustomerOrgIdInputDto ( ) { CustomerOrgId = _importCustomerOrgId } ) ;
CustomerOrgDto customerOrgDto = null ;
if ( customerOrgDtos ! = null & & customerOrgDtos . Any ( ) )
{
customerOrgDto = customerOrgDtos . Where ( o = > o . DisplayName = = orgName ) . FirstOrDefault ( ) ;
}
if ( customerOrgDto = = null )
{
customerOrgDto = await CallAppServiceAsync < CreateCustomerOrgDto , CustomerOrgDto > (
"api/app/customerorg/create" , new CreateCustomerOrgDto ( )
{
MedicalCenterId = _customerOrgDto . MedicalCenterId ,
ParentId = _importCustomerOrgId ,
DisplayName = orgName ,
ShortName = orgName ,
IsActive = 'Y' ,
IsLock = 'Y'
} ) ;
}
CustomerOrgGroupDto customerOrgGroupDto ;
if ( patient . ifFj = = 1 )
{
//复检
//加载单位分组信息
_customerOrgGroupDtos = await CallAppServiceAsync < Guid , List < CustomerOrgGroupDto > > (
"api/app/customer-org-group/in-customer-org-id/" + _importCustomerOrgId . ToString ( )
, Guid . Empty , "get" ) ;
customerOrgGroupDto = _customerOrgGroupDtos . Where ( o = > o . DisplayName = = "复检" ) . FirstOrDefault ( ) ;
if ( customerOrgGroupDto = = null )
{
customerOrgDto = customerOrgDtos . Where ( o = > o . DisplayName = = orgName ) . FirstOrDefault ( ) ;
throw new Exception ( "没有复检这个分组" ) ;
}
if ( customerOrgDto = = null )
}
else
{
List < string > groupNames = new List < string > ( ) ;
if ( patient . ifGy = = 1 )
{
customerOrgDto = await CallAppServiceAsync < CreateCustomerOrgDto , CustomerOrgDto > (
"api/app/customerorg/create" , new CreateCustomerOrgDto ( )
{
MedicalCenterId = _customerOrgDto . MedicalCenterId ,
ParentId = _importCustomerOrgId ,
DisplayName = orgName ,
ShortName = orgName ,
IsActive = 'Y' ,
IsLock = 'Y'
} ) ;
groupNames . Add ( "高原" ) ;
}
CustomerOrgGroupDto customerOrgGroupDto ;
if ( patient . ifFj = = 1 )
else if ( patient . ifJk = = 1 )
{
//复检
//加载单位分组信息
_customerOrgGroupDtos = await CallAppServiceAsync < Guid , List < CustomerOrgGroupDto > > (
"api/app/customer-org-group/in-customer-org-id/" + _importCustomerOrgId . ToString ( )
, Guid . Empty , "get" ) ;
customerOrgGroupDto = _customerOrgGroupDtos . Where ( o = > o . DisplayName = = "复检" ) . FirstOrDefault ( ) ;
if ( customerOrgGroupDto = = null )
{
throw new Exception ( "没有复检这个分组" ) ;
}
groupNames . Add ( "健康" ) ;
}
else
{
List < string > groupNames = new List < string > ( ) ;
if ( patient . ifGy = = 1 )
{
groupNames . Add ( "高原" ) ;
}
else if ( patient . ifJk = = 1 )
{
groupNames . Add ( "健康" ) ;
}
else
{
throw new Exception ( "分组名称必须是高原或健康体检二选一" ) ;
}
if ( patient . ifGt = = 1 )
{
groupNames . Add ( "高铁" ) ;
}
if ( patient . ifWh = = 1 )
{
groupNames . Add ( "职害" ) ;
}
if ( patient . ifCw = = 1 )
{
groupNames . Add ( "普速" ) ;
}
if ( patient . ifMain = = 1 )
{
groupNames . Add ( "行车" ) ;
}
if ( patient . ifCy = = 1 )
{
groupNames . Add ( "从业" ) ;
}
customerOrgGroupDto = await GetCustomerOrgGroup ( groupNames , sexId , maritalStatusId ) ;
}
//获取病人ID
var patientRegister = new CreatePatientRegisterDto ( )
{
MedicalCenterId = _customerOrgDto . MedicalCenterId ,
//PatientRegisterId = null,
//PatientId = null,
IsMaxMedicalTimes = 'Y' ,
CompleteFlag = '0' ,
CustomerOrgId = customerOrgDto . Id ,
CustomerOrgRegisterId = _customerOrgRegisterDto . Id ,
CustomerOrgGroupId = customerOrgGroupDto . Id ,
PatientName = patient . personName ,
SexId = sexId ,
Age = patient . age ,
MaritalStatusId = maritalStatusId ,
MobileTelephone = patient . mobile ,
Planuserid = patient . id . ToString ( ) ,
IdNo = patient . cardId ,
//PersonnelTypeId = personnelType.Id,
JobTitle = jobTitle ,
Remark = patient . remark ,
JobPost = jobPost ,
Remark2 = patient . tjOpinion ,
Remark3 = patient . fjOpinion ,
QztlIsFj = patient . ifFj = = 1 ? 'Y' : 'N' ,
QztlIsGt = patient . ifGt = = 1 ? 'Y' : 'N' ,
QztlIsWh = patient . ifWh = = 1 ? 'Y' : 'N' ,
QztlIsCw = patient . ifCw = = 1 ? 'Y' : 'N' ,
QztlIsMain = patient . ifMain = = 1 ? 'Y' : 'N' ,
QztlIsCy = patient . ifCy = = 1 ? 'Y' : 'N' ,
IsQztlImport = 'Y'
} ;
if ( ! string . IsNullOrWhiteSpace ( patient . cardId ) )
{
var patientInfo = await CallAppServiceAsync < IdNoInputDto , PatientDto > (
"api/app/patient/GetByIdNo" ,
new IdNoInputDto ( )
{
IdNo = patient . cardId
} ) ;
if ( patientInfo ! = null )
{
patientRegister . PatientId = patientInfo . Id ;
}
}
if ( medicalTypeDto ! = null )
{
patientRegister . MedicalTypeId = medicalTypeDto . Id ;
throw new Exception ( "分组名称必须是高原或健康体检二选一" ) ;
}
if ( personnelType ! = null )
if ( patient . ifGt = = 1 )
{
patientRegister . PersonnelTypeId = personnelType . Id ;
groupNames . Add ( "高铁" ) ;
}
if ( patient . ifGy = = 1 )
if ( patient . ifWh = = 1 )
{
patientRegister . QztlType = '0' ;
groupNames . Add ( "职害" ) ;
}
else if ( patient . ifJk = = 1 ) { }
if ( patient . ifCw = = 1 )
{
patientRegister . QztlType = '1' ;
groupNames . Add ( "普速" ) ;
}
patientRegister . RegisterCheckAsbitems = new List < CreatePatientRegisterRegisterCheckAsbitem > ( ) ;
//获取分组信息
var customerOrgGroupDetailOrAsbitemDtos = await CallAppServiceAsync < Guid , List < CustomerOrgGroupDetailOrAsbitemDto > > (
"api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=" + customerOrgGroupDto . Id . ToString ( )
, Guid . Empty , "get" ) ;
if ( ! customerOrgGroupDetailOrAsbitemDtos . Any ( ) )
if ( patient . ifMain = = 1 )
{
throw new Exception ( "分组未包含项目 ") ;
groupNames . Add ( "行车" ) ;
}
foreach ( var asbitem in customerOrgGroupDetailOrAsbitemDtos )
if ( patient . ifCy = = 1 )
{
patientRegister . RegisterCheckAsbitems . Add ( new CreatePatientRegisterRegisterCheckAsbitem ( )
{
AsbitemId = asbitem . AsbitemId ,
StandardPrice = asbitem . Price ,
ChargePrice = asbitem . CustomerOrgGroupDetailPrice ,
PayTypeFlag = '1' ,
IsCharge = 'N' ,
Amount = asbitem . CustomerOrgGroupDetailAmount
} ) ;
groupNames . Add ( "从业" ) ;
}
await CallAppServiceAsync < CreatePatientRegisterDto , object > (
"api/PatientRegister/CreatePatientRegister" ,
patientRegister ) ;
var succesIds = new List < string > ( ) ;
var deleteIds = new List < string > ( ) ;
succesIds . Add ( patientRegister . Planuserid ) ;
await NoteOk ( succesIds , deleteIds ) ;
customerOrgGroupDto = await GetCustomerOrgGroup ( groupNames , sexId , maritalStatusId ) ;
}
//获取病人ID
catch ( Exception ex )
var patientRegister = new CreatePatientRegisterDto ( )
{
if ( ex . Message . Contains ( "人员信息姓名和性别和原来的信息都不一致" ) | |
ex . Message . Contains ( "身份证号解析出的性别与填入的性别不一致" ) )
MedicalCenterId = _customerOrgDto . MedicalCenterId ,
//PatientRegisterId = null,
//PatientId = null,
IsMaxMedicalTimes = 'Y' ,
CompleteFlag = '0' ,
CustomerOrgId = customerOrgDto . Id ,
CustomerOrgRegisterId = _customerOrgRegisterDto . Id ,
CustomerOrgGroupId = customerOrgGroupDto . Id ,
PatientName = patient . personName ,
SexId = sexId ,
Age = patient . age ,
MaritalStatusId = maritalStatusId ,
MobileTelephone = patient . mobile ,
Planuserid = patient . id . ToString ( ) ,
IdNo = patient . cardId ,
//PersonnelTypeId = personnelType.Id,
JobTitle = jobTitle ,
Remark = patient . remark ,
JobPost = jobPost ,
Remark2 = patient . tjOpinion ,
Remark3 = patient . fjOpinion ,
QztlIsFj = patient . ifFj = = 1 ? 'Y' : 'N' ,
QztlIsGt = patient . ifGt = = 1 ? 'Y' : 'N' ,
QztlIsWh = patient . ifWh = = 1 ? 'Y' : 'N' ,
QztlIsCw = patient . ifCw = = 1 ? 'Y' : 'N' ,
QztlIsMain = patient . ifMain = = 1 ? 'Y' : 'N' ,
QztlIsCy = patient . ifCy = = 1 ? 'Y' : 'N' ,
IsQztlImport = 'Y'
} ;
if ( ! string . IsNullOrWhiteSpace ( patient . cardId ) )
{
var patientInfo = await CallAppServiceAsync < IdNoInputDto , PatientDto > (
"api/app/patient/GetByIdNo" ,
new IdNoInputDto ( )
{
IdNo = patient . cardId
} ) ;
if ( patientInfo ! = null )
{
continue ;
patientRegister . PatientId = patientInfo . Id ;
}
else
}
if ( medicalTypeDto ! = null )
{
patientRegister . MedicalTypeId = medicalTypeDto . Id ;
}
if ( personnelType ! = null )
{
patientRegister . PersonnelTypeId = personnelType . Id ;
}
if ( patient . ifGy = = 1 )
{
patientRegister . QztlType = '0' ;
}
else if ( patient . ifJk = = 1 ) { }
{
patientRegister . QztlType = '1' ;
}
patientRegister . RegisterCheckAsbitems = new List < CreatePatientRegisterRegisterCheckAsbitem > ( ) ;
//获取分组信息
var customerOrgGroupDetailOrAsbitemDtos = await CallAppServiceAsync < Guid , List < CustomerOrgGroupDetailOrAsbitemDto > > (
"api/app/customerorggroupdetail/getcustomerorggroupdetailinasbitem?CustomerOrgGroupId=" + customerOrgGroupDto . Id . ToString ( )
, Guid . Empty , "get" ) ;
if ( ! customerOrgGroupDetailOrAsbitemDtos . Any ( ) )
{
throw new Exception ( "分组未包含项目" ) ;
}
foreach ( var asbitem in customerOrgGroupDetailOrAsbitemDtos )
{
patientRegister . RegisterCheckAsbitems . Add ( new CreatePatientRegisterRegisterCheckAsbitem ( )
{
throw ex ;
}
AsbitemId = asbitem . AsbitemId ,
StandardPrice = asbitem . Price ,
ChargePrice = asbitem . CustomerOrgGroupDetailPrice ,
PayTypeFlag = '1' ,
IsCharge = 'N' ,
Amount = asbitem . CustomerOrgGroupDetailAmount
} ) ;
}
await CallAppServiceAsync < CreatePatientRegisterDto , object > (
"api/PatientRegister/CreatePatientRegister" ,
patientRegister ) ;
var succesIds = new List < string > ( ) ;
var deleteIds = new List < string > ( ) ;
succesIds . Add ( patientRegister . Planuserid ) ;
await AnswerOk ( succesIds , deleteIds ) ;
}
catch ( Exception ex )
{
if ( ex . Message . Contains ( "人员信息姓名和性别和原来的信息都不一致" ) | |
ex . Message . Contains ( "身份证号解析出的性别与填入的性别不一致" ) )
{
continue ;
}
else
{
throw ex ;
}
}
}
}
public async Task InitAsync ( )
@ -304,6 +298,7 @@ namespace Shentun.Peis.PlugIns.Gem
var customerOrgIdStr = InterfaceConfig . GetSection ( "Interface" ) . GetSection ( "单位编号" ) . Value ;
_hospitalId = InterfaceConfig . GetSection ( "Interface" ) . GetSection ( "HospitalId" ) . Value ;
_aesKEY = InterfaceConfig . GetSection ( "Interface" ) . GetSection ( "aesKEY" ) . Value ;
_answerWebApiUrl = InterfaceConfig . GetSection ( "Interface" ) . GetSection ( "AnswerWebApiUrl" ) . Value ;
if ( string . IsNullOrWhiteSpace ( customerOrgIdStr ) )
{
return ;
@ -401,13 +396,13 @@ namespace Shentun.Peis.PlugIns.Gem
result = await response . Content . ReadAsStringAsync ( ) ;
result = result . Replace ( ":\"[{" , ":[{" ) . Replace ( "}]\"" , "}]" ) . Replace ( "\\" , "" ) ;
if ( result . IndexOf ( "status" ) < 0 )
if ( result . IndexOf ( "status" ) < 0 )
{
throw new Exception ( $"调用WebApi中无status,返回值:" + result ) ;
}
QztlPatientRegisterFromInterface ? resultDto = JsonConvert . DeserializeObject < QztlPatientRegisterFromInterface > ( result ) ;
if ( resultDto ! = null )
{
{
if ( resultDto . status ! = 0 )
{
throw new Exception ( $"调用WebApi失败,返回错误,消息:" + resultDto . status + resultDto . errorMsg ) ;
@ -655,7 +650,7 @@ namespace Shentun.Peis.PlugIns.Gem
}
public async Task Note Ok( List < string > successIds , List < string > deleteIds )
public async Task Answer Ok( List < string > successIds , List < string > deleteIds )
{
if ( successIds = = null | | deleteIds = = null )
{
@ -690,7 +685,7 @@ namespace Shentun.Peis.PlugIns.Gem
deleteIdStr + = "," + deleteIds [ i ] ;
}
}
string baseAddress = "http://62.156.10.237:8005/health/values/SetPlanOK?" ;
string baseAddress = _answerWebApiUrl ; // "http://62.156.10.237:8005/health/values/SetPlanOK?";
string ary = "HospitalId=" + _hospitalId + ( Char ) 3 8 +
"ids=" + successIdStr + ( Char ) 3 8 + "delids=" + deleteIdStr + ( Char ) 3 8 + "AesKey=" + _aesKEY ;
baseAddress = baseAddress + ary ;