using log4net.Plugin;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query;
using Microsoft.Extensions.DependencyModel;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using NPOI.DDF;
using NPOI.SS.Formula.Functions;
using NUglify.Helpers;
using Shentun.Peis.CustomerOrgs;
using Shentun.Peis.Enums;
using Shentun.Peis.ItemTypes;
using Shentun.Peis.Models;
using Shentun.Peis.MyUser;
using Shentun.Peis.RegisterCheckItems;
using Shentun.Peis.Sexs;
using Shentun.Utilities;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Loader;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.Uow;
using Volo.Abp.Users;
using Xceed.Document.NET;
namespace Shentun.Peis.DataMigrations
{
///
/// 基础数据处理
///
//[Authorize]
//[RemoteService(false)]
public class BaseDataHandleAppService : ApplicationService
{
private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
// ConnectionString = "Data Source=.;Initial Catalog=mypeis;User ID=sa;Password=123;Encrypt=false;",
ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis0501;Encrypt=false;",
DbType = SqlSugar.DbType.SqlServer,
IsAutoCloseConnection = true
});
private readonly SqlSugarClient PgDb = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;",
DbType = SqlSugar.DbType.PostgreSQL,
IsAutoCloseConnection = true
});
//修改时间用
private readonly SqlSugarClient PgNWDb = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Host=10.1.12.140;Port=5432;Database=ShentunPeis0503;User ID=postgres;Password=st123;",
DbType = SqlSugar.DbType.PostgreSQL,
IsAutoCloseConnection = true
});
////默认指引类别ID
//private readonly Guid defaultGuidTypeId = Guid.Parse("3a120284-df18-7b36-4b12-0423a7d5c1c6");
////默认体检报告类别ID
//private readonly Guid defaultMedicalReportTypeId = Guid.Parse("3a120285-65dd-e7da-c923-6b503ab9e1d9");
//默认指引类别ID
private readonly char defaultGuidTypeId = '0';
//默认体检报告类别ID
private readonly char defaultMedicalReportTypeId = '0';
//默认体检中心
private readonly Guid defaultMedicalCenterId = Guid.Parse("0de5b78a-731d-4f80-b262-655ebbf04581");
private readonly string defaultMedicalConclusionType = "01";
private readonly Guid defaultSampleContainerId = Guid.Parse("3a1230dc-90fc-1bbc-dbd4-da9de6f2a67d");
//默认单位性质ID
private readonly Guid defaultOrgTypeId = Guid.Parse("3a11fe4e-7dd3-b379-43b9-5be586097abe");
private readonly IRepository _deviceTypeRepository;
private readonly IRepository _itemTypeRepository;
private readonly ItemTypeManager _itemTypeManager;
private readonly IRepository _unitRepository;
private readonly IRepository _medicalTypeRepository;
private readonly IRepository _personnelTypeRepository;
private readonly IRepository _invoiceItemTypeRepository;
private readonly IRepository _fieldComparisonRepository;
private readonly IRepository _sampleTypeRepository;
private readonly IRepository- _itemRepository;
private readonly IRepository _referenceRangeRepository;
private readonly IRepository _asbitemRepository;
private readonly IRepository _asbitemDetailRepository;
private readonly IRepository _medicalPackageRepository;
private readonly IRepository _medicalPackageDetailRepository;
private readonly IRepository _diagnosisRepository;
private readonly IRepository _suggestionRepository;
private readonly IRepository _itemResultTemplateRepository;
private readonly IRepository _ItemResultMatchRepository;
private readonly MyUserAppService _myUserAppService;
private readonly IRepository _menuInfoRepository;
private readonly IRepository _customerOrgRepository;
private readonly CustomerOrgManager _customerOrgManager;
private readonly IRepository _customerOrgRegisterRepository;
private readonly IRepository _customerOrgGroupRepository;
private readonly IRepository _customerOrgGroupDetailRepository;
private readonly IRepository _patientRepository;
private readonly IRepository _nationRepository;
private readonly ILogger _logger;
private readonly IRepository _identityUserRepository;
private readonly IRepository _medicalConclusionRepository;
private readonly IRepository _patientRegisterRepository;
private readonly IRepository _registerCheckRepository;
private readonly IRepository _registerCheckAsbitemRepository;
private readonly IRepository _registerCheckItemRepository;
private readonly RegisterCheckItemManager _registerCheckItemManager;
private readonly UnitOfWorkManager _unitOfWorkManager;
private readonly IRepository _registerCheckSummaryRepository;
private readonly IRepository _sumSummaryHeaderRepository;
private readonly IRepository _sumSummaryContentRepository;
private readonly IRepository _sumSuggestionHeaderRepository;
private readonly IRepository _sumSuggestionContentRepository;
private readonly IRepository _sumDiagnosisRepository;
private readonly IRepository _reportRepository;
private readonly IRepository _reportFormatRepository;
private readonly IRepository _reportFormatTemplateRepository;
private readonly IRepository _sampleGroupRepository;
private readonly IRepository _sampleGroupDetailRepository;
private readonly IRepository _sysParmTypeRepository;
private readonly IRepository _sysParmRepository;
private readonly IRepository _sysParmValueRepository;
private readonly IRepository _collectItemTypeRepository;
private Dictionary veryPatientNo = new Dictionary();
public BaseDataHandleAppService(
IRepository deviceTypeRepository,
IRepository itemTypeRepository,
ItemTypeManager itemTypeManager,
IRepository unitRepository,
IRepository medicalTypeRepository,
IRepository personnelTypeRepository,
IRepository invoiceItemTypeRepository,
IRepository fieldComparisonRepository,
IRepository sampleTypeRepository,
IRepository
- itemRepository,
IRepository referenceRangeRepository,
IRepository asbitemRepository,
IRepository asbitemDetailRepository,
IRepository medicalPackageRepository,
IRepository medicalPackageDetailRepository,
IRepository itemResultTemplateRepository,
IRepository itemResultMatchRepository,
IRepository diagnosisRepository,
IRepository suggestionRepository,
MyUserAppService myUserAppService,
IRepository menuInfoRepository,
IRepository customerOrgRepository,
CustomerOrgManager customerOrgManager,
IRepository customerOrgRegisterRepository,
IRepository customerOrgGroupRepository,
IRepository customerOrgGroupDetailRepository,
IRepository nationRepository,
IRepository patientRepository,
ILogger logger,
IRepository identityUserRepository,
IRepository medicalConclusionRepository,
IRepository patientRegisterRepository,
IRepository registerCheckRepository,
IRepository registerCheckAsbitemRepository,
IRepository registerCheckItemRepository,
RegisterCheckItemManager registerCheckItemManager,
UnitOfWorkManager unitOfWorkManager,
IRepository registerCheckSummaryRepository,
IRepository sumSummaryHeaderRepository,
IRepository sumSummaryContentRepository,
IRepository sumSuggestionHeaderRepository,
IRepository sumSuggestionContentRepository,
IRepository sumDiagnosisRepository,
IRepository reportRepository,
IRepository reportFormatRepository,
IRepository reportFormatTemplateRepository,
IRepository sampleGroupRepository,
IRepository sampleGroupDetailRepository,
IRepository sysParmTypeRepository,
IRepository sysParmRepository,
IRepository sysParmValueRepository,
IRepository collectItemTypeRepository)
{
_deviceTypeRepository = deviceTypeRepository;
_itemTypeRepository = itemTypeRepository;
_itemTypeManager = itemTypeManager;
_unitRepository = unitRepository;
_medicalTypeRepository = medicalTypeRepository;
_personnelTypeRepository = personnelTypeRepository;
_invoiceItemTypeRepository = invoiceItemTypeRepository;
_fieldComparisonRepository = fieldComparisonRepository;
_sampleTypeRepository = sampleTypeRepository;
_itemRepository = itemRepository;
_referenceRangeRepository = referenceRangeRepository;
_asbitemRepository = asbitemRepository;
_asbitemDetailRepository = asbitemDetailRepository;
_medicalPackageRepository = medicalPackageRepository;
_medicalPackageDetailRepository = medicalPackageDetailRepository;
_itemResultTemplateRepository = itemResultTemplateRepository;
_ItemResultMatchRepository = itemResultMatchRepository;
_diagnosisRepository = diagnosisRepository;
_suggestionRepository = suggestionRepository;
_myUserAppService = myUserAppService;
_menuInfoRepository = menuInfoRepository;
_customerOrgRepository = customerOrgRepository;
_customerOrgManager = customerOrgManager;
_customerOrgRegisterRepository = customerOrgRegisterRepository;
_customerOrgGroupRepository = customerOrgGroupRepository;
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
_nationRepository = nationRepository;
_patientRepository = patientRepository;
_logger = logger;
_identityUserRepository = identityUserRepository;
_medicalConclusionRepository = medicalConclusionRepository;
_patientRegisterRepository = patientRegisterRepository;
_registerCheckRepository = registerCheckRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_registerCheckItemRepository = registerCheckItemRepository;
_registerCheckItemManager = registerCheckItemManager;
_unitOfWorkManager = unitOfWorkManager;
_registerCheckSummaryRepository = registerCheckSummaryRepository;
_sumSummaryHeaderRepository = sumSummaryHeaderRepository;
_sumSummaryContentRepository = sumSummaryContentRepository;
_sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
_sumSuggestionContentRepository = sumSuggestionContentRepository;
_sumDiagnosisRepository = sumDiagnosisRepository;
_reportRepository = reportRepository;
_reportFormatRepository = reportFormatRepository;
_reportFormatTemplateRepository = reportFormatTemplateRepository;
_sampleGroupRepository = sampleGroupRepository;
_sampleGroupDetailRepository = sampleGroupDetailRepository;
_sysParmTypeRepository = sysParmTypeRepository;
_sysParmRepository = sysParmRepository;
_sysParmValueRepository = sysParmValueRepository;
_collectItemTypeRepository = collectItemTypeRepository;
}
///
/// 手动添加字段对照
///
///
///
[HttpPost]
public async Task CreateFieldComparisonAsync(CreateFieldComparisonDto input)
{
FieldComparison fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = input.NewKeyValue,
OldKeyValue = input.OldKeyValue,
TableName = input.TableName
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
}
///
/// 处理基础数据
///
///
public async Task HandBaseData()
{
await TransferDeviceTypeData();
await TransferUnitData();
await TransferMedicalTypeData();
await TransferPersonnelTypeData();
await TransferInvoiceItemTypeData();
await TransferCollectItemTypeData();
await TransferItemTypeData();
await TransferSampleTypeData();
await TransferNationData();
await TransferMedicalConclusionData();
}
///
/// 处理基础项目相关数据
///
///
public async Task HandBaseItemData()
{
await TransferItemData();
await TransferAsbitemData();
await TransferAsbitemDetailData();
await TransferMedicalPackageData();
await TransferMedicalPackageDetailData();
await TransferDiagnosisData();
await TransferSuggestionData();
await TransferItemResultTemplateData();
await TransferItemResultMatchData();
await TransferReferenceRangeData();
await TransferSampleGroupData();
await TransferSampleGroupDetailData();
await TransferTopCustomerOrgData();
await TransferTwoCustomerOrgData();
await TransferThreeCustomerOrgData();
await TransferCustomerOrgRegisterData();
await TransferCustomerOrgGroupData();
}
#region 基础数据
///
/// 迁移仪器类别数据
///
///
[RemoteService(false)]
public async Task TransferDeviceTypeData()
{
var count = await _deviceTypeRepository.GetCountAsync();
if (count == 0)
{
var oldDeviceTypeList = await Db.Ado.GetDataTableAsync("select device_type_id,device_type_name from device_type order by display_order asc");
if (oldDeviceTypeList.Rows.Count > 0)
{
foreach (DataRow row in oldDeviceTypeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid deviceTypeId = GuidGenerator.Create();
var data = new DeviceType(deviceTypeId)
{
CheckTypeFlag = '0',
DisplayName = row["device_type_name"].ToString(),
DisplayOrder = oldDeviceTypeList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["device_type_name"].ToString())
};
await _deviceTypeRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "device_type",
FieldName = "id",
NewKeyValue = deviceTypeId.ToString(),
OldKeyValue = row["device_type_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"仪器类别数据处理完毕,处理数量{oldDeviceTypeList.Rows.Count}");
}
else
{
_logger.LogInformation("仪器类别数据已存在,未处理");
}
}
///
/// 迁移数值单位数据
///
///
[RemoteService(false)]
public async Task TransferUnitData()
{
var count = await _unitRepository.GetCountAsync();
if (count == 0)
{
var oldUnitList = await Db.Ado.GetDataTableAsync("select unit_id,unit_name from unit order by display_order asc");
if (oldUnitList.Rows.Count > 0)
{
foreach (DataRow row in oldUnitList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid unitId = GuidGenerator.Create();
var data = new Unit(unitId)
{
DisplayName = row["unit_name"].ToString(),
DisplayOrder = oldUnitList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["unit_name"].ToString())
};
await _unitRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "unit",
FieldName = "id",
NewKeyValue = unitId.ToString(),
OldKeyValue = row["unit_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
_logger.LogInformation($"数值单位数据处理完毕,处理数量{oldUnitList.Rows.Count}");
}
else
{
_logger.LogInformation($"数值单位数据已存在,未处理");
}
}
}
///
/// 迁移体检类别数据
///
///
[RemoteService(false)]
public async Task TransferMedicalTypeData()
{
var count = await _medicalTypeRepository.GetCountAsync();
if (count == 0)
{
var oldMedicalTypeList = await Db.Ado.GetDataTableAsync("select medical_type_id,medical_type_name from medical_type order by display_order asc");
if (oldMedicalTypeList.Rows.Count > 0)
{
foreach (DataRow row in oldMedicalTypeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid medicalTypeId = GuidGenerator.Create();
var data = new MedicalType(medicalTypeId)
{
DisplayName = row["medical_type_name"].ToString(),
DisplayOrder = oldMedicalTypeList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_type_name"].ToString())
};
await _medicalTypeRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "medical_type",
FieldName = "id",
NewKeyValue = medicalTypeId.ToString(),
OldKeyValue = row["medical_type_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
_logger.LogInformation($"体检类别数据处理完毕,处理数量{oldMedicalTypeList.Rows.Count}");
}
else
{
_logger.LogInformation($"体检类别数据已存在,未处理");
}
}
}
///
/// 迁移人员类别数据
///
///
[RemoteService(false)]
public async Task TransferPersonnelTypeData()
{
var count = await _personnelTypeRepository.GetCountAsync();
if (count == 0)
{
var oldPersonnelTypeList = await Db.Ado.GetDataTableAsync("select personnel_type_id,personnel_type_name from personnel_type order by display_order asc");
if (oldPersonnelTypeList.Rows.Count > 0)
{
foreach (DataRow row in oldPersonnelTypeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid personnelTypeId = GuidGenerator.Create();
var data = new PersonnelType(personnelTypeId)
{
DisplayName = row["personnel_type_name"].ToString(),
DisplayOrder = oldPersonnelTypeList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["personnel_type_name"].ToString())
};
await _personnelTypeRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "personnel_type",
FieldName = "id",
NewKeyValue = personnelTypeId.ToString(),
OldKeyValue = row["personnel_type_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"人员类别数据处理完毕,处理数量{oldPersonnelTypeList.Rows.Count}");
}
else
{
_logger.LogInformation($"人员类别数据已存在,未处理");
}
}
///
/// 迁移发票项目类别数据
///
///
[RemoteService(false)]
public async Task TransferInvoiceItemTypeData()
{
var count = await _invoiceItemTypeRepository.GetCountAsync();
if (count == 0)
{
var oldInvoiceItemTypeList = await Db.Ado.GetDataTableAsync("select invoice_item_type_id,invoice_item_type_name from invoice_item_type order by display_order asc");
if (oldInvoiceItemTypeList.Rows.Count > 0)
{
foreach (DataRow row in oldInvoiceItemTypeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid invoiceItemTypeId = GuidGenerator.Create();
var data = new InvoiceItemType(invoiceItemTypeId)
{
DisplayName = row["invoice_item_type_name"].ToString(),
DisplayOrder = oldInvoiceItemTypeList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["invoice_item_type_name"].ToString())
};
await _invoiceItemTypeRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "invoice_item_type",
FieldName = "id",
NewKeyValue = invoiceItemTypeId.ToString(),
OldKeyValue = row["invoice_item_type_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"发票项目类别数据处理完毕,处理数量{oldInvoiceItemTypeList.Rows.Count}");
}
else
{
_logger.LogInformation($"发票项目类别数据已存在,未处理");
}
}
///
/// 迁移汇总项目类别数据
///
///
[RemoteService(false)]
public async Task TransferCollectItemTypeData()
{
var count = await _collectItemTypeRepository.GetCountAsync();
if (count == 0)
{
var oldCollectItemTypeList = await Db.Ado.GetDataTableAsync("select collect_item_type_id,collect_item_type_name,invoice_item_type_id from collect_item_type order by display_order asc");
if (oldCollectItemTypeList.Rows.Count > 0)
{
foreach (DataRow row in oldCollectItemTypeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid collectItemTypeId = GuidGenerator.Create();
Guid invoiceItemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "invoice_item_type" && m.OldKeyValue == row["invoice_item_type_id"].ToString()).FirstOrDefault().NewKeyValue);
var data = new CollectItemType(collectItemTypeId)
{
DisplayName = row["collect_item_type_name"].ToString(),
DisplayOrder = oldCollectItemTypeList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["collect_item_type_name"].ToString()),
InvoiceItemTypeId = invoiceItemTypeId
};
await _collectItemTypeRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "collect_item_type",
FieldName = "id",
NewKeyValue = collectItemTypeId.ToString(),
OldKeyValue = row["collect_item_type_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
_logger.LogInformation($"汇总项目类别数据处理完毕,处理数量{oldCollectItemTypeList.Rows.Count}");
}
else
{
_logger.LogInformation($"汇总项目类别数据已存在,未处理");
}
}
}
///
/// 迁移项目类别-科室数据
///
///
[RemoteService(false)]
public async Task TransferItemTypeData()
{
var count = await _itemTypeRepository.GetCountAsync();
if (count == 0)
{
var oldItemTypeList = await Db.Ado.GetDataTableAsync("select department_id,department_type,department_name,merge_asbitem_flag from department order by display_order asc");
if (oldItemTypeList.Rows.Count > 0)
{
foreach (DataRow row in oldItemTypeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid itemTypeId = GuidGenerator.Create();
var data = new ItemType(itemTypeId)
{
DisplayName = row["department_name"].ToString(),
DisplayOrder = oldItemTypeList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["department_name"].ToString()),
CheckTypeFlag = Convert.ToChar(row["department_type"]),
GuidTypeId = defaultGuidTypeId,
IsMergeAsbitem = Convert.ToChar(row["merge_asbitem_flag"]),
IsWrap = 'N',
MedicalReportTypeId = defaultMedicalReportTypeId,
ParentId = null,
PathCode = _itemTypeManager.CreatePathCode(null).Result
};
await _itemTypeRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "item_type",
FieldName = "id",
NewKeyValue = itemTypeId.ToString(),
OldKeyValue = row["department_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"项目类别数据处理完毕,处理数量{oldItemTypeList.Rows.Count}");
}
else
{
_logger.LogInformation($"项目类别数据已存在,未处理");
}
}
///
/// 迁移标本类型数据
///
///
[RemoteService(false)]
public async Task TransferSampleTypeData()
{
var count = await _sampleTypeRepository.GetCountAsync();
if (count == 0)
{
var oldSampleTypeList = await Db.Ado.GetDataTableAsync("select specimen_type_id,specimen_type_name from specimen_type order by display_order asc");
if (oldSampleTypeList.Rows.Count > 0)
{
foreach (DataRow row in oldSampleTypeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid sampleTypeId = GuidGenerator.Create();
var data = new SampleType(sampleTypeId)
{
DisplayName = row["specimen_type_name"].ToString(),
DisplayOrder = oldSampleTypeList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["specimen_type_name"].ToString())
};
await _sampleTypeRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "sample_type",
FieldName = "id",
NewKeyValue = sampleTypeId.ToString(),
OldKeyValue = row["specimen_type_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"标本类型数据处理完毕,处理数量{oldSampleTypeList.Rows.Count}");
}
else
{
_logger.LogInformation($"标本类型数据已存在,未处理");
}
}
///
/// 民族数据对照
///
///
[RemoteService(false)]
public async Task TransferNationData()
{
var newNationList = await _nationRepository.GetListAsync();
var oldNationList = await Db.Ado.GetDataTableAsync("select * from nation");
if (oldNationList.Rows.Count > 0)
{
foreach (DataRow row in oldNationList.Rows)
{
string oldName = row["nation_name"].ToString(); //老系统名称
var newNationEnt = newNationList.Where(m => m.DisplayName.Contains(oldName)).FirstOrDefault();
if (newNationEnt != null)
{
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = newNationEnt.Id.ToString(),
OldKeyValue = row["nation_id"].ToString(),
TableName = "nation"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
}
}
_logger.LogInformation($"民族数据处理完毕,处理数量{oldNationList.Rows.Count}");
}
else
{
_logger.LogInformation($"民族数据无需处理");
}
}
///
/// 迁移体检结论数据
///
///
[RemoteService(false)]
public async Task TransferMedicalConclusionData()
{
var count = await _medicalConclusionRepository.GetCountAsync();
if (count == 0)
{
var oldMedicalConclusionList = await Db.Ado.GetDataTableAsync("select medical_conclusion_id,medical_conclusion_name from medical_conclusion order by display_order asc");
if (oldMedicalConclusionList.Rows.Count > 0)
{
foreach (DataRow row in oldMedicalConclusionList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid medicalConclusionId = GuidGenerator.Create();
var data = new MedicalConclusion(medicalConclusionId)
{
DisplayName = row["medical_conclusion_name"].ToString(),
DisplayOrder = oldMedicalConclusionList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_conclusion_name"].ToString()),
MedicalConclusionTypeId = defaultMedicalConclusionType
};
await _medicalConclusionRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "medical_conclusion",
FieldName = "id",
NewKeyValue = medicalConclusionId.ToString(),
OldKeyValue = row["medical_conclusion_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"体检结论数据处理完毕,处理数量{oldMedicalConclusionList.Rows.Count}");
}
else
{
_logger.LogInformation("体检结论数据已存在,未处理");
}
}
#endregion
#region 基础项目相关数据
///
/// 迁移项目数据
///
///
[RemoteService(false)]
public async Task TransferItemData()
{
var count = await _itemRepository.GetCountAsync();
if (count == 0)
{
var oldItemList = await Db.Ado.GetDataTableAsync("select * from item ");
if (oldItemList.Rows.Count > 0)
{
foreach (DataRow row in oldItemList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 根据仪器类别生成二级科室
var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid? deviceTypeId = null;
if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
{
deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue);
var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
if (itemTypeChildEnt == null)
{
Guid autoItemTypeId = GuidGenerator.Create();
#region 排序值
int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
#endregion
var item_type_data = new ItemType(autoItemTypeId)
{
DisplayName = deviceTypeEnt.DisplayName,
DisplayOrder = displayOrder,
SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
GuidTypeId = itemTypeEnt.GuidTypeId,
IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
IsWrap = itemTypeEnt.IsWrap,
MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
ParentId = itemTypeEnt.Id,
PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result
};
await _itemTypeRepository.InsertAsync(item_type_data);
itemTypeId = autoItemTypeId;
}
else
{
itemTypeId = itemTypeChildEnt.Id;
}
}
#endregion
Guid? unitId = null;
if (!string.IsNullOrWhiteSpace(row["unit_id"].ToString()))
unitId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "unit" && m.OldKeyValue == row["unit_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid itemId = GuidGenerator.Create();
var data = new Item(itemId)
{
DisplayName = row["item_name"].ToString(),
DisplayOrder = oldItemList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["item_name"].ToString()),
CalculationFunction = "",
DefaultResult = row["default_result"].ToString(),
DiagnosisFunction = "",
EnglishShortName = row["english_abbreviation"].ToString(),
InputCheck = row["input_check"].ToString(),
IsActive = Convert.ToChar(row["valid_flag"].ToString()),
IsCalculationItem = 'N',
IsContinueProcess = 'N',
IsDiagnosisFunction = 'N',
IsNameIntoSummary = Convert.ToChar(row["name_into_summary_flag"]),
IsProduceSummary = Convert.ToChar(row["produce_summary_flag"]),
ItemTypeId = itemTypeId,
LineModeFlag = '0',
Price = Convert.ToDecimal(row["price"]),
PriceItemId = null,
ReferenceRangeTypeFlag = Convert.ToChar(row["reference_range_type"]),
ResultTemplateTypeFlag = '0',
UnitId = unitId,
DeviceTypeId = deviceTypeId
};
await _itemRepository.InsertAsync(data);
if (row["reference_range_type"].ToString() == "2" && !string.IsNullOrWhiteSpace(row["reference_range_value"].ToString()))
{
//增加字符型参考范围到参考范围表
Guid referenceRangeId = GuidGenerator.Create();
var referenceRange = new ReferenceRange(referenceRangeId)
{
AgeLowerLimit = 0,
AgeUpperLimit = 200,
CriticalRangeValue = "",
ItemId = itemId,
LowerDiagnosisId = null,
ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Character,
UpperDiagnosisId = null,
ReferenceRangeValue = row["reference_range_value"].ToString()
};
//referenceRanges.Add(referenceRange);
await _referenceRangeRepository.InsertAsync(referenceRange);
}
var fieldComparison = new FieldComparison
{
TableName = "item",
FieldName = "id",
NewKeyValue = itemId.ToString(),
OldKeyValue = row["item_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"项目数据处理完毕,处理数量{oldItemList.Rows.Count}");
}
else
{
_logger.LogInformation("项目数据已存在,未处理");
}
}
///
/// 迁移组合项目数据
///
///
[RemoteService(false)]
public async Task TransferAsbitemData()
{
var count = await _asbitemRepository.GetCountAsync();
if (count == 0)
{
var oldAsbitemList = await Db.Ado.GetDataTableAsync("select * from asbitem ");
if (oldAsbitemList.Rows.Count > 0)
{
foreach (DataRow row in oldAsbitemList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 根据仪器类别生成二级科室
var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid? deviceTypeId = null;
if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
{
deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue);
var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
if (itemTypeChildEnt == null)
{
Guid autoItemTypeId = GuidGenerator.Create();
#region 排序值
int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
#endregion
var item_type_data = new ItemType(autoItemTypeId)
{
DisplayName = deviceTypeEnt.DisplayName,
DisplayOrder = displayOrder,
SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
GuidTypeId = itemTypeEnt.GuidTypeId,
IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
IsWrap = itemTypeEnt.IsWrap,
MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
ParentId = itemTypeEnt.Id,
PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result
};
await _itemTypeRepository.InsertAsync(item_type_data);
itemTypeId = autoItemTypeId;
}
else
{
itemTypeId = itemTypeChildEnt.Id;
}
}
#endregion
Guid collectItemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "collect_item_type" && m.OldKeyValue == row["collect_item_type_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid asbitemId = GuidGenerator.Create();
var data = new Asbitem(asbitemId)
{
DisplayName = row["asbitem_name"].ToString(),
DisplayOrder = oldAsbitemList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["asbitem_name"].ToString()),
DefaultResult = row["default_result"].ToString(),
DiagnosisFunction = "",
IsActive = Convert.ToChar(row["valid_flag"].ToString()),
IsContinueProcess = 'N',
IsDiagnosisFunction = 'N',
ItemTypeId = itemTypeId,
Price = Convert.ToDecimal(row["price"]),
DeviceTypeId = deviceTypeId,
ClinicalMeaning = row["clinical_meaning"].ToString(),
ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
CollectItemTypeId = collectItemTypeId,
//InvoiceItemTypeId = InvoiceItemTypeId,
IsBeforeEat = Convert.ToChar(row["before_eat_flag"].ToString()),
IsCheck = Convert.ToChar(row["check_flag"].ToString()),
IsItemResultMerger = Convert.ToChar(row["item_result_merger_flag"].ToString()),
IsPictureRotate = Convert.ToChar(row["picture_rotate_flag"].ToString()),
QueueTime = string.IsNullOrEmpty(row["queue_time"].ToString()) ? 0 : Convert.ToDecimal(row["queue_time"].ToString()),
ShortName = row["short_name"].ToString()
};
await _asbitemRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "asbitem",
FieldName = "id",
NewKeyValue = asbitemId.ToString(),
OldKeyValue = row["asbitem_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"组合项目数据处理完毕,处理数量{oldAsbitemList.Rows.Count}");
}
else
{
_logger.LogInformation("组合项目数据已存在,未处理");
}
}
///
/// 迁移组合项目明细数据 无字典
///
///
[RemoteService(false)]
public async Task TransferAsbitemDetailData()
{
var count = await _asbitemDetailRepository.GetCountAsync();
if (count == 0)
{
var oldAsbitemDetailList = await Db.Ado.GetDataTableAsync("select * from asbitem_detail ");
if (oldAsbitemDetailList.Rows.Count > 0)
{
foreach (DataRow row in oldAsbitemDetailList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid itemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
var data = new AsbitemDetail
{
AsbitemId = asbitemId,
ItemId = itemId
};
await _asbitemDetailRepository.InsertAsync(data);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"组合项目明细数据处理完毕,处理数量{oldAsbitemDetailList.Rows.Count}");
}
else
{
_logger.LogInformation("组合项目明细数据已存在,未处理");
}
}
///
/// 迁移体检套餐数据
///
///
[RemoteService(false)]
public async Task TransferMedicalPackageData()
{
var count = await _medicalPackageRepository.GetCountAsync();
if (count == 0)
{
var oldMedicalPackageList = await Db.Ado.GetDataTableAsync("select * from medical_package ");
if (oldMedicalPackageList.Rows.Count > 0)
{
foreach (DataRow row in oldMedicalPackageList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid medicalPackageId = GuidGenerator.Create();
var data = new MedicalPackage(medicalPackageId)
{
DisplayName = row["medical_package_name"].ToString(),
DisplayOrder = oldMedicalPackageList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_package_name"].ToString()),
ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
IsActive = Convert.ToChar(row["valid_flag"].ToString()),
Price = Convert.ToDecimal(row["price"].ToString()),
Remark = row["remark"].ToString()
};
await _medicalPackageRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "medical_package",
FieldName = "id",
NewKeyValue = medicalPackageId.ToString(),
OldKeyValue = row["medical_package_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"体检套餐数据处理完毕,处理数量{oldMedicalPackageList.Rows.Count}");
}
else
{
_logger.LogInformation("体检套餐数据已存在,未处理");
}
}
///
/// 迁移体检套餐明细数据 无字典
///
///
[RemoteService(false)]
public async Task TransferMedicalPackageDetailData()
{
var count = await _medicalPackageDetailRepository.GetCountAsync();
if (count == 0)
{
var oldMedicalPackageDetailList = await Db.Ado.GetDataTableAsync("select * from medical_package_detail ");
if (oldMedicalPackageDetailList.Rows.Count > 0)
{
foreach (DataRow row in oldMedicalPackageDetailList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid MedicalPackageId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault().NewKeyValue);
var asbitemEnt = await _asbitemRepository.GetAsync(asbitemId);
var data = new MedicalPackageDetail
{
AsbitemId = asbitemId,
Amount = 1,
MedicalPackageId = MedicalPackageId,
Price = asbitemEnt.Price
};
await _medicalPackageDetailRepository.InsertAsync(data);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"体检套餐明细数据处理完毕,处理数量{oldMedicalPackageDetailList.Rows.Count}");
}
else
{
_logger.LogInformation("体检套餐明细数据已存在,未处理");
}
}
///
/// 迁移诊断设置数据
///
///
[RemoteService(false)]
public async Task TransferDiagnosisData()
{
var count = await _diagnosisRepository.GetCountAsync();
if (count == 0)
{
var oldDiagnosisList = await Db.Ado.GetDataTableAsync("select * from diagnosis ");
if (oldDiagnosisList.Rows.Count > 0)
{
foreach (DataRow row in oldDiagnosisList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 根据仪器类别生成二级科室
var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid? deviceTypeId = null;
if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString()))
{
var fieldComparisonEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault();
if (fieldComparisonEnt != null)
{
deviceTypeId = Guid.Parse(fieldComparisonEnt.NewKeyValue);
var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId);
var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value);
var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName);
if (itemTypeChildEnt == null)
{
Guid autoItemTypeId = GuidGenerator.Create();
#region 排序值
int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1;
#endregion
var item_type_data = new ItemType(autoItemTypeId)
{
DisplayName = deviceTypeEnt.DisplayName,
DisplayOrder = displayOrder,
SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName),
CheckTypeFlag = itemTypeEnt.CheckTypeFlag,
GuidTypeId = itemTypeEnt.GuidTypeId,
IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem,
IsWrap = itemTypeEnt.IsWrap,
MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId,
ParentId = itemTypeEnt.Id,
PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result
};
await _itemTypeRepository.InsertAsync(item_type_data);
itemTypeId = autoItemTypeId;
}
else
{
itemTypeId = itemTypeChildEnt.Id;
}
}
}
#endregion
Guid diagnosisId = GuidGenerator.Create();
var data = new Diagnosis(diagnosisId)
{
DisplayName = row["diagnosis_name"].ToString(),
DisplayOrder = oldDiagnosisList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["diagnosis_name"].ToString()),
ItemTypeId = itemTypeId,
DiagnosisLevelId = 1,
ForSexId = 'A',
IsIll = Convert.ToChar(row["ill_flag"].ToString()),
IsSummaryTemplate = Convert.ToChar(row["template_flag"].ToString()),
SuggestionName = row["suggestion_name"].ToString()
};
await _diagnosisRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "diagnosis",
FieldName = "id",
NewKeyValue = diagnosisId.ToString(),
OldKeyValue = row["diagnosis_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"诊断设置数据处理完毕,处理数量{oldDiagnosisList.Rows.Count}");
}
else
{
_logger.LogInformation("诊断设置数据已存在,未处理");
}
}
///
/// 迁移诊断建议数据
///
///
[RemoteService(false)]
public async Task TransferSuggestionData()
{
var count = await _suggestionRepository.GetCountAsync();
if (count == 0)
{
var oldSuggestionList = await Db.Ado.GetDataTableAsync("select * from suggestion ");
if (oldSuggestionList.Rows.Count > 0)
{
foreach (DataRow row in oldSuggestionList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid DiagnosisId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid suggestionId = GuidGenerator.Create();
var data = new Suggestion(suggestionId)
{
DisplayOrder = oldSuggestionList.Rows.IndexOf(row) + 1,
DiagnosisId = DiagnosisId,
SuggestionType = SuggestionTypeFlag.HealthGuidance,
SuggestionContent = row["suggestion_content"].ToString()
};
await _suggestionRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "suggestion",
FieldName = "id",
NewKeyValue = suggestionId.ToString(),
OldKeyValue = row["suggestion_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"诊断建议数据处理完毕,处理数量{oldSuggestionList.Rows.Count}");
}
else
{
_logger.LogInformation("诊断建议数据已存在,未处理");
}
}
///
/// 迁移项目结果模板数据
///
///
[RemoteService(false)]
public async Task TransferItemResultTemplateData()
{
var count = await _itemResultTemplateRepository.GetCountAsync();
if (count == 0)
{
var oldItemResultTemplateList = await Db.Ado.GetDataTableAsync("select * from item_result_template ");
if (oldItemResultTemplateList.Rows.Count > 0)
{
foreach (DataRow row in oldItemResultTemplateList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid? DiagnosisId = null;
if (!string.IsNullOrWhiteSpace(row["diagnosis_id"].ToString()))
{
var fieldComparisonDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
if (fieldComparisonDiagnosisEnt != null)
{
DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue);
}
}
Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid itemResultTemplateId = GuidGenerator.Create();
var data = new ItemResultTemplate(itemResultTemplateId)
{
DisplayOrder = oldItemResultTemplateList.Rows.IndexOf(row) + 1,
DiagnosisId = DiagnosisId,
IsNameIntoSummary = Convert.ToChar(row["name_into_summary_flag"].ToString()),
IsResultIntoSummary = Convert.ToChar(row["result_into_summary_flag"].ToString()),
ItemId = ItemId,
Result = row["result"].ToString(),
SimpleCode = LanguageConverter.GetPYSimpleCode(row["result"].ToString()),
ResultStatusId = row["result_status_id"].ToString()
};
await _itemResultTemplateRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "item_result_template",
FieldName = "id",
NewKeyValue = itemResultTemplateId.ToString(),
OldKeyValue = row["item_result_template_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"项目结果模板数据处理完毕,处理数量{oldItemResultTemplateList.Rows.Count}");
}
else
{
_logger.LogInformation("项目结果模板数据已存在,未处理");
}
}
///
/// 迁移项目结果匹配数据
///
///
[RemoteService(false)]
public async Task TransferItemResultMatchData()
{
var count = await _ItemResultMatchRepository.GetCountAsync();
if (count == 0)
{
var oldItemResultMatchList = await Db.Ado.GetDataTableAsync("select * from item_result_match ");
if (oldItemResultMatchList.Rows.Count > 0)
{
foreach (DataRow row in oldItemResultMatchList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
var fieldComparisonDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
if (fieldComparisonDiagnosisEnt != null)
{
Guid DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue);
Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid itemResultMatchId = GuidGenerator.Create();
var data = new ItemResultMatch(itemResultMatchId)
{
DisplayOrder = oldItemResultMatchList.Rows.IndexOf(row) + 1,
DiagnosisId = DiagnosisId,
ItemId = ItemId,
Result = row["result"].ToString()
};
var ent = await _ItemResultMatchRepository.InsertAsync(data, true);
var fieldComparison = new FieldComparison
{
TableName = "item_result_match",
FieldName = "id",
NewKeyValue = ent.Id.ToString(),
OldKeyValue = row["item_result_match_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
}
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"项目结果匹配数据处理完毕,处理数量{oldItemResultMatchList.Rows.Count}");
}
else
{
_logger.LogInformation("项目结果匹配数据已存在,未处理");
}
}
///
/// 迁移项目参考范围数据 无字典
///
///
[RemoteService(false)]
public async Task TransferReferenceRangeData()
{
var count = (await _referenceRangeRepository.GetQueryableAsync()).Where(m => m.ReferenceRangeTypeFlag != ItemReferenceRangeTypeFlag.Character).Count();
if (count == 0)
{
var oldReferenceRangeList = await Db.Ado.GetDataTableAsync("select * from reference_range ");
if (oldReferenceRangeList.Rows.Count > 0)
{
foreach (DataRow row in oldReferenceRangeList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid? LowerDiagnosisId = null;
Guid? UpperDiagnosisId = null;
var fieldComparisonLowerDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["lower_diagnosis_id"].ToString()).FirstOrDefault();
var fieldComparisonUpperDiagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["upper_diagnosis_id"].ToString()).FirstOrDefault();
if (fieldComparisonLowerDiagnosisEnt != null)
{
LowerDiagnosisId = Guid.Parse(fieldComparisonLowerDiagnosisEnt.NewKeyValue);
}
if (fieldComparisonUpperDiagnosisEnt != null)
{
UpperDiagnosisId = Guid.Parse(fieldComparisonUpperDiagnosisEnt.NewKeyValue);
}
Guid ItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid referenceRangeId = GuidGenerator.Create();
var data = new ReferenceRange(referenceRangeId)
{
ItemId = ItemId,
AgeLowerLimit = (short)Convert.ToInt32(row["age_lower_limit"].ToString()),
AgeUpperLimit = (short)Convert.ToInt32(row["age_upper_limit"].ToString()),
CriticalRangeValue = string.Empty,
ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
LowerDiagnosisId = LowerDiagnosisId,
ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Number,
ReferenceRangeValue = Convert.ToDecimal(row["lower_limit"].ToString()).ToString("#0.####") + "-" + Convert.ToDecimal(row["upper_limit"].ToString()).ToString("#0.####"),
UpperDiagnosisId = UpperDiagnosisId
};
await _referenceRangeRepository.InsertAsync(data);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"项目参考范围数据处理完毕,处理数量{oldReferenceRangeList.Rows.Count}");
}
else
{
_logger.LogInformation("项目参考范围数据已存在,未处理");
}
}
///
/// 迁移条码分组数据
///
///
[RemoteService(false)]
public async Task TransferSampleGroupData()
{
var count = await _sampleGroupRepository.GetCountAsync();
if (count == 0)
{
//获取一条条码类型的数据
Guid defaultSampleTypeId = Guid.Empty;
var sampleTypeEnt = await _sampleTypeRepository.FirstOrDefaultAsync();
if (sampleTypeEnt != null)
{
defaultSampleTypeId = sampleTypeEnt.Id;
}
if (defaultSampleTypeId != Guid.Empty)
{
var oldSampleGroupList = await Db.Ado.GetDataTableAsync("select * from vessels_type order by display_order asc");
if (oldSampleGroupList.Rows.Count > 0)
{
foreach (DataRow row in oldSampleGroupList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 转成成新的标本类型ID
Guid newSampleTypeId = defaultSampleTypeId; //默认取其他 ID
if (!string.IsNullOrWhiteSpace(row["specimen_type_id"].ToString()))
{
var oldSampleType = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "sample_type" && m.OldKeyValue == row["specimen_type_id"].ToString()).FirstOrDefault();
if (oldSampleType != null)
{
newSampleTypeId = Guid.Parse(oldSampleType.NewKeyValue);
}
}
#endregion
Guid sampleGroupId = GuidGenerator.Create();
var data = new SampleGroup(sampleGroupId)
{
DisplayName = row["vessels_type_name"].ToString(),
DisplayOrder = oldSampleGroupList.Rows.IndexOf(row) + 1,
SimpleCode = LanguageConverter.GetPYSimpleCode(row["vessels_type_name"].ToString()),
SampleContainerId = defaultSampleContainerId,
SampleTypeId = newSampleTypeId
};
await _sampleGroupRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
TableName = "sample_group",
FieldName = "id",
NewKeyValue = sampleGroupId.ToString(),
OldKeyValue = row["vessels_type_id"].ToString()
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"条码分组数据处理完毕,处理数量{oldSampleGroupList.Rows.Count}");
}
else
{
_logger.LogInformation($"条码类型未获取到默认数据,跳过条码分组数据处理");
}
}
else
{
_logger.LogInformation("条码分组数据已存在,未处理");
}
}
///
/// 迁移条码分组明细数据
///
///
[RemoteService(false)]
public async Task TransferSampleGroupDetailData()
{
var count = await _sampleGroupDetailRepository.GetCountAsync();
if (count == 0)
{
var oldSampleGroupDetailList = await Db.Ado.GetDataTableAsync("select * from vessels_type_detail ");
if (oldSampleGroupDetailList.Rows.Count > 0)
{
foreach (DataRow row in oldSampleGroupDetailList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid newSampleGroupId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "sample_group" && m.OldKeyValue == row["vessels_type_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
var data = new SampleGroupDetail
{
AsbitemId = newAsbitemId,
SampleGroupId = newSampleGroupId
};
await _sampleGroupDetailRepository.InsertAsync(data);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"条码分组明细数据处理完毕,处理数量{oldSampleGroupDetailList.Rows.Count}");
}
else
{
_logger.LogInformation("条码分组明细数据已存在,未处理");
}
}
///
/// 迁移体检单位数据 一级
///
///
[RemoteService(false)]
public async Task TransferTopCustomerOrgData()
{
var count = await _customerOrgRepository.GetCountAsync();
if (count == 0)
{
var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from org where len(org_id)=5 order by display_order asc");
if (oldCustomerOrgList.Rows.Count > 0)
{
foreach (DataRow row in oldCustomerOrgList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid customerOrgId = GuidGenerator.Create();
#region 备注 导入联系人姓名、电话
string remark = "";
if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
{
remark = row["linkman"].ToString();
}
if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
{
if (!string.IsNullOrWhiteSpace(remark))
{
remark += "|" + row["telephone"].ToString();
}
else
{
remark = row["telephone"].ToString();
}
}
#endregion
var data = new CustomerOrg(customerOrgId)
{
Accounts = row["accounts"].ToString(),
Address = row["address"].ToString(),
Bank = row["bank"].ToString(),
DisplayName = row["org_name"].ToString(),
DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
Fax = row["fax"].ToString(),
InvoiceName = row["org_name"].ToString(),
IsActive = 'Y',
IsLock = Convert.ToChar(row["lock_flag"].ToString()),
MedicalCenterId = defaultMedicalCenterId,
OrgTypeId = defaultOrgTypeId, //默认为私营
ParentId = null,
PathCode = (oldCustomerOrgList.Rows.IndexOf(row) + 1).ToString().PadLeft(5, '0'),
PostalCode = row["postalcode"].ToString(),
Remark = remark,
ShortName = row["short_name"].ToString(),
SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
Telephone = row["telephone"].ToString(),
};
await _customerOrgRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = customerOrgId.ToString(),
OldKeyValue = row["org_id"].ToString(),
TableName = "customer_org"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"体检单位一级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
}
else
{
_logger.LogInformation("体检单位一级数据已存在,未处理");
}
}
///
/// 迁移体检单位数据 二级
///
///
[RemoteService(false)]
public async Task TransferTwoCustomerOrgData()
{
var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 5).Count();
if (count == 0)
{
var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=8 order by org_id asc");
if (oldCustomerOrgList.Rows.Count > 0)
{
List customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
foreach (DataRow row in oldCustomerOrgList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 查找上级ID
string oldId = row["org_id"].ToString();
string oldParentId = oldId.Substring(0, 5);
Guid parentId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault().NewKeyValue);
#endregion
Guid customerOrgId = GuidGenerator.Create();
#region 备注 导入联系人姓名、电话
string remark = "";
if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
{
remark = row["linkman"].ToString();
}
if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
{
if (!string.IsNullOrWhiteSpace(remark))
{
remark += "|" + row["telephone"].ToString();
}
else
{
remark = row["telephone"].ToString();
}
}
#endregion
var data = new CustomerOrg(customerOrgId)
{
Accounts = row["accounts"].ToString(),
Address = row["address"].ToString(),
Bank = row["bank"].ToString(),
DisplayName = row["org_name"].ToString(),
DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
Fax = row["fax"].ToString(),
InvoiceName = row["org_name"].ToString(),
IsActive = 'Y',
IsLock = Convert.ToChar(row["lock_flag"].ToString()),
MedicalCenterId = defaultMedicalCenterId,
OrgTypeId = defaultOrgTypeId, //默认为私营
ParentId = parentId,
PathCode = _customerOrgManager.CreatePathCode(parentId).Result,
PostalCode = row["postalcode"].ToString(),
Remark = remark,
ShortName = row["short_name"].ToString(),
SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
Telephone = row["telephone"].ToString(),
};
await _customerOrgRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = customerOrgId.ToString(),
OldKeyValue = row["org_id"].ToString(),
TableName = "customer_org"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"体检单位二级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
}
else
{
_logger.LogInformation("体检单位二级数据已存在,未处理");
}
}
///
/// 迁移体检单位数据 三级
///
///
[RemoteService(false)]
public async Task TransferThreeCustomerOrgData()
{
var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 11).Count();
if (count == 0)
{
var oldCustomerOrgList = await Db.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=11 order by org_id asc");
if (oldCustomerOrgList.Rows.Count > 0)
{
List customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
foreach (DataRow row in oldCustomerOrgList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 查找上级ID
string oldId = row["org_id"].ToString();
string oldParentId = oldId.Substring(0, 8);
Guid parentId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault().NewKeyValue);
#endregion
Guid customerOrgId = GuidGenerator.Create();
#region 备注 导入联系人姓名、电话
string remark = "";
if (!string.IsNullOrWhiteSpace(row["linkman"].ToString()))
{
remark = row["linkman"].ToString();
}
if (!string.IsNullOrWhiteSpace(row["telephone"].ToString()))
{
if (!string.IsNullOrWhiteSpace(remark))
{
remark += "|" + row["telephone"].ToString();
}
else
{
remark = row["telephone"].ToString();
}
}
#endregion
var data = new CustomerOrg(customerOrgId)
{
Accounts = row["accounts"].ToString(),
Address = row["address"].ToString(),
Bank = row["bank"].ToString(),
DisplayName = row["org_name"].ToString(),
DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1,
Fax = row["fax"].ToString(),
InvoiceName = row["org_name"].ToString(),
IsActive = 'Y',
IsLock = Convert.ToChar(row["lock_flag"].ToString()),
MedicalCenterId = defaultMedicalCenterId,
OrgTypeId = defaultOrgTypeId, //默认为私营
ParentId = parentId,
PathCode = _customerOrgManager.CreatePathCode(parentId).Result,
PostalCode = row["postalcode"].ToString(),
Remark = remark,
ShortName = row["short_name"].ToString(),
SimpleCode = LanguageConverter.GetPYSimpleCode(row["org_name"].ToString()),
Telephone = row["telephone"].ToString(),
};
await _customerOrgRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = customerOrgId.ToString(),
OldKeyValue = row["org_id"].ToString(),
TableName = "customer_org"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"体检单位三级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}");
}
else
{
_logger.LogInformation("体检单位三级数据已存在,未处理");
}
}
///
/// 迁移单位体检次数数据 无字典
///
///
[RemoteService(false)]
public async Task TransferCustomerOrgRegisterData()
{
var count = await _customerOrgRegisterRepository.GetCountAsync();
if (count == 0)
{
var oldCustomerOrgRegisterList = await Db.Ado.GetDataTableAsync("select * from org_medical_register");
if (oldCustomerOrgRegisterList.Rows.Count > 0)
{
List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
foreach (DataRow row in oldCustomerOrgRegisterList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid customerOrgRegisterId = GuidGenerator.Create();
if (customerOrgId == GuidFlag.PersonCustomerOrgId)
customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
var data = new CustomerOrgRegister(customerOrgRegisterId)
{
BeginTime = Convert.ToDateTime(row["start_time"].ToString()),
CustomerOrgId = customerOrgId,
EndTime = !string.IsNullOrWhiteSpace(row["end_time"].ToString()) ? Convert.ToDateTime(row["end_time"].ToString()) : null,
IsComplete = Convert.ToChar(row["complete_flag"].ToString()),
MedicalTimes = (short)Convert.ToInt32(row["org_medical_times"].ToString()),
RegisterName = "",
RegisterNo = ""
};
await _customerOrgRegisterRepository.InsertAsync(data);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"单位体检次数数据处理完毕,处理数量{oldCustomerOrgRegisterList.Rows.Count}");
}
else
{
_logger.LogInformation("单位体检次数数据已存在,未处理");
}
}
///
/// 迁移单位分组
///
///
[RemoteService(false)]
public async Task TransferCustomerOrgGroupData()
{
var count = await _customerOrgGroupRepository.GetCountAsync();
if (count == 0)
{
var oldCustomerOrgGroupList = await Db.Ado.GetDataTableAsync("select * from org_group order by display_order asc");
if (oldCustomerOrgGroupList.Rows.Count > 0)
{
List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
List customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
foreach (DataRow row in oldCustomerOrgGroupList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
//新系统单位ID
Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid customerOrgRegisterId = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
&& m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault().Id;
Guid customerOrgGroupId = GuidGenerator.Create();
var data = new CustomerOrgGroup(customerOrgGroupId)
{
AgeLowerLimit = (short)Convert.ToInt32(row["age_lower_limit"].ToString()),
AgeUpperLimit = (short)Convert.ToInt32(row["age_upper_limit"].ToString()),
CustomerOrgRegisterId = customerOrgRegisterId,
DisplayName = row["org_group_name"].ToString(),
DisplayOrder = oldCustomerOrgGroupList.Rows.IndexOf(row) + 1,
ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
JobPost = row["job_post"].ToString(),
JobTitle = row["job_title"].ToString(),
MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
Price = Convert.ToDecimal(row["price"].ToString()),
Remark = row["remark"].ToString()
};
await _customerOrgGroupRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = customerOrgGroupId.ToString(),
OldKeyValue = row["org_group_id"].ToString(),
TableName = "customer_org_group"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await uow.CompleteAsync();
}
}
}
_logger.LogInformation($"单位分组数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}");
}
else
{
_logger.LogInformation("单位分组数据已存在,未处理");
}
}
#endregion
#region 人员登记
///
/// 迁移人员登记数据
///
///
public async Task TransferPatientRegisterData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register' ");
var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc");
if (oldPatientRegisterList.Rows.Count > 0)
{
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set starttime=getdate() where tablename='patient_register' ");
List fieldComparisonList = await _fieldComparisonRepository.GetListAsync();
var userList = await _identityUserRepository.GetListAsync();
List customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
foreach (DataRow row in oldPatientRegisterList.Rows)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
//档案ID
Guid patientId = Guid.Empty;
#region 处理档案,未找到档案就生成
var patientEnt = await _patientRepository.FirstOrDefaultAsync(m => m.PatientNo == row["patient_id"].ToString());
if (patientEnt == null)
{
string nationId = null;
if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
{
nationId = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
}
Guid autoPatientId = GuidGenerator.Create(); //档案ID
var dataPatient = new Patient(autoPatientId)
{
Address = row["address"].ToString(),
BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
BirthPlaceId = null,
DisplayName = row["name"].ToString(),
Email = row["email"].ToString(),
IdNo = row["id_card_no"].ToString(),
MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
MedicalCenterId = defaultMedicalCenterId,
MobileTelephone = row["mobile_telephone"].ToString(),
NationId = nationId,
PatientNo = row["patient_id"].ToString(),
PatientPassword = row["patient_password"].ToString(),
PostalCode = row["postalcode"].ToString(),
SexId = ConvertSex(row["sex_id"].ToString()),
SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
Telephone = row["telephone"].ToString()
};
await _patientRepository.InsertAsync(dataPatient, true);
patientId = autoPatientId;
}
else
{
patientId = patientEnt.Id;
}
#endregion
Guid patientRegisterId = GuidGenerator.Create(); //生成登记ID
#region 转换审核医生ID
Guid? AuditDoctorId = null;
if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
{
var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
if (userEnt != null)
{
AuditDoctorId = userEnt.Id;
}
}
#endregion
#region 转换单位分组ID
Guid? customerOrgGroupId = null;
if (!string.IsNullOrWhiteSpace(row["org_group_id"].ToString()))
{
var customerOrgGroupEnt = fieldComparisonList.Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault();
if (customerOrgGroupEnt != null)
{
customerOrgGroupId = Guid.Parse(customerOrgGroupEnt.NewKeyValue);
}
}
#endregion
#region 转换单位ID 部门
Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString()).FirstOrDefault().NewKeyValue);
#endregion
#region 转换单位体检次数ID 没有增加默认值
Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
if (row["org_id"].ToString() != "00000")
{
Guid topCustomerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "customer_org" && m.OldKeyValue == row["org_id"].ToString().Substring(0, 5)).FirstOrDefault().NewKeyValue);
var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == topCustomerOrgId
&& m.MedicalTimes == (short)Convert.ToInt32(row["org_medical_times"].ToString())).FirstOrDefault();
if (customerOrgRegisterEnt != null)
{
customerOrgRegisterId = customerOrgRegisterEnt.Id;
}
}
#endregion
#region 转换体检结论ID
Guid? medicalConclusionId = null;
if (!string.IsNullOrWhiteSpace(row["medical_conclusion_id"].ToString()))
{
var medicalConclusionEnt = fieldComparisonList.Where(m => m.TableName == "medical_conclusion"
&& m.OldKeyValue == row["medical_conclusion_id"].ToString()).FirstOrDefault();
if (medicalConclusionEnt != null)
{
medicalConclusionId = Guid.Parse(medicalConclusionEnt.NewKeyValue);
}
}
#endregion
#region 转换套餐ID
Guid? medicalPackageId = null;
if (!string.IsNullOrWhiteSpace(row["medical_package_id"].ToString()))
{
var medicalPackageEnt = fieldComparisonList.Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault();
if (medicalPackageEnt != null)
{
medicalPackageId = Guid.Parse(medicalPackageEnt.NewKeyValue);
}
}
#endregion
#region 转换体检类别ID
Guid? medicalTypeId = null;
if (!string.IsNullOrWhiteSpace(row["medical_type_id"].ToString()))
{
var medicalTypeEnt = fieldComparisonList.Where(m => m.TableName == "medical_type" && m.OldKeyValue == row["medical_type_id"].ToString()).FirstOrDefault();
if (medicalTypeEnt != null)
{
medicalTypeId = Guid.Parse(medicalTypeEnt.NewKeyValue);
}
}
#endregion
#region 转换人员类别ID
Guid? personnelTypeId = null;
if (!string.IsNullOrWhiteSpace(row["personnel_type_id"].ToString()))
{
var personnelTypeEnt = fieldComparisonList.Where(m => m.TableName == "personnel_type" && m.OldKeyValue == row["personnel_type_id"].ToString()).FirstOrDefault();
if (personnelTypeEnt != null)
{
personnelTypeId = Guid.Parse(personnelTypeEnt.NewKeyValue);
}
}
#endregion
#region 转换总检医生ID
Guid? summaryDoctorId = null;
if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString()))
{
var userEnt = userList.Where(m => m.UserName == row["summary_doctor"].ToString().Trim()).FirstOrDefault();
if (userEnt != null)
{
summaryDoctorId = userEnt.Id;
}
}
#endregion
#region 上传图片,获取地址
string photo = "";
if (!string.IsNullOrEmpty(row["photograph"].ToString()))
{
photo = UpLoadImg(patientRegisterId, Convert.ToDateTime(row["register_date"].ToString()), (byte[])row["photograph"]);
}
#endregion
var data = new PatientRegister(patientRegisterId)
{
BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
MedicalCenterId = defaultMedicalCenterId,
SexId = ConvertSex(row["sex_id"].ToString()),
Age = string.IsNullOrWhiteSpace(row["age"].ToString()) ? null : Convert.ToInt16(row["age"].ToString()),
AuditDate = string.IsNullOrWhiteSpace(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
AuditDoctorId = AuditDoctorId,
CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
CustomerOrgGroupId = customerOrgGroupId,
CustomerOrgId = customerOrgId,
CustomerOrgRegisterId = customerOrgRegisterId,
GuidePrintTimes = string.IsNullOrWhiteSpace(row["instruct_print_times"].ToString()) ? (short)0 : Convert.ToInt16(row["instruct_print_times"].ToString()),
InterposeMeasure = null,
IsAudit = string.IsNullOrWhiteSpace(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
IsLock = string.IsNullOrWhiteSpace(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
IsMedicalStart = string.IsNullOrWhiteSpace(row["medical_start_flag"].ToString()) ? 'N' : Convert.ToChar(row["medical_start_flag"].ToString()),
IsNameHide = string.IsNullOrWhiteSpace(row["name_encrypt_flag"].ToString()) ? 'N' : Convert.ToChar(row["name_encrypt_flag"].ToString()),
IsPhoneFollow = 'N',
IsRecoverGuide = string.IsNullOrWhiteSpace(row["recover_form_flag"].ToString()) ? 'N' : Convert.ToChar(row["recover_form_flag"].ToString()),
IsUpload = string.IsNullOrWhiteSpace(row["upload_flag"].ToString()) ? 'N' : Convert.ToChar(row["upload_flag"].ToString()),
IsVip = string.IsNullOrWhiteSpace(row["vip_flag"].ToString()) ? 'N' : Convert.ToChar(row["vip_flag"].ToString()),
JobCardNo = row["job_card_no"].ToString(),
JobPost = row["job_post"].ToString(),
JobTitle = row["job_title"].ToString(),
MedicalCardNo = row["medical_card_no"].ToString(),
MedicalConclusionId = medicalConclusionId,
MedicalPackageId = medicalPackageId,
MedicalStartDate = string.IsNullOrEmpty(row["medical_start_date"].ToString()) ? null : Convert.ToDateTime(row["medical_start_date"].ToString()),
MedicalTimes = Convert.ToInt16(row["medical_times"].ToString()),
MedicalTypeId = medicalTypeId,
PatientId = patientId,
PatientName = row["name"].ToString(),
PatientRegisterNo = row["barcode_no"].ToString(),
PersonnelTypeId = personnelTypeId,
Photo = photo,
Remark = row["remark"].ToString(),
ReportPrintTimes = Convert.ToInt16(row["report_print_times"].ToString()),
Salesman = row["salesman"].ToString(),
SexHormoneTermId = null,
SummaryDate = string.IsNullOrEmpty(row["summary_date"].ToString()) ? null : Convert.ToDateTime(row["summary_date"].ToString()),
SummaryDoctorId = summaryDoctorId,
ThirdInfo = row["third_info"].ToString(),
};
await _patientRegisterRepository.InsertAsync(data);
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = patientRegisterId.ToString(),
OldKeyValue = row["patient_register_id"].ToString(),
TableName = "patient_register"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
await uow.CompleteAsync();
}
}
_logger.LogInformation($"人员数据处理{oldPatientRegisterList.Rows.Count}条");
await TransferPatientRegisterData();
}
else
{
_logger.LogInformation("人员数据已处理完");
}
}
///
/// 迁移检查单 组合项目 查询register_asbitem
///
///
public async Task TransferRegisterCheckData()
{
//记录patient_register Id
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any())
{
var userList = await _identityUserRepository.GetListAsync();
foreach (var item in patientRegisterList)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
List registerCheckInsert = new List();
List registerCheckAsbitemInsert = new List();
#region 转换成老系统ID
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
#endregion
var oldRegisterAsbitemList = await Db.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{oldPatientRegisterId}'");
if (oldRegisterAsbitemList.Rows.Count > 0)
{
foreach (DataRow row in oldRegisterAsbitemList.Rows)
{
#region 转换审核医生ID
Guid? auditorUserId = null;
if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
{
var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
if (userEnt != null)
{
auditorUserId = userEnt.Id;
}
}
#endregion
#region 转换检查医生ID
string checkDoctorId = null;
if (!string.IsNullOrWhiteSpace(row["check_doctor"].ToString()))
{
var userEnt = userList.Where(m => m.UserName == row["check_doctor"].ToString().Trim()).FirstOrDefault();
if (userEnt != null)
{
checkDoctorId = userEnt.Id.ToString();
}
else
{
checkDoctorId = row["check_doctor"].ToString().Trim();
}
}
#endregion
Guid registerCheckId = GuidGenerator.Create();
var data = new RegisterCheck(registerCheckId)
{
AuditorUserId = auditorUserId,
AuditTime = string.IsNullOrEmpty(row["audit_date"].ToString()) ? null : Convert.ToDateTime(row["audit_date"].ToString()),
CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
CheckDoctorId = checkDoctorId,
CheckRequestNo = "",
CheckRequestPrintTimes = (short)1,
CompleteFlag = Convert.ToChar(row["complete_flag"].ToString()),
CriticalValue = null,
CriticalValueCreateDate = null,
CriticalValueFlag = null,
CriticalValueProcessContent = null,
CriticalValueProcessDate = null,
CriticalValueProcessDoctor = null,
CriticalValueProcessFlag = null,
IsAudit = string.IsNullOrEmpty(row["audit_flag"].ToString()) ? 'N' : Convert.ToChar(row["audit_flag"].ToString()),
IsLock = string.IsNullOrEmpty(row["lock_flag"].ToString()) ? 'N' : Convert.ToChar(row["lock_flag"].ToString()),
PatientRegisterId = item.Id,
ThirdInfo = row["third_info"].ToString()
};
registerCheckInsert.Add(data);
Guid registerCheckAsbitemId = GuidGenerator.Create();
#region 转换组合项目ID
Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
#endregion
var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
{
Amount = 1,
IsCharge = Convert.ToChar(row["charge_flag"].ToString()),
AsbitemId = newAsbitemId,
ChargePrice = Convert.ToDecimal(row["price"].ToString()),
GroupPackageId = null,
LisRequestId = null,
PatientRegisterId = item.Id,
PayTypeFlag = Convert.ToChar(row["payment_mode"].ToString()),
RegisterCheckId = registerCheckId,
StandardPrice = Convert.ToDecimal(row["standard_price"].ToString())
};
registerCheckAsbitemInsert.Add(dataRegisterAsbitem);
}
}
if (registerCheckInsert.Any())
await _registerCheckRepository.InsertManyAsync(registerCheckInsert);
if (registerCheckAsbitemInsert.Any())
await _registerCheckAsbitemRepository.InsertManyAsync(registerCheckAsbitemInsert);
await uow.CompleteAsync();
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check' ");
}
}
await TransferRegisterCheckData();
}
else
{
_logger.LogInformation("检查单、登记组合项目已处理完");
}
}
///
/// 迁移明细项目 查询register_item
///
///
public async Task TransferRegisterCheckItemData()
{
//记录register_check_asbitem Id
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_item'");
var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (registerCheckAsbitemList.Any())
{
foreach (var item in registerCheckAsbitemList)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
List registerCheckItemInsert = new List();
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
#endregion
#region 转换成老系统AsbitemId
string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
#endregion
var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
if (oldRegisterCheckItemList.Rows.Count > 0)
{
foreach (DataRow row in oldRegisterCheckItemList.Rows)
{
#region 转换项目ID 老转新
Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
#endregion
var data = new RegisterCheckItem
{
CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
CriticalValue = null,
CheckDoctorName = row["check_doctor"].ToString().Trim(),
CriticalRangeValue = null,
ItemId = newItemId,
ReferenceRangeValue = row["reference_range_value"].ToString(),
RegisterCheckId = item.RegisterCheckId,
Result = row["result"].ToString(),
ResultStatusId = _registerCheckItemManager.GetResultStatusId(row["result"].ToString(), row["reference_range_value"].ToString()),
Unit = row["Unit"].ToString()
};
registerCheckItemInsert.Add(data);
}
}
if (registerCheckItemInsert.Any())
await _registerCheckItemRepository.InsertManyAsync(registerCheckItemInsert);
await uow.CompleteAsync();
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_item' ");
}
}
await TransferRegisterCheckItemData();
}
else
{
_logger.LogInformation("明细项目已处理完");
}
}
///
/// 迁移医生小结 查询register_asbitem
///
///
public async Task TransferRegisterCheckSummaryData()
{
//记录register_check id
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary'");
var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync()
join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
orderby registerCheckQuery.Id ascending
where string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0
select new
{
PatientRegisterId = registerCheckQuery.PatientRegisterId,
RegisterCheckId = registerCheckQuery.Id,
AsbitemId = registerCheckAsbitemQuery.AsbitemId
}).ToList();
if (registerCheckAsbitemList.Any())
{
foreach (var item in registerCheckAsbitemList)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
#endregion
#region 转换成老系统AsbitemId
string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
#endregion
var oldSummary = await Db.Ado.GetStringAsync($"select summary from register_asbitem where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
if (!string.IsNullOrWhiteSpace(oldSummary))
{
var data = new RegisterCheckSummary
{
RegisterCheckId = item.RegisterCheckId,
DisplayOrder = 1,
Summary = oldSummary,
SummaryFlag = '0'
};
await _registerCheckSummaryRepository.InsertAsync(data);
await uow.CompleteAsync();
}
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.RegisterCheckId}',addtime=getdate(),handlecount+=1 where tablename='register_check_summary' ");
}
}
await TransferRegisterCheckSummaryData();
}
else
{
_logger.LogInformation("医生小结已处理完");
}
}
///
/// 迁移总检综述 查询patient_register
///
///
public async Task TransferSumSummaryData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_summary'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any())
{
foreach (var item in patientRegisterList)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
#endregion
var oldSummary = await Db.Ado.GetStringAsync($"select summary from patient_register where patient_register_id='{oldPatientRegisterId}' ");
if (!string.IsNullOrWhiteSpace(oldSummary))
{
Guid sumSummaryHeaderId = GuidGenerator.Create();
var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
{
DisplayOrder = 1,
SummaryFlag = '0',
PatientRegisterId = item.Id,
SummaryTitle = "."
};
await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
Guid sumSummaryContentId = GuidGenerator.Create();
var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
{
DisplayOrder = 1,
SumSummaryHeaderId = sumSummaryHeaderId,
SummaryContent = oldSummary
};
await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
await uow.CompleteAsync();
}
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' ");
}
}
await TransferSumSummaryData();
}
else
{
_logger.LogInformation("总检综述已处理完");
}
}
///
/// 迁移总检建议 查询patient_register
///
///
public async Task TransferSumSuggestionData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_suggestion'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any())
{
foreach (var item in patientRegisterList)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
#endregion
var oldSuggestion = await Db.Ado.GetStringAsync($"select suggestion from patient_register where patient_register_id='{oldPatientRegisterId}' ");
if (!string.IsNullOrWhiteSpace(oldSuggestion))
{
Guid sumSuggestionHeaderId = GuidGenerator.Create();
var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
{
DisplayOrder = 1,
SuggestionFlag = '0',
PatientRegisterId = item.Id,
SuggestionTitle = "."
};
await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader);
Guid sumSuggestionContentId = GuidGenerator.Create();
var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId)
{
DisplayOrder = 1,
SuggestionContent = oldSuggestion,
SuggestionType = SuggestionTypeFlag.HealthGuidance,
SumSuggestionHeaderId = sumSuggestionHeaderId
};
await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent);
await uow.CompleteAsync();
}
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_suggestion' ");
}
}
await TransferSumSuggestionData();
}
else
{
_logger.LogInformation("总检建议已处理完");
}
}
///
/// 迁移总症诊断 查询summary_diagnosis
///
///
public async Task TransferSumDiagnosisData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any())
{
foreach (var item in patientRegisterList)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
#endregion
var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
if (oldSummaryDiagnosis.Rows.Count > 0)
{
//获取建议头
var sumSuggestionHeaderEnt = await _sumSuggestionHeaderRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == item.Id);
if (sumSuggestionHeaderEnt != null)
{
List sumDiagnosisInsert = new List();
foreach (DataRow row in oldSummaryDiagnosis.Rows)
{
var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
if (diagnosisEnt != null)
{
var dataSumDiagnosis = new SumDiagnosis
{
DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1,
PatientRegisterId = item.Id,
DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
SumSuggestionHeaderId = sumSuggestionHeaderEnt.Id
};
sumDiagnosisInsert.Add(dataSumDiagnosis);
}
}
if (sumDiagnosisInsert.Any())
await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
await uow.CompleteAsync();
}
}
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_diagnosis' ");
}
}
await TransferSumDiagnosisData();
}
else
{
_logger.LogInformation("总症诊断已处理完");
}
}
///
/// 爆改人员登记创建日期跟创建者
///
///
public async Task HandPatientRegisterDoctor()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='hand_patient_register'");
var oldPatientRegisterList = await Db.Ado.GetDataTableAsync("select top 1000 patient_register_id,register_doctor,register_date from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc ");
if (oldPatientRegisterList.Rows.Count > 0)
{
var userList = await _identityUserRepository.GetListAsync();
List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "patient_register");
StringBuilder sb = new StringBuilder();
foreach (DataRow row in oldPatientRegisterList.Rows)
{
Guid patientRegisterId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["patient_register_id"].ToString()).FirstOrDefault().NewKeyValue);
Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
if (registerDoctorEnt != null)
{
registerDoctorId = registerDoctorEnt.Id;
}
string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
sql_update += $" where id='{patientRegisterId}' ";
await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='hand_patient_register' ");
}
await HandPatientRegisterDoctor();
}
else
{
_logger.LogInformation("爆改人员登记创建日期跟创建者已处理完");
}
}
#endregion
#region 暂时不用
/////
///// 处理人员体检次数
/////
/////
//public async Task TransferPersonPhohoData(int handcount)
//{
// string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_customer_org_register'");
// var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
// .Where(m => m.CustomerOrgRegisterId == GuidFlag.PersonCustomerOrgRegisterId && m.CustomerOrgId != GuidFlag.PersonCustomerOrgId
// && string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
// if (patientRegisterList.Any())
// {
// List customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
// foreach (var item in patientRegisterList)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// #region 转换成老系统PatientRegisterId
// string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
// #endregion
// //老系统数据
// var oldPatientRegisterEnt = Db.Ado.GetDataTable($"select org_medical_times,org_id from patient_register where patient_register_id='{oldPatientRegisterId}'");
// string oldTopCustomerOrgId = oldPatientRegisterEnt.Rows[0][1].ToString().Substring(0, 5);
// //一级单位ID
// Guid customerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "customer_org" && m.OldKeyValue == oldTopCustomerOrgId).FirstOrDefault().NewKeyValue);
// short orgMedicalTimes = Convert.ToInt16(oldPatientRegisterEnt.Rows[0][0].ToString());
// #region 转换单位体检次数ID 没有增加默认值
// Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
// var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
// && m.MedicalTimes == orgMedicalTimes).FirstOrDefault();
// if (customerOrgRegisterEnt != null)
// {
// customerOrgRegisterId = customerOrgRegisterEnt.Id;
// item.CustomerOrgRegisterId = customerOrgRegisterId;
// await _patientRegisterRepository.UpdateAsync(item);
// }
// #endregion
// await uow.CompleteAsync();
// await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_customer_org_register' ");
// }
// }
// }
//}
/////
///// 迁移档案数据
/////
/////
//public async Task TransferPatientData()
//{
// List dataList = new List();
// var oldPatientList = await Db.Ado.GetDataTableAsync("select top 500 patient_id,nation_id,address," +
// "birth_date,name,email,id_card_no,marital_status_id,mobile_telephone,patient_password,postalcode,telephone,sex_id " +
// "from patient_register where is_hand is null order by patient_register_id asc");
// List tempPatientNos = new List();
// if (oldPatientList.Rows.Count > 0)
// {
// List fieldComparisons = new List();
// List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "nation");
// foreach (DataRow row in oldPatientList.Rows)
// {
// if (!tempPatientNos.Contains(row["patient_id"].ToString()))
// {
// string nationId = null;
// if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
// {
// nationId = fieldComparisonList.Where(m => m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
// }
// Guid PatientId = GuidGenerator.Create(); //档案ID
// var data = new Patient(PatientId)
// {
// Address = row["address"].ToString(),
// BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
// BirthPlaceId = null,
// DisplayName = row["name"].ToString(),
// Email = row["email"].ToString(),
// IdNo = row["id_card_no"].ToString(),
// MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
// MedicalCenterId = defaultMedicalCenterId,
// MobileTelephone = row["mobile_telephone"].ToString(),
// NationId = nationId,
// PatientNo = row["patient_id"].ToString(),
// PatientPassword = row["patient_password"].ToString(),
// PostalCode = row["postalcode"].ToString(),
// SexId = ConvertSex(row["sex_id"].ToString()),
// SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
// Telephone = row["telephone"].ToString()
// };
// dataList.Add(data);
// fieldComparisons.Add(new FieldComparison
// {
// FieldName = "id",
// NewKeyValue = PatientId.ToString(),
// OldKeyValue = row["patient_id"].ToString(),
// TableName = "patient"
// });
// #region 增加标识
// veryPatientNo.Add(row["patient_id"].ToString(), row["patient_id"].ToString());
// #endregion
// }
// tempPatientNos.Add(row["patient_id"].ToString());
// }
// if (dataList.Any())
// await _patientRepository.InsertManyAsync(dataList);
// if (fieldComparisons.Any())
// await _fieldComparisonRepository.InsertManyAsync(fieldComparisons);
// #region 修改状态
// Thread.Sleep(100);
// await Db.Ado.ExecuteCommandAsync("update patient_register set is_hand='Y' where patient_id in (@ids) ", new { ids = tempPatientNos });
// #endregion
// _logger.LogInformation($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},迁移数据{dataList.Count}");
// }
//}
/////
///// 迁移后台用户数据
/////
/////
//[RemoteService(false)]
//public async Task TransferUserData()
//{
// var oldUserList = await Db.Ado.GetDataTableAsync("select * from users");
// if (oldUserList.Rows.Count > 0)
// {
// foreach (DataRow row in oldUserList.Rows)
// {
// var userEnt = new IdentityUserCreateNoEmailDto
// {
// Email = "",
// IsActive = row["valid_flag"].ToString() == "Y" ? true : false,
// LockoutEnabled = false,
// Name = row["user_name"].ToString(),
// Password = row["password"].ToString(),
// PhoneNumber = "",
// RoleNames = new string[] { "admin" },
// Surname = "",
// UserName = row["user_id"].ToString()
// };
// await _myUserAppService.CreateAsync(userEnt);
// }
// }
//}
/////
///// 迁移菜单
/////
/////
//[RemoteService(false)]
//public async Task TransferMenuInfoData()
//{
// var oldMenuInfoList = await PgDb.Ado.GetDataTableAsync("select * from menu_info");
// if (oldMenuInfoList.Rows.Count > 0)
// {
// List dataList = new List();
// foreach (DataRow menuInfo in oldMenuInfoList.Rows)
// {
// var data = new MenuInfo(Guid.Parse(menuInfo["id"].ToString()))
// {
// DisplayName = menuInfo["display_name"].ToString(),
// DisplayOrder = Convert.ToInt32(menuInfo["display_order"].ToString()),
// IconName = menuInfo["icon_name"].ToString(),
// IsActive = Convert.ToChar(menuInfo["is_active"].ToString()),
// MenuType = Convert.ToChar(menuInfo["menu_type"].ToString()),
// ParentId = !string.IsNullOrWhiteSpace(menuInfo["parent_id"].ToString()) ? Guid.Parse(menuInfo["parent_id"].ToString()) : null,
// RouteUrl = menuInfo["route_url"].ToString(),
// SimpleCode = menuInfo["simple_code"].ToString()
// };
// dataList.Add(data);
// }
// if (dataList.Any())
// await _menuInfoRepository.InsertManyAsync(dataList);
// }
//}
//#region 迁移报表数据
/////
///// 迁移云端报表数据
/////
/////
//public async Task TransferReportData()
//{
// var oldReportList = await PgDb.Ado.GetDataTableAsync("select id,display_name,is_active from report ");
// if (oldReportList.Rows.Count > 0)
// {
// foreach (DataRow row in oldReportList.Rows)
// {
// Report reportEntity = new Report
// {
// DisplayName = row["display_name"].ToString(),
// IsActive = Convert.ToChar(row["is_active"].ToString())
// };
// reportEntity.SetId(row["id"].ToString());
// await _reportRepository.InsertAsync(reportEntity, true);
// }
// }
// var oldReportFormatList = await PgDb.Ado.GetDataTableAsync("select id,display_name,is_default,report_id from report_format ");
// if (oldReportFormatList.Rows.Count > 0)
// {
// foreach (DataRow row in oldReportFormatList.Rows)
// {
// ReportFormat reportFormatEntity = new ReportFormat
// {
// DisplayName = row["display_name"].ToString(),
// IsDefault = Convert.ToChar(row["is_default"].ToString()),
// ReportId = row["report_id"].ToString()
// };
// reportFormatEntity.SetId(row["id"].ToString());
// await _reportFormatRepository.InsertAsync(reportFormatEntity, true);
// }
// }
// var oldReportFormatTemplateList = await PgDb.Ado.GetDataTableAsync("select id,display_name,report_format_id,template_file_type,template_file,data_set_json,is_system,is_default from report_format_template ");
// if (oldReportFormatTemplateList.Rows.Count > 0)
// {
// foreach (DataRow row in oldReportFormatTemplateList.Rows)
// {
// ReportFormatTemplate reportFormatTemplateEntity = new ReportFormatTemplate
// {
// DisplayName = row["display_name"].ToString(),
// IsDefault = Convert.ToChar(row["is_default"].ToString()),
// DataSetJson = row["data_set_json"].ToString(),
// IsSystem = Convert.ToChar(row["is_system"].ToString()),
// ReportFormatId = row["report_format_id"].ToString(),
// TemplateFile = row["template_file"].ToString(),
// TemplateFileType = Convert.ToChar(row["template_file_type"].ToString())
// };
// reportFormatTemplateEntity.SetId(row["id"].ToString());
// await _reportFormatTemplateRepository.InsertAsync(reportFormatTemplateEntity, true);
// }
// }
//}
//#endregion
//#region 迁移系统参数
/////
///// 迁移系统参数类别数据
/////
/////
//public async Task TransferSysParmTypeData()
//{
// var oldSysParmType = await PgDb.Ado.GetDataTableAsync("select * from sys_parm_type ");
// if (oldSysParmType.Rows.Count > 0)
// {
// foreach (DataRow row in oldSysParmType.Rows)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// SysParmType data = new SysParmType
// {
// Id = row["id"].ToString(),
// DisplayName = row["display_name"].ToString(),
// DisplayOrder = Convert.ToInt32(row["display_order"].ToString()),
// ParentId = row["parent_id"].ToString(),
// SimpleCode = row["simple_code"].ToString()
// };
// await _sysParmTypeRepository.InsertAsync(data, true);
// await uow.CompleteAsync();
// }
// }
// }
//}
/////
///// 迁移系统参数数据
/////
/////
//public async Task TransferSysParmData()
//{
// var oldSysParm = await PgDb.Ado.GetDataTableAsync("select * from sys_parm ");
// if (oldSysParm.Rows.Count > 0)
// {
// foreach (DataRow row in oldSysParm.Rows)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// SysParm data = new SysParm
// {
// Id = row["id"].ToString(),
// DisplayName = row["display_name"].ToString(),
// DisplayOrder = Convert.ToInt32(row["display_order"].ToString()),
// IsPublic = Convert.ToChar(row["is_public"].ToString()),
// Remark = row["remark"].ToString(),
// ValueType = Convert.ToChar(row["value_type"].ToString()),
// SysParmTypeId = row["sys_parm_type_id"].ToString(),
// SimpleCode = row["simple_code"].ToString()
// };
// await _sysParmRepository.InsertAsync(data, true);
// await uow.CompleteAsync();
// }
// }
// }
//}
/////
///// 迁移系统参数值数据
/////
/////
//public async Task TransferSysParmValueData()
//{
// var oldSysParmValue = await PgDb.Ado.GetDataTableAsync("select * from sys_parm_value where medical_center_id='00000000-0000-0000-0000-000000000000' ");
// if (oldSysParmValue.Rows.Count > 0)
// {
// foreach (DataRow row in oldSysParmValue.Rows)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// SysParmValue data = new SysParmValue
// {
// SysParmId = row["sys_parm_id"].ToString(),
// Remark = row["remark"].ToString(),
// MedicalCenterId = Guid.Empty,
// ParmValue = row["parm_value"].ToString()
// };
// await _sysParmValueRepository.InsertAsync(data, true);
// await uow.CompleteAsync();
// }
// }
// }
//}
//#endregion
/////
///// 迁移人员图片数据
/////
/////
//public async Task TransferPersonPhohoData(int handcount)
//{
// string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_photo'");
// var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
// .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
// if (patientRegisterList.Any())
// {
// foreach (var item in patientRegisterList)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// #region 转换成老系统PatientRegisterId
// string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
// #endregion
// var photograph = await Db.Ado.GetScalarAsync($"select photograph from patient_register where patient_register_id='{oldPatientRegisterId}' ");
// #region 上传图片,获取地址
// if (photograph != null && !string.IsNullOrEmpty(photograph.ToString()))
// {
// string photo = UpLoadImg(item.Id, item.CreationTime, (byte[])photograph);
// item.Photo = photo;
// await _patientRegisterRepository.UpdateAsync(item);
// }
// #endregion
// await uow.CompleteAsync();
// await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_photo' ");
// }
// }
// }
//}
/////
///// 纠正登记项目明细数据
/////
/////
//public async Task CorrectRegisterCheckItemData()
//{
// string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_asbitem_2'");
// //var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id)
// // .Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).ToList();
// var registerCheckAsbitemList = (from registerCheckQuery in (await _registerCheckRepository.GetQueryableAsync()).Include(x => x.RegisterCheckItems)
// join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
// orderby registerCheckQuery.Id ascending
// where (registerCheckQuery.RegisterCheckItems.Count == 0 && string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0)
// select registerCheckAsbitemQuery).ToList();
// if (registerCheckAsbitemList.Any())
// {
// foreach (var item in registerCheckAsbitemList)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// List registerCheckItemInsert = new List();
// #region 转换成老系统PatientRegisterId
// string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
// #endregion
// #region 转换成老系统AsbitemId
// string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
// #endregion
// var oldRegisterCheckItemList = await Db.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
// if (oldRegisterCheckItemList.Rows.Count > 0)
// {
// foreach (DataRow row in oldRegisterCheckItemList.Rows)
// {
// #region 转换项目ID 老转新
// Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
// #endregion
// var data = new RegisterCheckItem
// {
// CheckDate = string.IsNullOrEmpty(row["check_date"].ToString()) ? null : Convert.ToDateTime(row["check_date"].ToString()),
// CriticalValue = null,
// CheckDoctorName = row["check_doctor"].ToString().Trim(),
// CriticalRangeValue = null,
// ItemId = newItemId,
// ReferenceRangeValue = row["reference_range_value"].ToString(),
// RegisterCheckId = item.RegisterCheckId,
// Result = row["result"].ToString(),
// ResultStatusId = _registerCheckItemManager.GetResultStatusId(row["result"].ToString(), row["reference_range_value"].ToString()),
// Unit = row["Unit"].ToString()
// };
// registerCheckItemInsert.Add(data);
// }
// }
// if (registerCheckItemInsert.Any())
// await _registerCheckItemRepository.InsertManyAsync(registerCheckItemInsert);
// await uow.CompleteAsync();
// await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_asbitem_2' ");
// }
// }
// }
//}
/////
///// 纠正医生小结数据
/////
/////
//public async Task CorrectRegisterCheckSummaryData()
//{
// string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary_2'");
// //var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync()
// // join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
// // orderby registerCheckQuery.Id ascending
// // where string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0
// // select new
// // {
// // PatientRegisterId = registerCheckQuery.PatientRegisterId,
// // RegisterCheckId = registerCheckQuery.Id,
// // AsbitemId = registerCheckAsbitemQuery.AsbitemId
// // }).ToList();
// var registerCheckAsbitemList = (from registerCheckQuery in (await _registerCheckRepository.GetQueryableAsync()).Include(x => x.RegisterCheckSummaries).AsQueryable()
// join registerCheckAsbitemQuery in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckQuery.Id equals registerCheckAsbitemQuery.RegisterCheckId
// orderby registerCheckQuery.Id ascending
// where (registerCheckQuery.RegisterCheckSummaries.Count == 0 && string.Compare(registerCheckQuery.Id.ToString(), nextKeyValue) > 0)
// select new
// {
// PatientRegisterId = registerCheckQuery.PatientRegisterId,
// RegisterCheckId = registerCheckQuery.Id,
// AsbitemId = registerCheckAsbitemQuery.AsbitemId
// }).ToList();
// if (registerCheckAsbitemList.Any())
// {
// foreach (var item in registerCheckAsbitemList)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// #region 转换成老系统PatientRegisterId
// string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.PatientRegisterId.ToString()).FirstOrDefault().OldKeyValue;
// #endregion
// #region 转换成老系统AsbitemId
// string oldAsbitemId = (await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "asbitem" && m.NewKeyValue == item.AsbitemId.ToString()).FirstOrDefault().OldKeyValue;
// #endregion
// var oldSummary = await Db.Ado.GetStringAsync($"select summary from register_asbitem where patient_register_id='{oldPatientRegisterId}' and asbitem_id='{oldAsbitemId}'");
// if (!string.IsNullOrWhiteSpace(oldSummary))
// {
// var data = new RegisterCheckSummary
// {
// RegisterCheckId = item.RegisterCheckId,
// DisplayOrder = 1,
// Summary = oldSummary,
// SummaryFlag = '0'
// };
// await _registerCheckSummaryRepository.InsertAsync(data);
// await uow.CompleteAsync();
// }
// await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.RegisterCheckId}',addtime=getdate(),handlecount+=1 where tablename='register_check_summary_2' ");
// }
// }
// }
//}
#endregion
private void LoadDLL()
{
// 定义dll文件夹路径
string dllFolderPath = Path.Combine(AppContext.BaseDirectory, "MyPlugs");
DirectoryInfo directoryInfo = new DirectoryInfo(dllFolderPath);
FileInfo[] files = directoryInfo.GetFiles("*.dll", SearchOption.AllDirectories);
foreach (FileInfo file in files)
{
Assembly assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(file.FullName);
Type interfaceType = assembly.GetTypes().Where(m => m.IsInterface == true && m.Name == "ITestHello").FirstOrDefault();
Type classType = assembly.GetTypes().Where(m => m.IsInterface == false && m.Name == "TestHello").FirstOrDefault();
if (interfaceType != null && classType != null)
{
object instance = Activator.CreateInstance(classType);
// 获取方法信息
MethodInfo method = classType.GetMethod("PrintMsg");
// 执行方法
var ss = method.Invoke(instance, null);
}
}
}
///
/// 转换老系统适用性别
///
///
///
private char ConvertForSex(string forSexId)
{
if (forSexId == "0")
{
return 'M';
}
else if (forSexId == "1")
{
return 'F';
}
else
{
return 'A';
}
}
///
/// 转换老系统性别
///
///
///
private char ConvertSex(string SexId)
{
if (SexId == "0")
{
return 'M';
}
else if (SexId == "1")
{
return 'F';
}
else
{
return 'U';
}
}
private string UpLoadImg(Guid PatientRegisterId, DateTime time, byte[] Photo)
{
string imgurl = $"photo/{time.Year}/{time.Month}/{time.Day}/" + PatientRegisterId;
var isupload = ImageHelper.ByteToImage(Photo, imgurl);
if (!string.IsNullOrEmpty(isupload))
return isupload;
else
return "";
}
}
}