You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5928 lines
294 KiB
5928 lines
294 KiB
using EFCore.BulkExtensions;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using NPOI.POIFS.Properties;
|
|
using NPOI.SS.Formula.Functions;
|
|
using Shentun.Peis.ColumnReferences;
|
|
using Shentun.Peis.CustomerOrgs;
|
|
using Shentun.Peis.DataMigrations;
|
|
using Shentun.Peis.EntityFrameworkCore;
|
|
using Shentun.Peis.Enums;
|
|
using Shentun.Peis.ItemTypes;
|
|
using Shentun.Peis.Migrations;
|
|
using Shentun.Peis.Models;
|
|
using Shentun.Peis.MyUser;
|
|
using Shentun.Peis.OrganizationUnits;
|
|
using Shentun.Peis.PatientRegisters;
|
|
using Shentun.Peis.RegisterCheckItems;
|
|
using Shentun.Utilities;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Formats.Asn1;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
using Volo.Abp.Application.Services;
|
|
using Volo.Abp.Caching;
|
|
using Volo.Abp.Data;
|
|
using Volo.Abp.Domain.Entities;
|
|
using Volo.Abp.Domain.Repositories;
|
|
using Volo.Abp.EntityFrameworkCore;
|
|
using Volo.Abp.Identity;
|
|
using Volo.Abp.Uow;
|
|
using Volo.Abp.Users;
|
|
using static System.Formats.Asn1.AsnWriter;
|
|
|
|
namespace Shentun.Peis.CCTJExportDatas
|
|
{
|
|
/// <summary>
|
|
/// 长城体检中心数据导入
|
|
/// </summary>
|
|
[Authorize]
|
|
public class CCTJExportDataAppService : ApplicationService
|
|
{
|
|
//默认指引类别ID
|
|
private readonly char defaultGuidTypeId = '0';
|
|
//默认体检报告类别ID
|
|
private readonly char defaultMedicalReportTypeId = '0';
|
|
//默认体检结论类别
|
|
private readonly string defaultMedicalConclusionType = "01";
|
|
//默认体检中心
|
|
private readonly Guid defaultMedicalCenterId = Guid.Parse("8beda924-3925-4525-be49-d28bbb3618c4");
|
|
//默认容器ID
|
|
private readonly Guid defaultSampleContainerId = Guid.Parse("3a126a07-eb42-a369-99e4-114a2629d714");
|
|
//默认单位性质ID
|
|
private readonly Guid defaultOrgTypeId = Guid.Parse("3a126a08-9607-fe40-e5da-6daa01712468");
|
|
|
|
//老系统数据库配置
|
|
private readonly SqlSugarClient oldDb = new SqlSugarClient(new ConnectionConfig()
|
|
{
|
|
// ConnectionString = "server=192.168.0.3;uid=sa;pwd=132****6302;database=oldPeis;Encrypt=false;",
|
|
ConnectionString = "server=192.168.0.3;uid=sa;pwd=132****6302;database=reddolphin;Encrypt=false;",
|
|
DbType = SqlSugar.DbType.SqlServer,
|
|
IsAutoCloseConnection = true
|
|
});
|
|
|
|
|
|
//lis数据库配置
|
|
private readonly SqlSugarClient oldLisDb = new SqlSugarClient(new ConnectionConfig()
|
|
{
|
|
ConnectionString = "server=192.168.0.3;uid=sa;pwd=132****6302;database=mylis;Encrypt=false;",
|
|
DbType = SqlSugar.DbType.SqlServer,
|
|
IsAutoCloseConnection = true
|
|
});
|
|
|
|
//新系统配置
|
|
private readonly SqlSugarClient newDb = new SqlSugarClient(new ConnectionConfig()
|
|
{
|
|
ConnectionString = "Host=192.168.0.188;Port=5432;Database=ShentunPeis;User ID=postgres;Password=St123456;",
|
|
DbType = SqlSugar.DbType.PostgreSQL,
|
|
IsAutoCloseConnection = true
|
|
});
|
|
private readonly IDbContextProvider<PeisDbContext> _dbContextProvider;
|
|
private readonly UnitOfWorkManager _unitOfWorkManager;
|
|
private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
|
|
private readonly IRepository<ItemType, Guid> _itemTypeRepository;
|
|
private readonly ItemTypeManager _itemTypeManager;
|
|
private readonly IRepository<Unit, Guid> _unitRepository;
|
|
private readonly IRepository<MedicalType, Guid> _medicalTypeRepository;
|
|
private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository;
|
|
private readonly IRepository<InvoiceItemType, Guid> _invoiceItemTypeRepository;
|
|
private readonly IRepository<FieldComparison, Guid> _fieldComparisonRepository;
|
|
private readonly IRepository<SampleType, Guid> _sampleTypeRepository;
|
|
private readonly IRepository<Item, Guid> _itemRepository;
|
|
private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
|
|
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
|
|
private readonly IRepository<AsbitemDetail> _asbitemDetailRepository;
|
|
private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
|
|
private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
|
|
private readonly IRepository<Diagnosis, Guid> _diagnosisRepository;
|
|
private readonly IRepository<Suggestion, Guid> _suggestionRepository;
|
|
private readonly IRepository<ItemResultTemplate, Guid> _itemResultTemplateRepository;
|
|
private readonly IRepository<ItemResultMatch, Guid> _ItemResultMatchRepository;
|
|
private readonly IRepository<MenuInfo, Guid> _menuInfoRepository;
|
|
private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
|
|
private readonly CustomerOrgManager _customerOrgManager;
|
|
private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
|
|
private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
|
|
private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
|
|
private readonly IRepository<Nation> _nationRepository;
|
|
private readonly ILogger<BaseDataHandleAppService> _logger;
|
|
private readonly IRepository<IdentityUser, Guid> _identityUserRepository;
|
|
private readonly IRepository<MedicalConclusion, Guid> _medicalConclusionRepository;
|
|
private readonly IRepository<SampleGroup, Guid> _sampleGroupRepository;
|
|
private readonly IRepository<SampleGroupDetail> _sampleGroupDetailRepository;
|
|
private readonly IRepository<SysParmType> _sysParmTypeRepository;
|
|
private readonly IRepository<SysParm> _sysParmRepository;
|
|
private readonly IRepository<SysParmValue> _sysParmValueRepository;
|
|
private readonly IRepository<CollectItemType, Guid> _collectItemTypeRepository;
|
|
private readonly IRepository<AsbitemGuide> _asbitemGuideRepository;
|
|
//业务
|
|
private readonly IRepository<Patient, Guid> _patientRepository;
|
|
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
|
|
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
|
|
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
|
|
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
|
|
private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
|
|
private readonly RegisterCheckItemManager _registerCheckItemManager;
|
|
private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository;
|
|
private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository;
|
|
private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
|
|
private readonly IRepository<SumSummaryContent, Guid> _sumSummaryContentRepository;
|
|
private readonly IRepository<SumDiagnosis> _sumDiagnosisRepository;
|
|
private readonly IConfiguration _configuration;
|
|
private readonly MyUserAppService _myUserAppService;
|
|
private readonly ColumnReferenceAppService _columnReferenceAppService;
|
|
private readonly IRepository<CardType, Guid> _cardTypeRepository;
|
|
private readonly IRepository<CardRegister, Guid> _cardRegisterRepository;
|
|
private readonly IServiceScopeFactory _serviceScopeFactory;
|
|
private readonly ICurrentUser _currentUser;
|
|
private static List<FieldComparison> fieldComparisonTempList = new List<FieldComparison>();
|
|
private static List<FieldComparison> asbitemFieldComparisonTempList = new List<FieldComparison>();
|
|
private static List<FieldComparison> itemFieldComparisonTempList = new List<FieldComparison>();
|
|
private static List<CustomerOrgRegister> _customerOrgRegisterList = new List<CustomerOrgRegister>();
|
|
private static List<IdentityUser> _userList = new List<IdentityUser>();
|
|
|
|
|
|
private readonly IRepository<GuideType, char> _guideTypeRepository;
|
|
private readonly IRepository<MedicalReportType, char> _medicalReportTypeRepository;
|
|
private readonly IRepository<MedicalConclusionType> _medicalConclusionTypeRepository;
|
|
private readonly IRepository<SampleContainer, Guid> _sampleContainerRepository;
|
|
private readonly IRepository<CustomerOrgType, Guid> _customerOrgTypeRepository;
|
|
private readonly IRepository<OrganizationUnit, Guid> _organizationUnitRepository;
|
|
private readonly PeisOrganizationUnitManager _organizationUnitManager;
|
|
private readonly IRepository<Sex> _sexRepository;
|
|
private readonly IRepository<ForSex> _forSexRepository;
|
|
private readonly IRepository<MaritalStatus> _maritalStatusRepository;
|
|
private readonly IRepository<ResultStatus> _resultStatusRepository;
|
|
private readonly IRepository<PayMode> _payModeRepository;
|
|
private readonly IRepository<DiagnosisLevel, short> _diagnosisLevelRepository;
|
|
private readonly IdentityUserManager _identityUserManager;
|
|
private readonly IRepository<IdentityUserOrganizationUnit> _identityUserOrganizationUnitRepository;
|
|
private readonly IRepository<CommonTable, Guid> _commonTableRepository;
|
|
private readonly IRepository<Room, Guid> _roomRepository;
|
|
private readonly IRepository<RoomDetail> _roomDetailRepository;
|
|
private readonly IRepository<UserItemType> _userItemTypeRepository;
|
|
public CCTJExportDataAppService(
|
|
UnitOfWorkManager unitOfWorkManager,
|
|
IRepository<DeviceType, Guid> deviceTypeRepository,
|
|
IRepository<ItemType, Guid> itemTypeRepository,
|
|
ItemTypeManager itemTypeManager,
|
|
IRepository<Unit, Guid> unitRepository,
|
|
IRepository<MedicalType, Guid> medicalTypeRepository,
|
|
IRepository<PersonnelType, Guid> personnelTypeRepository,
|
|
IRepository<InvoiceItemType, Guid> invoiceItemTypeRepository,
|
|
IRepository<FieldComparison, Guid> fieldComparisonRepository,
|
|
IRepository<SampleType, Guid> sampleTypeRepository,
|
|
IRepository<Item, Guid> itemRepository,
|
|
IRepository<ReferenceRange, Guid> referenceRangeRepository,
|
|
IRepository<Asbitem, Guid> asbitemRepository,
|
|
IRepository<AsbitemDetail> asbitemDetailRepository,
|
|
IRepository<MedicalPackage, Guid> medicalPackageRepository,
|
|
IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
|
|
IRepository<Diagnosis, Guid> diagnosisRepository,
|
|
IRepository<Suggestion, Guid> suggestionRepository,
|
|
IRepository<ItemResultTemplate, Guid> itemResultTemplateRepository,
|
|
IRepository<ItemResultMatch, Guid> itemResultMatchRepository,
|
|
IRepository<MenuInfo, Guid> menuInfoRepository,
|
|
IRepository<CustomerOrg, Guid> customerOrgRepository,
|
|
CustomerOrgManager customerOrgManager,
|
|
IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository,
|
|
IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
|
|
IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
|
|
IRepository<Nation> nationRepository,
|
|
ILogger<BaseDataHandleAppService> logger,
|
|
IRepository<IdentityUser, Guid> identityUserRepository,
|
|
IRepository<MedicalConclusion, Guid> medicalConclusionRepository,
|
|
IRepository<SampleGroup, Guid> sampleGroupRepository,
|
|
IRepository<SampleGroupDetail> sampleGroupDetailRepository,
|
|
IRepository<SysParmType> sysParmTypeRepository,
|
|
IRepository<SysParm> sysParmRepository,
|
|
IRepository<SysParmValue> sysParmValueRepository,
|
|
IRepository<CollectItemType, Guid> collectItemTypeRepository,
|
|
IRepository<AsbitemGuide> asbitemGuideRepository,
|
|
IRepository<Patient, Guid> patientRepository,
|
|
IRepository<PatientRegister, Guid> patientRegisterRepository,
|
|
IRepository<RegisterCheck, Guid> registerCheckRepository,
|
|
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
|
|
IRepository<RegisterCheckItem> registerCheckItemRepository,
|
|
IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
|
|
RegisterCheckItemManager registerCheckItemManager,
|
|
IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
|
|
IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository,
|
|
IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
|
|
IRepository<SumSummaryContent, Guid> sumSummaryContentRepository,
|
|
IRepository<SumDiagnosis> sumDiagnosisRepository,
|
|
IConfiguration configuration,
|
|
MyUserAppService myUserAppService,
|
|
ColumnReferenceAppService columnReferenceAppService,
|
|
IRepository<CardType, Guid> cardTypeRepository,
|
|
IRepository<CardRegister, Guid> cardRegisterRepository,
|
|
IServiceScopeFactory serviceScopeFactory,
|
|
IDbContextProvider<PeisDbContext> dbContextProvider,
|
|
ICurrentUser currentUser,
|
|
IRepository<GuideType, char> guideTypeRepository,
|
|
IRepository<MedicalReportType, char> medicalReportTypeRepository,
|
|
IRepository<MedicalConclusionType> medicalConclusionTypeRepository,
|
|
IRepository<SampleContainer, Guid> sampleContainerRepository,
|
|
IRepository<CustomerOrgType, Guid> customerOrgTypeRepository,
|
|
IRepository<OrganizationUnit, Guid> organizationUnitRepository,
|
|
PeisOrganizationUnitManager organizationUnitManager,
|
|
IRepository<Sex> sexRepository,
|
|
IRepository<ForSex> forSexRepository,
|
|
IRepository<MaritalStatus> maritalStatusRepository,
|
|
IRepository<ResultStatus> resultStatusRepository,
|
|
IRepository<PayMode> payModeRepository,
|
|
IRepository<DiagnosisLevel, short> diagnosisLevelRepository,
|
|
IdentityUserManager identityUserManager,
|
|
IRepository<IdentityUserOrganizationUnit> identityUserOrganizationUnitRepository,
|
|
IRepository<CommonTable, Guid> commonTableRepository,
|
|
IRepository<Room, Guid> roomRepository,
|
|
IRepository<RoomDetail> roomDetailRepository,
|
|
IRepository<UserItemType> userItemTypeRepository)
|
|
{
|
|
_unitOfWorkManager = unitOfWorkManager;
|
|
_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;
|
|
_diagnosisRepository = diagnosisRepository;
|
|
_suggestionRepository = suggestionRepository;
|
|
_itemResultTemplateRepository = itemResultTemplateRepository;
|
|
_ItemResultMatchRepository = itemResultMatchRepository;
|
|
_menuInfoRepository = menuInfoRepository;
|
|
_customerOrgRepository = customerOrgRepository;
|
|
_customerOrgManager = customerOrgManager;
|
|
_customerOrgRegisterRepository = customerOrgRegisterRepository;
|
|
_customerOrgGroupRepository = customerOrgGroupRepository;
|
|
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
|
|
_nationRepository = nationRepository;
|
|
_logger = logger;
|
|
_identityUserRepository = identityUserRepository;
|
|
_medicalConclusionRepository = medicalConclusionRepository;
|
|
_sampleGroupRepository = sampleGroupRepository;
|
|
_sampleGroupDetailRepository = sampleGroupDetailRepository;
|
|
_sysParmTypeRepository = sysParmTypeRepository;
|
|
_sysParmRepository = sysParmRepository;
|
|
_sysParmValueRepository = sysParmValueRepository;
|
|
_collectItemTypeRepository = collectItemTypeRepository;
|
|
_asbitemGuideRepository = asbitemGuideRepository;
|
|
_patientRepository = patientRepository;
|
|
_patientRegisterRepository = patientRegisterRepository;
|
|
_registerCheckRepository = registerCheckRepository;
|
|
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
|
|
_registerCheckItemRepository = registerCheckItemRepository;
|
|
_registerCheckSummaryRepository = registerCheckSummaryRepository;
|
|
_registerCheckItemManager = registerCheckItemManager;
|
|
_sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
|
|
_sumSuggestionContentRepository = sumSuggestionContentRepository;
|
|
_sumSummaryHeaderRepository = sumSummaryHeaderRepository;
|
|
_sumSummaryContentRepository = sumSummaryContentRepository;
|
|
_sumDiagnosisRepository = sumDiagnosisRepository;
|
|
_configuration = configuration;
|
|
_myUserAppService = myUserAppService;
|
|
_columnReferenceAppService = columnReferenceAppService;
|
|
_cardTypeRepository = cardTypeRepository;
|
|
_cardRegisterRepository = cardRegisterRepository;
|
|
_serviceScopeFactory = serviceScopeFactory;
|
|
_dbContextProvider = dbContextProvider;
|
|
_currentUser = currentUser;
|
|
_guideTypeRepository = guideTypeRepository;
|
|
_medicalReportTypeRepository = medicalReportTypeRepository;
|
|
_medicalConclusionTypeRepository = medicalConclusionTypeRepository;
|
|
_sampleContainerRepository = sampleContainerRepository;
|
|
_customerOrgTypeRepository = customerOrgTypeRepository;
|
|
_organizationUnitRepository = organizationUnitRepository;
|
|
_organizationUnitManager = organizationUnitManager;
|
|
_sexRepository = sexRepository;
|
|
_forSexRepository = forSexRepository;
|
|
_maritalStatusRepository = maritalStatusRepository;
|
|
_resultStatusRepository = resultStatusRepository;
|
|
_payModeRepository = payModeRepository;
|
|
_diagnosisLevelRepository = diagnosisLevelRepository;
|
|
_identityUserManager = identityUserManager;
|
|
_identityUserOrganizationUnitRepository = identityUserOrganizationUnitRepository;
|
|
_commonTableRepository = commonTableRepository;
|
|
_roomRepository = roomRepository;
|
|
_roomDetailRepository = roomDetailRepository;
|
|
_userItemTypeRepository = userItemTypeRepository;
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 默认数据处理
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("api/app/CCTJExportData/HandDefaultData")]
|
|
public async Task HandDefaultData()
|
|
{
|
|
#region 默认指引类别
|
|
var isDefaultGuidType = await _guideTypeRepository.FirstOrDefaultAsync(f => f.Id == defaultGuidTypeId);
|
|
if (isDefaultGuidType == null)
|
|
{
|
|
List<GuideType> guideTypes = new List<GuideType>();
|
|
|
|
guideTypes.Add(new GuideType(defaultGuidTypeId)
|
|
{
|
|
DisplayName = "普通检查",
|
|
SimpleCode = "PTJC",
|
|
DisplayOrder = 1
|
|
});
|
|
guideTypes.Add(new GuideType('1')
|
|
{
|
|
DisplayName = "检验",
|
|
SimpleCode = "JY",
|
|
DisplayOrder = 2
|
|
});
|
|
guideTypes.Add(new GuideType('2')
|
|
{
|
|
DisplayName = "特检",
|
|
SimpleCode = "TJ",
|
|
DisplayOrder = 3
|
|
});
|
|
guideTypes.Add(new GuideType('3')
|
|
{
|
|
DisplayName = "放射",
|
|
SimpleCode = "FS",
|
|
DisplayOrder = 4
|
|
});
|
|
|
|
await _guideTypeRepository.InsertManyAsync(guideTypes);
|
|
}
|
|
#endregion
|
|
|
|
#region 默认体检报告类别
|
|
var isDefaultMedicalReportType = await _medicalReportTypeRepository.FirstOrDefaultAsync(f => f.Id == defaultMedicalReportTypeId);
|
|
if (isDefaultMedicalReportType == null)
|
|
{
|
|
List<MedicalReportType> medicalReportTypes = new List<MedicalReportType>();
|
|
medicalReportTypes.Add(new MedicalReportType(defaultMedicalReportTypeId)
|
|
{
|
|
DisplayName = "普通检查",
|
|
SimpleCode = "PTJC",
|
|
DisplayOrder = 1
|
|
});
|
|
medicalReportTypes.Add(new MedicalReportType('1')
|
|
{
|
|
DisplayName = "检验",
|
|
SimpleCode = "JY",
|
|
DisplayOrder = 2
|
|
});
|
|
medicalReportTypes.Add(new MedicalReportType('2')
|
|
{
|
|
DisplayName = "特检",
|
|
SimpleCode = "TJ",
|
|
DisplayOrder = 3
|
|
});
|
|
medicalReportTypes.Add(new MedicalReportType('3')
|
|
{
|
|
DisplayName = "放射",
|
|
SimpleCode = "FS",
|
|
DisplayOrder = 4
|
|
});
|
|
|
|
await _medicalReportTypeRepository.InsertManyAsync(medicalReportTypes);
|
|
}
|
|
#endregion
|
|
|
|
#region 默认体检结论类别
|
|
var isDefaultMedicalConclusionType = await _medicalConclusionTypeRepository.FirstOrDefaultAsync(f => f.Id == defaultMedicalConclusionType);
|
|
if (isDefaultMedicalConclusionType == null)
|
|
{
|
|
var defaultEnt = new MedicalConclusionType
|
|
{
|
|
Id = defaultMedicalConclusionType,
|
|
DisplayName = "社会体检",
|
|
DisplayOrder = 1
|
|
};
|
|
|
|
await _medicalConclusionTypeRepository.InsertAsync(defaultEnt);
|
|
}
|
|
#endregion
|
|
|
|
#region 默认体检中心
|
|
var isDefaultMedicalCenter = await _organizationUnitRepository.FirstOrDefaultAsync(f => f.Id == defaultMedicalCenterId);
|
|
if (isDefaultMedicalCenter == null)
|
|
{
|
|
OrganizationUnit defaultEnt = new OrganizationUnit(defaultMedicalCenterId, "石家庄长城体检中心", null);
|
|
defaultEnt.SetProperty("IsPeis", 'Y');
|
|
|
|
await _organizationUnitManager.CreateAsync(defaultEnt);
|
|
}
|
|
#endregion
|
|
|
|
#region 默认容器
|
|
var isDefaultSampleContainer = await _sampleContainerRepository.FirstOrDefaultAsync(f => f.Id == defaultSampleContainerId);
|
|
if (isDefaultSampleContainer == null)
|
|
{
|
|
var defaultEnt = new SampleContainer(defaultSampleContainerId)
|
|
{
|
|
DisplayName = "管子",
|
|
SimpleCode = "GZ",
|
|
DisplayOrder = 1,
|
|
ContainerColor = 16711680,
|
|
ContainerColorName = "其它",
|
|
ContainerRemark = ""
|
|
};
|
|
|
|
await _sampleContainerRepository.InsertAsync(defaultEnt);
|
|
}
|
|
//var isDefaultSampleContainer = await _sampleContainerRepository.CountAsync();
|
|
//if (isDefaultSampleContainer == 0)
|
|
//{
|
|
// List<SampleContainer> sampleContainers = new List<SampleContainer>();
|
|
|
|
// var oldSpecimenTypeList = await oldDb.Ado.GetDataTableAsync(" select * from specimen_type order by display_order asc");
|
|
// if (oldSpecimenTypeList.Rows.Count > 0)
|
|
// {
|
|
// foreach (DataRow row in oldSpecimenTypeList.Rows)
|
|
// {
|
|
|
|
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
// {
|
|
// var tempId = GuidGenerator.Create();
|
|
// if (row["specimen_type_id"].ToString() == "0011")
|
|
// {
|
|
// tempId = defaultSampleContainerId;
|
|
// }
|
|
// var defaultEnt = new SampleContainer(tempId)
|
|
// {
|
|
// DisplayName = row["specimen_type_name"].ToString(),
|
|
// SimpleCode = LanguageConverter.GetPYSimpleCode(row["specimen_type_name"].ToString()),
|
|
// DisplayOrder = oldSpecimenTypeList.Rows.IndexOf(row) + 1,
|
|
// ContainerColor = 16711680,
|
|
// ContainerColorName = "其它",
|
|
// ContainerRemark = ""
|
|
// };
|
|
|
|
// await _sampleContainerRepository.InsertAsync(defaultEnt);
|
|
|
|
// var fieldComparison = new FieldComparison
|
|
// {
|
|
// TableName = "sample_container",
|
|
// FieldName = "id",
|
|
// NewKeyValue = tempId.ToString(),
|
|
// OldKeyValue = row["specimen_type_id"].ToString()
|
|
// };
|
|
|
|
// await _fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
// await uow.CompleteAsync();
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
// await _diagnosisLevelRepository.InsertManyAsync(diagnosisLevels);
|
|
//}
|
|
#endregion
|
|
|
|
#region 默认单位性质
|
|
var isDefaultOrgType = await _customerOrgTypeRepository.FirstOrDefaultAsync(f => f.Id == defaultOrgTypeId);
|
|
if (isDefaultOrgType == null)
|
|
{
|
|
var defaultEnt = new CustomerOrgType(defaultOrgTypeId)
|
|
{
|
|
DisplayName = "其它",
|
|
SimpleCode = "QT",
|
|
DisplayOrder = 1
|
|
};
|
|
|
|
await _customerOrgTypeRepository.InsertAsync(defaultEnt);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 诊断级别
|
|
var isDiagnosisLevel = await _diagnosisLevelRepository.CountAsync();
|
|
if (isDiagnosisLevel == 0)
|
|
{
|
|
List<DiagnosisLevel> diagnosisLevels = new List<DiagnosisLevel>();
|
|
|
|
diagnosisLevels.Add(new DiagnosisLevel(1)
|
|
{
|
|
DisplayName = "一级",
|
|
DisplayOrder = 1
|
|
|
|
});
|
|
diagnosisLevels.Add(new DiagnosisLevel(2)
|
|
{
|
|
DisplayName = "二级",
|
|
DisplayOrder = 2
|
|
});
|
|
diagnosisLevels.Add(new DiagnosisLevel(3)
|
|
{
|
|
DisplayName = "三级",
|
|
DisplayOrder = 3
|
|
});
|
|
diagnosisLevels.Add(new DiagnosisLevel(4)
|
|
{
|
|
DisplayName = "四级",
|
|
DisplayOrder = 4
|
|
});
|
|
|
|
await _diagnosisLevelRepository.InsertManyAsync(diagnosisLevels);
|
|
}
|
|
#endregion
|
|
|
|
await CreateSexAsync();
|
|
|
|
await CreateForSexAsync();
|
|
|
|
await CreateMaritalStatusAsync();
|
|
|
|
await CreateResultStatusAsync();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 处理基础数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("api/app/CCTJExportData/HandBaseData")]
|
|
public async Task HandBaseData()
|
|
{
|
|
await TransferDeviceTypeData();
|
|
await TransferUnitData();
|
|
await TransferMedicalTypeData();
|
|
await TransferPersonnelTypeData();
|
|
await TransferInvoiceItemTypeData();
|
|
await TransferCollectItemTypeData();
|
|
await TransferItemTypeData();
|
|
await TransferSampleTypeData();
|
|
await TransferNationData();
|
|
await TransferMedicalConclusionData();
|
|
await TransferUserData();
|
|
await TransferUserOrganizationUnitData();
|
|
await TransferPayModeData();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 处理基础项目相关数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("api/app/CCTJExportData/HandBaseItemData")]
|
|
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 TransferFourCustomerOrgData();
|
|
await TransferCustomerOrgRegisterData();
|
|
await TransferCustomerOrgGroupData();
|
|
await TransferCustomerOrgGroupDetailData();
|
|
}
|
|
|
|
|
|
|
|
#region 基础数据
|
|
|
|
/// <summary>
|
|
/// 迁移仪器类别数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferDeviceTypeData()
|
|
{
|
|
var count = await _deviceTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldDeviceTypeList = await oldDb.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("仪器类别数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移数值单位数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferUnitData()
|
|
{
|
|
var count = await _unitRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldUnitList = await oldDb.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($"数值单位数据已存在,未处理");
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移体检类别数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferMedicalTypeData()
|
|
{
|
|
var count = await _medicalTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldMedicalTypeList = await oldDb.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($"体检类别数据已存在,未处理");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移人员类别数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferPersonnelTypeData()
|
|
{
|
|
var count = await _personnelTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldPersonnelTypeList = await oldDb.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($"人员类别数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移发票项目类别数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferInvoiceItemTypeData()
|
|
{
|
|
var count = await _invoiceItemTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldInvoiceItemTypeList = await oldDb.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($"发票项目类别数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移汇总项目类别数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferCollectItemTypeData()
|
|
{
|
|
var count = await _collectItemTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldCollectItemTypeList = await oldDb.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($"汇总项目类别数据已存在,未处理");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移项目类别-科室数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferItemTypeData()
|
|
{
|
|
var count = await _itemTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldItemTypeList = await oldDb.Ado.GetDataTableAsync("select department_id,department_type,department_name,merge_asbitem_flag,print_pacs_barcode_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,
|
|
GuidTypeId = Convert.ToChar(row["department_type"]),
|
|
IsMergeAsbitem = Convert.ToChar(row["merge_asbitem_flag"]),
|
|
IsWrap = 'N',
|
|
MedicalReportTypeId = Convert.ToChar(row["department_type"]),
|
|
//MedicalReportTypeId = defaultMedicalReportTypeId,
|
|
ParentId = null,
|
|
PathCode = _itemTypeManager.CreatePathCode(null).Result,
|
|
IsCheckRequest = Convert.ToChar(row["print_pacs_barcode_flag"])
|
|
};
|
|
|
|
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($"项目类别数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移标本类型数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferSampleTypeData()
|
|
{
|
|
var count = await _sampleTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldSampleTypeList = await oldDb.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($"标本类型数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 民族数据对照
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferNationData()
|
|
{
|
|
var count = await _nationRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldNationList = await oldDb.Ado.GetDataTableAsync("select * from nation order by nation_id asc");
|
|
if (oldNationList.Rows.Count > 0)
|
|
{
|
|
|
|
foreach (DataRow row in oldNationList.Rows)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
|
|
var data = new Nation()
|
|
{
|
|
Id = row["nation_id"].ToString(),
|
|
CountryCode = "",
|
|
DisplayName = row["nation_name"].ToString(),
|
|
DisplayOrder = oldNationList.Rows.IndexOf(row) + 1,
|
|
SimpleCode = row["py_simple_code"].ToString()
|
|
};
|
|
|
|
await _nationRepository.InsertAsync(data);
|
|
|
|
var fieldComparison = new FieldComparison
|
|
{
|
|
TableName = "nation",
|
|
FieldName = "id",
|
|
NewKeyValue = row["nation_id"].ToString(),
|
|
OldKeyValue = row["nation_id"].ToString()
|
|
};
|
|
|
|
await _fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
await uow.CompleteAsync();
|
|
}
|
|
}
|
|
|
|
}
|
|
_logger.LogInformation($"民族数据处理完毕,处理数量{oldNationList.Rows.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation($"民族数据已存在,未处理");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移体检结论数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferMedicalConclusionData()
|
|
{
|
|
var count = await _medicalConclusionRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldMedicalConclusionList = await oldDb.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("体检结论数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移用户对应的科室
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferUserOrganizationUnitData()
|
|
{
|
|
var count = await _identityUserOrganizationUnitRepository.CountAsync();
|
|
if (count == 0)
|
|
{
|
|
var identityUserList = await _identityUserRepository.GetListAsync();
|
|
if (identityUserList.Count > 0)
|
|
{
|
|
foreach (var item in identityUserList)
|
|
{
|
|
await _identityUserManager.SetOrganizationUnitsAsync(item.Id, defaultMedicalCenterId);
|
|
}
|
|
}
|
|
_logger.LogInformation($"用户对应的科室处理完毕,处理数量{identityUserList.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation("用户对应的科室已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移收费方式数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferPayModeData()
|
|
{
|
|
var count = await _payModeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldPaymentModeList = await oldDb.Ado.GetDataTableAsync("select payment_mode_id,payment_mode_name from payment_mode order by display_order asc");
|
|
if (oldPaymentModeList.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow row in oldPaymentModeList.Rows)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
|
|
var data = new PayMode()
|
|
{
|
|
Id = row["payment_mode_id"].ToString(),
|
|
DisplayName = row["payment_mode_name"].ToString(),
|
|
DisplayOrder = oldPaymentModeList.Rows.IndexOf(row) + 1,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode(row["payment_mode_name"].ToString()),
|
|
IsActive = 'Y'
|
|
};
|
|
|
|
await _payModeRepository.InsertAsync(data);
|
|
|
|
await uow.CompleteAsync();
|
|
}
|
|
}
|
|
}
|
|
_logger.LogInformation($"收费方式数据处理完毕,处理数量{oldPaymentModeList.Rows.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation("收费方式数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 基础项目相关数据
|
|
|
|
/// <summary>
|
|
/// 迁移项目数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferItemData()
|
|
{
|
|
var count = await _itemRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldItemList = await oldDb.Ado.GetDataTableAsync("select a.* from item as a left join department as b on a.department_id=b.department_id order by b.display_order,a.display_order");
|
|
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,
|
|
IsCheckRequest = itemTypeEnt.IsCheckRequest
|
|
};
|
|
|
|
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,
|
|
ForSexId = ForSexFlag.All,
|
|
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("项目数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移组合项目数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferAsbitemData()
|
|
{
|
|
var count = await _asbitemRepository.GetCountAsync();
|
|
|
|
if (count == 0)
|
|
{
|
|
var oldAsbitemList = await oldDb.Ado.GetDataTableAsync("select a.* from asbitem as a left join department as b on a.department_id=b.department_id order by b.display_order,a.display_order ");
|
|
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,
|
|
IsCheckRequest = itemTypeEnt.IsCheckRequest
|
|
};
|
|
|
|
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(),
|
|
BarcodeMode = '0',
|
|
DiseaseScreeningTypeId = null,
|
|
ForPregnantFlag = 'A',
|
|
IsWebAppoint = 'N',
|
|
MaritalStatusId = 'A',
|
|
Warn = "",
|
|
IsOutsend = Convert.ToChar(string.IsNullOrWhiteSpace(row["outsend_flag"].ToString()) ? "N" : row["outsend_flag"].ToString())
|
|
};
|
|
|
|
await _asbitemRepository.InsertAsync(data);
|
|
|
|
|
|
#region 指引信息
|
|
|
|
if (!string.IsNullOrWhiteSpace(row["prompt"].ToString()))
|
|
{
|
|
var asbitemGuideData = new AsbitemGuide
|
|
{
|
|
AsbitemId = asbitemId,
|
|
ForSexId = ForSexFlag.All,
|
|
Guide = row["prompt"].ToString(),
|
|
MedicalCenterId = defaultMedicalCenterId
|
|
};
|
|
|
|
await _asbitemGuideRepository.InsertAsync(asbitemGuideData);
|
|
}
|
|
|
|
#endregion
|
|
|
|
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("组合项目数据已存在,未处理");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移组合项目明细数据 无字典
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferAsbitemDetailData()
|
|
{
|
|
var count = await _asbitemDetailRepository.GetCountAsync();
|
|
|
|
if (count == 0)
|
|
{
|
|
var oldAsbitemDetailList = await oldDb.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("组合项目明细数据已存在,未处理");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移体检套餐数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferMedicalPackageData()
|
|
{
|
|
var count = await _medicalPackageRepository.GetCountAsync();
|
|
|
|
if (count == 0)
|
|
{
|
|
var oldMedicalPackageList = await oldDb.Ado.GetDataTableAsync("select * from medical_package order by display_order");
|
|
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(),
|
|
AgeLowerLimit = 0,
|
|
AgeUpperLimit = 200,
|
|
IsBasicRecommend = 'N',
|
|
IsWebAppoint = 'N',
|
|
MaritalStatusId = 'A'
|
|
};
|
|
|
|
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("体检套餐数据已存在,未处理");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移体检套餐明细数据 无字典
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferMedicalPackageDetailData()
|
|
{
|
|
var count = await _medicalPackageDetailRepository.GetCountAsync();
|
|
|
|
if (count == 0)
|
|
{
|
|
var oldMedicalPackageDetailList = await oldDb.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("体检套餐明细数据已存在,未处理");
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移诊断设置数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferDiagnosisData()
|
|
{
|
|
var count = await _diagnosisRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldDiagnosisList = await oldDb.Ado.GetDataTableAsync("select a.* from diagnosis as a left join department as b on a.department_id=b.department_id order by b.display_order,a.display_order ");
|
|
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,
|
|
IsCheckRequest = itemTypeEnt.IsCheckRequest
|
|
};
|
|
|
|
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("诊断设置数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移诊断建议数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferSuggestionData()
|
|
{
|
|
var count = await _suggestionRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldSuggestionList = await oldDb.Ado.GetDataTableAsync("select * from suggestion order by display_order,suggestion_id ");
|
|
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();
|
|
|
|
if (await _suggestionRepository.FirstOrDefaultAsync(f => f.DiagnosisId == DiagnosisId && f.SuggestionContent == row["suggestion_content"].ToString()) == null)
|
|
{
|
|
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("诊断建议数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移项目结果模板数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferItemResultTemplateData()
|
|
{
|
|
var count = await _itemResultTemplateRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldItemResultTemplateList = await oldDb.Ado.GetDataTableAsync("select * from item_result_template order by display_order,item_result_template_id ");
|
|
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();
|
|
|
|
if (await _itemResultTemplateRepository.FirstOrDefaultAsync(f => f.ItemId == ItemId && f.Result == row["result"].ToString()) == null)
|
|
{
|
|
|
|
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("项目结果模板数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移项目结果匹配数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferItemResultMatchData()
|
|
{
|
|
var count = await _ItemResultMatchRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldItemResultMatchList = await oldDb.Ado.GetDataTableAsync("select * from item_result_match order by display_order,item_result_match_id ");
|
|
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("项目结果匹配数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移项目参考范围数据 无字典
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferReferenceRangeData()
|
|
{
|
|
var count = (await _referenceRangeRepository.GetQueryableAsync()).Where(m => m.ReferenceRangeTypeFlag != ItemReferenceRangeTypeFlag.Character).Count();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldReferenceRangeList = await oldDb.Ado.GetDataTableAsync("select * from reference_range order by reference_range_id ");
|
|
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("项目参考范围数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移条码分组数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[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 oldDb.Ado.GetDataTableAsync("select * from vessels_type order by display_order");
|
|
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,
|
|
SamplePrintCount = string.IsNullOrWhiteSpace(row["label_num"].ToString()) ? 0 : Convert.ToInt32(row["label_num"].ToString()),
|
|
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("条码分组数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移条码分组明细数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferSampleGroupDetailData()
|
|
{
|
|
var count = await _sampleGroupDetailRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldSampleGroupDetailList = await oldDb.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("条码分组明细数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移体检单位数据 一级
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferTopCustomerOrgData()
|
|
{
|
|
var count = await _customerOrgRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var medicalTypeIdFieldComparisonList = (await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "medical_Type").ToList();
|
|
|
|
var oldCustomerOrgList = await oldDb.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();
|
|
|
|
if (row["org_id"].ToString() == "00000")
|
|
{
|
|
customerOrgId = Guid.Parse("00000000-0000-0000-0000-000000000001");
|
|
}
|
|
|
|
#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
|
|
#region 转换体检类别ID
|
|
|
|
|
|
Guid? medicalTypeId = null;
|
|
|
|
var oldMedicalTypeId = row["medical_type_id"].ToString();
|
|
if (!string.IsNullOrWhiteSpace(oldMedicalTypeId))
|
|
{
|
|
var medicalTypeIdFieldComparison = medicalTypeIdFieldComparisonList.FirstOrDefault(f => f.OldKeyValue == oldMedicalTypeId);
|
|
if (medicalTypeIdFieldComparison != null)
|
|
medicalTypeId = Guid.Parse(medicalTypeIdFieldComparison.NewKeyValue);
|
|
}
|
|
#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(),
|
|
CountryOrgCode = row["org_id"].ToString(),
|
|
SalesPerson = "",
|
|
SalesPersonPhone = "",
|
|
MedicalTypeId = medicalTypeId
|
|
};
|
|
|
|
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("体检单位一级数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移体检单位数据 二级
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferTwoCustomerOrgData()
|
|
{
|
|
var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 5).Count();
|
|
if (count == 0)
|
|
{
|
|
var medicalTypeIdFieldComparisonList = (await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "medical_Type").ToList();
|
|
|
|
|
|
var oldCustomerOrgList = await oldDb.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=8 order by org_id asc");
|
|
if (oldCustomerOrgList.Rows.Count > 0)
|
|
{
|
|
List<CustomerOrg> customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
|
|
List<FieldComparison> 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 转换体检类别ID
|
|
|
|
|
|
Guid? medicalTypeId = null;
|
|
|
|
var oldMedicalTypeId = row["medical_type_id"].ToString();
|
|
if (!string.IsNullOrWhiteSpace(oldMedicalTypeId))
|
|
{
|
|
var medicalTypeIdFieldComparison = medicalTypeIdFieldComparisonList.FirstOrDefault(f => f.OldKeyValue == oldMedicalTypeId);
|
|
if (medicalTypeIdFieldComparison != null)
|
|
medicalTypeId = Guid.Parse(medicalTypeIdFieldComparison.NewKeyValue);
|
|
}
|
|
#endregion
|
|
|
|
#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(),
|
|
CountryOrgCode = row["org_id"].ToString(),
|
|
SalesPerson = "",
|
|
SalesPersonPhone = "",
|
|
MedicalTypeId = medicalTypeId
|
|
};
|
|
|
|
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("体检单位二级数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移体检单位数据 三级
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferThreeCustomerOrgData()
|
|
{
|
|
var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 11).Count();
|
|
if (count == 0)
|
|
{
|
|
var medicalTypeIdFieldComparisonList = (await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "medical_Type").ToList();
|
|
|
|
var oldCustomerOrgList = await oldDb.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=11 order by org_id asc");
|
|
if (oldCustomerOrgList.Rows.Count > 0)
|
|
{
|
|
List<CustomerOrg> customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
|
|
List<FieldComparison> 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
|
|
|
|
#region 转换体检类别ID
|
|
|
|
|
|
Guid? medicalTypeId = null;
|
|
|
|
var oldMedicalTypeId = row["medical_type_id"].ToString();
|
|
if (!string.IsNullOrWhiteSpace(oldMedicalTypeId))
|
|
{
|
|
var medicalTypeIdFieldComparison = medicalTypeIdFieldComparisonList.FirstOrDefault(f => f.OldKeyValue == oldMedicalTypeId);
|
|
if (medicalTypeIdFieldComparison != null)
|
|
medicalTypeId = Guid.Parse(medicalTypeIdFieldComparison.NewKeyValue);
|
|
}
|
|
#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(),
|
|
CountryOrgCode = row["org_id"].ToString(),
|
|
SalesPerson = "",
|
|
SalesPersonPhone = "",
|
|
MedicalTypeId = medicalTypeId
|
|
};
|
|
|
|
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("体检单位三级数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移体检单位数据 四级
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferFourCustomerOrgData()
|
|
{
|
|
var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 17).Count();
|
|
if (count == 0)
|
|
{
|
|
var medicalTypeIdFieldComparisonList = (await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "medical_Type").ToList();
|
|
|
|
var oldCustomerOrgList = await oldDb.Ado.GetDataTableAsync("select * from [dbo].[org] where len(org_id)=14 order by org_id asc");
|
|
if (oldCustomerOrgList.Rows.Count > 0)
|
|
{
|
|
List<CustomerOrg> customerOrgList = await _customerOrgRepository.GetListAsync(m => m.ParentId == null);
|
|
List<FieldComparison> 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, 11);
|
|
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
|
|
|
|
#region 转换体检类别ID
|
|
|
|
|
|
Guid? medicalTypeId = null;
|
|
|
|
var oldMedicalTypeId = row["medical_type_id"].ToString();
|
|
if (!string.IsNullOrWhiteSpace(oldMedicalTypeId))
|
|
{
|
|
var medicalTypeIdFieldComparison = medicalTypeIdFieldComparisonList.FirstOrDefault(f => f.OldKeyValue == oldMedicalTypeId);
|
|
if (medicalTypeIdFieldComparison != null)
|
|
medicalTypeId = Guid.Parse(medicalTypeIdFieldComparison.NewKeyValue);
|
|
}
|
|
#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(),
|
|
CountryOrgCode = row["org_id"].ToString(),
|
|
SalesPerson = "",
|
|
SalesPersonPhone = "",
|
|
MedicalTypeId = medicalTypeId
|
|
};
|
|
|
|
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("体检单位四级数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移单位体检次数数据 无字典
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferCustomerOrgRegisterData()
|
|
{
|
|
var count = await _customerOrgRegisterRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldCustomerOrgRegisterList = await oldDb.Ado.GetDataTableAsync("select * from org_medical_register order by org_medical_times");
|
|
if (oldCustomerOrgRegisterList.Rows.Count > 0)
|
|
{
|
|
List<FieldComparison> 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("单位体检次数数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移单位分组
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferCustomerOrgGroupData()
|
|
{
|
|
var count = await _customerOrgGroupRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldCustomerOrgGroupList = await oldDb.Ado.GetDataTableAsync("select * from org_group order by display_order asc");
|
|
if (oldCustomerOrgGroupList.Rows.Count > 0)
|
|
{
|
|
List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org");
|
|
List<CustomerOrgRegister> 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(),
|
|
CanAddMoney = 0
|
|
};
|
|
|
|
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("单位分组数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移单位分组明细数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
public async Task TransferCustomerOrgGroupDetailData()
|
|
{
|
|
var count = await _customerOrgGroupDetailRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
int pclcount = 200;
|
|
|
|
var oldCustomerOrgGroupList = await oldDb.Ado.GetDataTableAsync("select * from org_group_detail ");
|
|
if (oldCustomerOrgGroupList.Rows.Count > 0)
|
|
{
|
|
List<CustomerOrgGroupDetail> tempList = new List<CustomerOrgGroupDetail>();
|
|
|
|
foreach (DataRow row in oldCustomerOrgGroupList.Rows)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
//新系统单位分组ID
|
|
Guid customerOrgGroupId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["org_group_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
|
|
decimal price = 0;
|
|
if (!decimal.TryParse(row["price"].ToString(), out price))
|
|
{
|
|
price = 0;
|
|
}
|
|
|
|
var data = new CustomerOrgGroupDetail
|
|
{
|
|
AsbitemId = asbitemId,
|
|
CustomerOrgGroupId = customerOrgGroupId,
|
|
Price = price,
|
|
Amount = 1
|
|
};
|
|
|
|
tempList.Add(data);
|
|
|
|
if (tempList.Count >= pclcount)
|
|
{
|
|
await _customerOrgGroupDetailRepository.InsertManyAsync(tempList);
|
|
|
|
tempList = new List<CustomerOrgGroupDetail>();
|
|
|
|
}
|
|
else
|
|
{
|
|
if (oldCustomerOrgGroupList.Rows.IndexOf(row) == oldCustomerOrgGroupList.Rows.Count - 1)
|
|
{
|
|
await _customerOrgGroupDetailRepository.InsertManyAsync(tempList);
|
|
}
|
|
}
|
|
|
|
await uow.CompleteAsync();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
_logger.LogInformation($"单位分组明细数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation("单位分组明细数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 导入业务数据
|
|
[HttpPost("api/app/CCTJExportData/InitFieldComparisonCache")]
|
|
public async Task InitFieldComparisonCache()
|
|
{
|
|
fieldComparisonTempList = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName != "patient_register").ToList();
|
|
asbitemFieldComparisonTempList = fieldComparisonTempList.Where(o => o.TableName == "asbitem").ToList();
|
|
itemFieldComparisonTempList = fieldComparisonTempList.Where(o => o.TableName == "item").ToList();
|
|
_customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
|
|
_userList = await _identityUserRepository.GetListAsync();
|
|
_logger.LogInformation($"组合项目数:{asbitemFieldComparisonTempList.Count},项目数:{itemFieldComparisonTempList.Count}");
|
|
}
|
|
|
|
|
|
private int hangPatientRegisterCount = 0;
|
|
private int hangPatientRegisterErrorCount = 0;
|
|
private int hangPatientRegisterReverseCount = 0;
|
|
|
|
/// <summary>
|
|
/// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间
|
|
/// </summary>
|
|
/// <param name="handCount">每次处理的人员数量</param>
|
|
/// <param name="startdate">开始日期</param>
|
|
/// <param name="enddate">截止日期</param>
|
|
/// <param name="isGo">是否继续处理</param>
|
|
/// <returns></returns>
|
|
[HttpPost("api/app/CCTJExportData/TransferPatientRegisterWithDetailData")]
|
|
[RemoteService(false)]
|
|
public async Task TransferPatientRegisterWithDetailData(int handCount, string startdate, string enddate, bool isGo = false)
|
|
{
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
stopwatch.Start();
|
|
_logger.LogInformation($"开始导入数据");
|
|
//当前导入的ID
|
|
string nextKeyValue = oldDb.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register' ");
|
|
|
|
string sqlPatientRegister = "";
|
|
|
|
if (!string.IsNullOrWhiteSpace(startdate) && !string.IsNullOrWhiteSpace(enddate))
|
|
{
|
|
sqlPatientRegister = $"select top {handCount} * from patient_register where patient_register_id>'{nextKeyValue}'" +
|
|
$" and register_date>='{startdate}' and register_date<'{enddate}' order by patient_register_id asc";
|
|
|
|
}
|
|
else
|
|
{
|
|
sqlPatientRegister = $"select top {handCount} * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc";
|
|
|
|
}
|
|
|
|
DataTable oldPatientRegisterList = await oldDb.Ado.GetDataTableAsync(sqlPatientRegister);
|
|
stopwatch.Stop();
|
|
_logger.LogInformation($"获取要导入的人员总数耗时:{stopwatch.ElapsedMilliseconds}" + $"共{oldPatientRegisterList.Rows.Count}条");
|
|
if (oldPatientRegisterList.Rows.Count > 0)
|
|
{
|
|
Stopwatch stopwatch2 = new Stopwatch();
|
|
stopwatch2.Start();
|
|
var userList = await _identityUserRepository.GetListAsync();
|
|
List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
|
|
stopwatch2.Stop();
|
|
_logger.LogInformation($"获取所有客户单位耗时:{stopwatch2.ElapsedMilliseconds}");
|
|
Stopwatch stopwatch5 = new Stopwatch();
|
|
stopwatch5.Start();
|
|
//Parallel.ForEach(oldPatientRegisterList.AsEnumerable(), row =>
|
|
//{
|
|
|
|
//});
|
|
foreach (DataRow row in oldPatientRegisterList.Rows)
|
|
{
|
|
hangPatientRegisterCount++;
|
|
await ImportSingle(customerOrgRegisterList, userList, row);
|
|
}
|
|
|
|
|
|
//await Parallel.ForEachAsync(oldPatientRegisterList.AsEnumerable(), async (row, token) =>
|
|
//{
|
|
// hangPatientRegisterCount++;
|
|
// await ImportSingleParallel(customerOrgRegisterList, userList, row);
|
|
//});
|
|
stopwatch5.Stop();
|
|
_logger.LogInformation($"处理完全部人员耗时:{stopwatch5.ElapsedMilliseconds}");
|
|
_logger.LogInformation($"人员数据处理{oldPatientRegisterList.Rows.Count}条,当前总数{hangPatientRegisterCount}");
|
|
if (isGo)
|
|
await TransferPatientRegisterWithDetailData(handCount, startdate, enddate, isGo);
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation("人员数据已处理完,没有查询到需要处理的人员");
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 人员信息导入
|
|
/// </summary>
|
|
/// <param name="patientRegisterIdFrom"></param>
|
|
/// <param name="patientRegisterIdTo"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
[HttpPost("api/app/CCTJExportData/TransferPatientRegisterWithDetailDataById")]
|
|
public async Task TransferPatientRegisterWithDetailDataById(long patientRegisterIdFrom, long patientRegisterIdTo)
|
|
{
|
|
|
|
#region 初始数据
|
|
if (fieldComparisonTempList.Count == 0)
|
|
{
|
|
fieldComparisonTempList = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName != "patient_register").ToList();
|
|
asbitemFieldComparisonTempList = fieldComparisonTempList.Where(o => o.TableName == "asbitem").ToList();
|
|
itemFieldComparisonTempList = fieldComparisonTempList.Where(o => o.TableName == "item").ToList();
|
|
}
|
|
if (!_customerOrgRegisterList.Any())
|
|
_customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
|
|
if (!_userList.Any())
|
|
_userList = await _identityUserRepository.GetListAsync();
|
|
_logger.LogInformation($"组合项目数:{asbitemFieldComparisonTempList.Count},项目数:{itemFieldComparisonTempList.Count}");
|
|
|
|
#endregion
|
|
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
stopwatch.Start();
|
|
_logger.LogInformation($"开始导入数据");
|
|
//当前导入的ID
|
|
//string nextKeyValue = oldDb.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register' ");
|
|
|
|
string sqlPatientRegister = "";
|
|
if (patientRegisterIdFrom >= patientRegisterIdTo)
|
|
{
|
|
throw new Exception("开始值必须小于等于结束值");
|
|
|
|
}
|
|
var sql = $"select count(*) as cnt from patient_register where patient_register_id>='{patientRegisterIdFrom}'" +
|
|
$" and patient_register_id<'{patientRegisterIdTo}' ";
|
|
|
|
DataTable oldPatientRegisterCount = await oldDb.Ado.GetDataTableAsync(sql);
|
|
if (oldPatientRegisterCount.Rows.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
_logger.LogInformation($"共有{oldPatientRegisterCount.Rows[0]["cnt"].ToString()}条");
|
|
|
|
sqlPatientRegister = $"select top 1000 * from patient_register where patient_register_id>='{patientRegisterIdFrom}'" +
|
|
$" and patient_register_id<'{patientRegisterIdTo}' order by patient_register_id asc";
|
|
|
|
|
|
|
|
DataTable oldPatientRegisterList = await oldDb.Ado.GetDataTableAsync(sqlPatientRegister);
|
|
stopwatch.Stop();
|
|
_logger.LogInformation($"获取要导入的人员列表耗时:{stopwatch.ElapsedMilliseconds}" + $"共{oldPatientRegisterList.Rows.Count}条");
|
|
//Stopwatch stopwatch2 = new Stopwatch();
|
|
//stopwatch2.Start();
|
|
//var userList = await _identityUserRepository.GetListAsync();
|
|
//List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
|
|
//stopwatch2.Stop();
|
|
Stopwatch stopwatch5 = new Stopwatch();
|
|
stopwatch5.Start();
|
|
while (oldPatientRegisterList.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow row in oldPatientRegisterList.Rows)
|
|
{
|
|
hangPatientRegisterCount++;
|
|
await ImportSingle(_customerOrgRegisterList, _userList, row);
|
|
}
|
|
patientRegisterIdFrom = Convert.ToInt64(oldPatientRegisterList.Rows[oldPatientRegisterList.Rows.Count - 1]["patient_register_id"]);
|
|
patientRegisterIdFrom++;
|
|
sqlPatientRegister = $"select top 1000 * from patient_register where patient_register_id>='{patientRegisterIdFrom}'" +
|
|
$" and patient_register_id<'{patientRegisterIdTo}' order by patient_register_id asc";
|
|
Stopwatch stopwatch6 = new Stopwatch();
|
|
stopwatch6.Start();
|
|
oldPatientRegisterList = await oldDb.Ado.GetDataTableAsync(sqlPatientRegister);
|
|
_logger.LogInformation($"获取要导入的人员列表耗时:{stopwatch6.ElapsedMilliseconds}" + $"共{oldPatientRegisterList.Rows.Count}条");
|
|
}
|
|
stopwatch5.Stop();
|
|
_logger.LogInformation($"处理完全部人员耗时:{stopwatch5.ElapsedMilliseconds}");
|
|
_logger.LogInformation($"人员数据处理{oldPatientRegisterList.Rows.Count}条,当前总数{hangPatientRegisterCount}");
|
|
|
|
|
|
|
|
}
|
|
private async Task ImportSingle(List<CustomerOrgRegister> customerOrgRegisterList, List<IdentityUser> userList, DataRow row)
|
|
{
|
|
try
|
|
{
|
|
Stopwatch stopwatch3 = new Stopwatch();
|
|
stopwatch3.Start();
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
var dbContext = await _dbContextProvider.GetDbContextAsync();
|
|
//Stopwatch stopwatch31 = new Stopwatch();
|
|
//stopwatch31.Start();
|
|
string oldPatientRegisterId = row["patient_register_id"].ToString();
|
|
string barcodeNo = row["barcode_no"].ToString();
|
|
//检查是否已经导入
|
|
var patRegisterLis = await _patientRegisterRepository.GetListAsync(o => o.PatientRegisterNo == barcodeNo);
|
|
if (patRegisterLis.Count > 0)
|
|
{
|
|
return;
|
|
}
|
|
//检查是否已经导入
|
|
//var isDZPatientRegisterTemp = (await _fieldComparisonRepository.GetListAsync(f => f.TableName == "patient_register"
|
|
// && f.OldKeyValue == oldPatientRegisterId));
|
|
|
|
|
|
//if (isDZPatientRegisterTemp.Count > 0)
|
|
//{
|
|
// return;
|
|
// //continue;//并行处理不使用该语句
|
|
//}
|
|
|
|
|
|
|
|
//档案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()))
|
|
{
|
|
var nationEnt = fieldComparisonTempList.Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault();
|
|
if (nationEnt == null)
|
|
{
|
|
nationId = row["nation_id"].ToString();
|
|
}
|
|
else
|
|
{
|
|
nationId = nationEnt.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 = row["marital_status_id"].ToString() == "2" ? '4' : 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.Name == row["audit_doctor"].ToString().Trim()
|
|
|| m.Surname == row["audit_doctor"].ToString().Trim()
|
|
|| 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 = fieldComparisonTempList.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(fieldComparisonTempList.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(fieldComparisonTempList.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 = fieldComparisonTempList.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 = fieldComparisonTempList.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 = fieldComparisonTempList.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 = fieldComparisonTempList.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.Name == row["summary_doctor"].ToString().Trim()
|
|
|| m.Surname == row["summary_doctor"].ToString().Trim()
|
|
|| 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 = row["marital_status_id"].ToString() == "2" ? '4' : 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, true);
|
|
|
|
//stopwatch31.Stop();
|
|
//_logger.LogInformation($"{row["patient_register_id"]}_第31片段耗时:{stopwatch31.ElapsedMilliseconds}");
|
|
|
|
//Stopwatch stopwatch32 = new Stopwatch();
|
|
//stopwatch32.Start();
|
|
|
|
#region 登记的项目、结果、小结
|
|
|
|
var oldRegisterAsbitemList = await oldDb.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{row["patient_register_id"].ToString()}'");
|
|
|
|
if (oldRegisterAsbitemList.Rows.Count > 0)
|
|
{
|
|
var oldRegisterCheckItemListAll = await oldDb.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{row["patient_register_id"].ToString()}'");
|
|
|
|
var registerCheckList = new List<RegisterCheck>();
|
|
var registerCheckAsbitemList = new List<RegisterCheckAsbitem>();
|
|
var registerCheckItemList = new List<RegisterCheckItem>();
|
|
var registerCheckSummaryList = new List<RegisterCheckSummary>();
|
|
var registerCheckPictureList = new List<RegisterCheckPicture>();
|
|
foreach (DataRow rowAsbitem in oldRegisterAsbitemList.Rows)
|
|
{
|
|
//Stopwatch stopwatch34 = new Stopwatch();
|
|
//stopwatch34.Start();
|
|
#region 转换审核医生ID
|
|
Guid? auditorUserId = null;
|
|
if (!string.IsNullOrWhiteSpace(rowAsbitem["audit_doctor"].ToString()))
|
|
{
|
|
var userEnt = userList.Where(m => m.Name == rowAsbitem["audit_doctor"].ToString().Trim()
|
|
|| m.Surname == rowAsbitem["audit_doctor"].ToString().Trim()
|
|
|| m.UserName == rowAsbitem["audit_doctor"].ToString().Trim()).FirstOrDefault();
|
|
if (userEnt != null)
|
|
{
|
|
auditorUserId = userEnt.Id;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 转换检查医生ID
|
|
string checkDoctorId = null;
|
|
if (!string.IsNullOrWhiteSpace(rowAsbitem["check_doctor"].ToString()))
|
|
{
|
|
var userEnt = userList.Where(m => m.Name == rowAsbitem["check_doctor"].ToString().Trim()
|
|
|| m.Surname == rowAsbitem["check_doctor"].ToString().Trim()
|
|
|| m.UserName == rowAsbitem["check_doctor"].ToString().Trim()).FirstOrDefault();
|
|
if (userEnt != null)
|
|
{
|
|
checkDoctorId = userEnt.Id.ToString();
|
|
}
|
|
else
|
|
{
|
|
checkDoctorId = rowAsbitem["check_doctor"].ToString().Trim();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 转换组合项目ID
|
|
Guid newAsbitemId = Guid.Parse(asbitemFieldComparisonTempList.Where(m => m.OldKeyValue == rowAsbitem["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
#endregion
|
|
|
|
//stopwatch34.Stop();
|
|
//_logger.LogInformation($"{row["patient_register_id"]}_第34片段耗时:{stopwatch34.ElapsedMilliseconds}");
|
|
#region 插入register_check
|
|
Guid registerCheckId = GuidGenerator.Create();
|
|
var dataRegisterCheck = new RegisterCheck(registerCheckId)
|
|
{
|
|
AuditorUserId = auditorUserId,
|
|
AuditTime = string.IsNullOrEmpty(rowAsbitem["audit_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["audit_date"].ToString()),
|
|
CheckDate = string.IsNullOrEmpty(rowAsbitem["check_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["check_date"].ToString()),
|
|
CheckDoctorId = checkDoctorId,
|
|
CheckRequestNo = "",
|
|
CheckRequestPrintTimes = (short)1,
|
|
CompleteFlag = Convert.ToChar(rowAsbitem["complete_flag"].ToString()),
|
|
CriticalRangeValue = null,
|
|
//CriticalValueCreateDate = null,
|
|
IsCriticalValue = null,
|
|
CriticalValueContent = null,
|
|
//CriticalValueProcessDate = null,
|
|
//CriticalValueProcessDoctor = null,
|
|
//CriticalValueProcessFlag = null,
|
|
IsAudit = string.IsNullOrEmpty(rowAsbitem["audit_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["audit_flag"].ToString()),
|
|
IsLock = string.IsNullOrEmpty(rowAsbitem["lock_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["lock_flag"].ToString()),
|
|
PatientRegisterId = patientRegisterId,
|
|
ThirdInfo = rowAsbitem["third_info"].ToString()
|
|
};
|
|
|
|
//await _registerCheckRepository.InsertAsync(dataRegisterCheck, true);
|
|
dataRegisterCheck.SetCreateId(_currentUser.Id);
|
|
dataRegisterCheck.SetCreationTime(DateTime.Now);
|
|
dataRegisterCheck.SetLastModifierId(_currentUser.Id);
|
|
dataRegisterCheck.SetLastModificationTime(DateTime.Now);
|
|
registerCheckList.Add(dataRegisterCheck);
|
|
#endregion
|
|
|
|
|
|
|
|
#region 插入register_check_asbitem
|
|
Guid registerCheckAsbitemId = GuidGenerator.Create();
|
|
|
|
var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
|
|
{
|
|
Amount = 1,
|
|
IsCharge = Convert.ToChar(rowAsbitem["charge_flag"].ToString()),
|
|
AsbitemId = newAsbitemId,
|
|
ChargePrice = Convert.ToDecimal(rowAsbitem["price"].ToString()),
|
|
GroupPackageId = null,
|
|
LisRequestId = null,
|
|
PatientRegisterId = patientRegisterId,
|
|
PayTypeFlag = Convert.ToChar(rowAsbitem["payment_mode"].ToString()),
|
|
RegisterCheckId = registerCheckId,
|
|
StandardPrice = Convert.ToDecimal(rowAsbitem["standard_price"].ToString()),
|
|
|
|
};
|
|
|
|
//await _registerCheckAsbitemRepository.InsertAsync(dataRegisterAsbitem);
|
|
|
|
dataRegisterAsbitem.SetCreateId(_currentUser.Id);
|
|
dataRegisterAsbitem.SetCreationTime(DateTime.Now);
|
|
dataRegisterAsbitem.SetLastModifierId(_currentUser.Id);
|
|
dataRegisterAsbitem.SetLastModificationTime(DateTime.Now);
|
|
registerCheckAsbitemList.Add(dataRegisterAsbitem);
|
|
#endregion
|
|
|
|
|
|
#region 插入医生小结
|
|
|
|
|
|
var oldSummary = rowAsbitem["summary"].ToString();
|
|
if (!string.IsNullOrWhiteSpace(oldSummary))
|
|
{
|
|
Guid dataRegisterCheckSummaryId = GuidGenerator.Create();
|
|
var dataRegisterCheckSummary = new RegisterCheckSummary(dataRegisterCheckSummaryId)
|
|
{
|
|
RegisterCheckId = registerCheckId,
|
|
DisplayOrder = 1,
|
|
Summary = oldSummary,
|
|
SummaryFlag = '0'
|
|
};
|
|
|
|
//await _registerCheckSummaryRepository.InsertAsync(dataRegisterCheckSummary);
|
|
|
|
dataRegisterCheckSummary.SetCreateId(_currentUser.Id);
|
|
dataRegisterCheckSummary.SetCreationTime(DateTime.Now);
|
|
dataRegisterCheckSummary.SetLastModifierId(_currentUser.Id);
|
|
dataRegisterCheckSummary.SetLastModificationTime(DateTime.Now);
|
|
registerCheckSummaryList.Add(dataRegisterCheckSummary);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 插入检查图片
|
|
|
|
string sql_check_picture = $"select * from check_picture where patient_register_id='{row["patient_register_id"]}' and asbitem_id='{rowAsbitem["asbitem_id"]}' ";
|
|
DataTable dt_check_picture = await oldDb.Ado.GetDataTableAsync(sql_check_picture);
|
|
if (dt_check_picture.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow checkPictureRow in dt_check_picture.Rows)
|
|
{
|
|
Guid tempRegisterCheckPictureId = GuidGenerator.Create();
|
|
var fileName = checkPictureRow["picture_filename"].ToString();
|
|
fileName = fileName.Replace("\\\\192.168.0.3", "").Replace(@"\", "/").Replace("//", "/");
|
|
var tempRegisterCheckPicture = new RegisterCheckPicture(tempRegisterCheckPictureId)
|
|
{
|
|
DisplayOrder = dt_check_picture.Rows.IndexOf(checkPictureRow) + 1,
|
|
IsPrint = 'Y',
|
|
LocalPathName = "",
|
|
PictureFileType = '0',
|
|
PictureFilename = fileName,
|
|
RegisterCheckId = registerCheckId
|
|
};
|
|
tempRegisterCheckPicture.SetCreateId(_currentUser.Id);
|
|
tempRegisterCheckPicture.SetCreationTime(DateTime.Now);
|
|
tempRegisterCheckPicture.SetLastModifierId(_currentUser.Id);
|
|
tempRegisterCheckPicture.SetLastModificationTime(DateTime.Now);
|
|
registerCheckPictureList.Add(tempRegisterCheckPicture);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
#region 插入明细项目
|
|
oldRegisterCheckItemListAll.DefaultView.RowFilter = $"asbitem_id={rowAsbitem["asbitem_id"].ToString()}";
|
|
var oldRegisterCheckItemList = oldRegisterCheckItemListAll.DefaultView.ToTable();
|
|
//var oldRegisterCheckItemList = await oldDb.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{row["patient_register_id"].ToString()}' and asbitem_id='{rowAsbitem["asbitem_id"].ToString()}'");
|
|
|
|
if (oldRegisterCheckItemList.Rows.Count > 0)
|
|
{
|
|
|
|
foreach (DataRow rowRegisterCheckItem in oldRegisterCheckItemList.Rows)
|
|
{
|
|
#region 转换项目ID 老转新
|
|
Guid newItemId = Guid.Parse(itemFieldComparisonTempList.Where(m => m.OldKeyValue == rowRegisterCheckItem["item_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
|
|
#endregion
|
|
|
|
|
|
var dataRegisterCheckItem = new RegisterCheckItem
|
|
{
|
|
CheckDate = string.IsNullOrEmpty(rowRegisterCheckItem["check_date"].ToString()) ? null : Convert.ToDateTime(rowRegisterCheckItem["check_date"].ToString()),
|
|
CriticalValue = null,
|
|
CheckDoctorName = rowRegisterCheckItem["check_doctor"].ToString().Trim(),
|
|
CriticalRangeValue = null,
|
|
ItemId = newItemId,
|
|
ReferenceRangeValue = rowRegisterCheckItem["reference_range_value"].ToString(),
|
|
RegisterCheckId = registerCheckId,
|
|
Result = rowRegisterCheckItem["result"].ToString(),
|
|
ResultStatusId = _registerCheckItemManager.GetResultStatusId(rowRegisterCheckItem["result"].ToString(), rowRegisterCheckItem["reference_range_value"].ToString()),
|
|
Unit = rowRegisterCheckItem["Unit"].ToString()
|
|
};
|
|
|
|
//await _registerCheckItemRepository.InsertAsync(dataRegisterCheckItem);
|
|
dataRegisterCheckItem.SetCreateId(_currentUser.Id);
|
|
dataRegisterCheckItem.SetCreationTime(DateTime.Now);
|
|
dataRegisterCheckItem.SetLastModifierId(_currentUser.Id);
|
|
dataRegisterCheckItem.SetLastModificationTime(DateTime.Now);
|
|
registerCheckItemList.Add(dataRegisterCheckItem);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
|
|
//await _registerCheckRepository.InsertManyAsync(registerCheckList, true);
|
|
//await _registerCheckAsbitemRepository.InsertManyAsync(registerCheckAsbitemList, true);
|
|
//if (registerCheckSummaryList.Count > 0)
|
|
//{
|
|
// await _registerCheckSummaryRepository.InsertManyAsync(registerCheckSummaryList, true);
|
|
//}
|
|
//if (registerCheckItemList.Count > 0)
|
|
//{
|
|
// await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList, true);
|
|
//}
|
|
|
|
|
|
await dbContext.BulkInsertAsync<RegisterCheck>(registerCheckList, new BulkConfig
|
|
{
|
|
PreserveInsertOrder = false, // 如果不需要顺序,可以关掉
|
|
SetOutputIdentity = false, // Guid 主键时一定要关掉
|
|
BatchSize = 10000, // 大数据量时调整批次大小
|
|
TrackingEntities = false // 禁用跟踪,加快速度
|
|
});
|
|
|
|
|
|
|
|
await dbContext.BulkInsertAsync<RegisterCheckAsbitem>(registerCheckAsbitemList, new BulkConfig
|
|
{
|
|
PreserveInsertOrder = false, // 如果不需要顺序,可以关掉
|
|
SetOutputIdentity = false, // Guid 主键时一定要关掉
|
|
BatchSize = 10000, // 大数据量时调整批次大小
|
|
TrackingEntities = false // 禁用跟踪,加快速度
|
|
});
|
|
if (registerCheckSummaryList.Count > 0)
|
|
{
|
|
await dbContext.BulkInsertAsync<RegisterCheckSummary>(registerCheckSummaryList, new BulkConfig
|
|
{
|
|
PreserveInsertOrder = false, // 如果不需要顺序,可以关掉
|
|
SetOutputIdentity = false, // Guid 主键时一定要关掉
|
|
BatchSize = 10000, // 大数据量时调整批次大小
|
|
TrackingEntities = false // 禁用跟踪,加快速度
|
|
});
|
|
}
|
|
|
|
if (registerCheckItemList.Count > 0)
|
|
{
|
|
await dbContext.BulkInsertAsync<RegisterCheckItem>(registerCheckItemList, new BulkConfig
|
|
{
|
|
PreserveInsertOrder = false, // 如果不需要顺序,可以关掉
|
|
SetOutputIdentity = false, // Guid 主键时一定要关掉
|
|
BatchSize = 10000, // 大数据量时调整批次大小
|
|
TrackingEntities = false // 禁用跟踪,加快速度
|
|
});
|
|
|
|
}
|
|
if (registerCheckPictureList.Count > 0)
|
|
{
|
|
await dbContext.BulkInsertAsync<RegisterCheckPicture>(registerCheckPictureList, new BulkConfig
|
|
{
|
|
PreserveInsertOrder = false, // 如果不需要顺序,可以关掉
|
|
SetOutputIdentity = false, // Guid 主键时一定要关掉
|
|
BatchSize = 10000, // 大数据量时调整批次大小
|
|
TrackingEntities = false // 禁用跟踪,加快速度
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
//stopwatch32.Stop();
|
|
//_logger.LogInformation($"{row["patient_register_id"]}_第32片段耗时:{stopwatch32.ElapsedMilliseconds}");
|
|
|
|
|
|
#region 总检建议、综述、总检诊断
|
|
|
|
|
|
var oldSum = await oldDb.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' ");
|
|
|
|
if (oldSum.Rows.Count == 1)
|
|
{
|
|
string oldSummary = oldSum.Rows[0][0].ToString();
|
|
string oldSuggestion = oldSum.Rows[0][1].ToString();
|
|
|
|
if (!string.IsNullOrWhiteSpace(oldSummary))
|
|
{
|
|
|
|
Guid sumSummaryHeaderId = GuidGenerator.Create();
|
|
|
|
var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SummaryFlag = '0',
|
|
PatientRegisterId = patientRegisterId,
|
|
SummaryTitle = "异常结果如下"
|
|
};
|
|
|
|
await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
|
|
|
|
Guid sumSummaryContentId = GuidGenerator.Create();
|
|
var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SumSummaryHeaderId = sumSummaryHeaderId,
|
|
SummaryContent = oldSummary
|
|
};
|
|
|
|
await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
|
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(oldSuggestion))
|
|
{
|
|
|
|
Guid sumSuggestionHeaderId = GuidGenerator.Create();
|
|
|
|
var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SuggestionFlag = '0',
|
|
PatientRegisterId = patientRegisterId,
|
|
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);
|
|
|
|
|
|
|
|
#region 总症诊断
|
|
var oldSummaryDiagnosis = await oldDb.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
|
|
|
|
if (oldSummaryDiagnosis.Rows.Count > 0)
|
|
{
|
|
List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
|
|
|
|
foreach (DataRow summaryDiagnosis in oldSummaryDiagnosis.Rows)
|
|
{
|
|
var diagnosisEnt = fieldComparisonTempList.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == summaryDiagnosis["diagnosis_id"].ToString()).FirstOrDefault();
|
|
if (diagnosisEnt != null)
|
|
{
|
|
|
|
var dataSumDiagnosis = new SumDiagnosis
|
|
{
|
|
DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(summaryDiagnosis) + 1,
|
|
PatientRegisterId = patientRegisterId,
|
|
DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
|
|
SumSuggestionHeaderId = sumSuggestionHeaderId
|
|
};
|
|
|
|
sumDiagnosisInsert.Add(dataSumDiagnosis);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (sumDiagnosisInsert.Any())
|
|
await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
/* 已不需要,暂时屏蔽
|
|
var fieldComparison = new FieldComparison
|
|
{
|
|
FieldName = "id",
|
|
NewKeyValue = patientRegisterId.ToString(),
|
|
OldKeyValue = row["patient_register_id"].ToString(),
|
|
TableName = "patient_register"
|
|
};
|
|
|
|
|
|
await _fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
|
|
await oldDb.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
|
|
*/
|
|
await uow.CompleteAsync();
|
|
|
|
|
|
#region 修改创建者日期跟id
|
|
Guid registerDoctorId = Guid.Parse(_configuration.GetValue<string>("AdminId"));
|
|
var registerDoctorEnt = userList.Where(m => m.Name == 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 newDb.Ado.ExecuteCommandAsync(sql_update);
|
|
#endregion
|
|
;
|
|
}
|
|
stopwatch3.Stop();
|
|
_logger.LogInformation($"{row["patient_register_id"]}_处理单个人总耗时:{stopwatch3.ElapsedMilliseconds}");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
hangPatientRegisterErrorCount++;
|
|
_logger.LogInformation($"数据处理失败,人员id为:{row["patient_register_id"]}");
|
|
#region 添加到tb_error_log表
|
|
await oldDb.Ado.ExecuteCommandAsync($"insert into tb_error_log(old_patient_register_id,error_message,addtime) values ('{row["patient_register_id"]}','{ex.StackTrace}',getdate()) ");
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 失败人员处理
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost("api/app/CCTJExportData/HandErrorPatientRegisterData")]
|
|
public async Task HandErrorPatientRegisterData()
|
|
{
|
|
string sql_error = "select old_patient_register_id from tb_error_log";
|
|
var errorPatientRegister = await oldDb.Ado.GetDataTableAsync(sql_error);
|
|
if (errorPatientRegister.Rows.Count > 0)
|
|
{
|
|
if (fieldComparisonTempList.Count == 0)
|
|
{
|
|
fieldComparisonTempList = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName != "patient_register").ToList();
|
|
asbitemFieldComparisonTempList = fieldComparisonTempList.Where(o => o.TableName == "asbitem").ToList();
|
|
itemFieldComparisonTempList = fieldComparisonTempList.Where(o => o.TableName == "item").ToList();
|
|
}
|
|
|
|
if (!_customerOrgRegisterList.Any())
|
|
_customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
|
|
if (!_userList.Any())
|
|
_userList = await _identityUserRepository.GetListAsync();
|
|
|
|
foreach (DataRow row in errorPatientRegister.Rows)
|
|
{
|
|
string sql = $"select * from patient_register where patient_register_id={row["old_patient_register_id"]}";
|
|
var tempdt = await oldDb.Ado.GetDataTableAsync(sql);
|
|
if (tempdt.Rows.Count > 0)
|
|
{
|
|
await ImportSingle(_customerOrgRegisterList, _userList, tempdt.Rows[0]);
|
|
}
|
|
await oldDb.Ado.ExecuteCommandAsync($"delete from tb_error_log where old_patient_register_id='{row["old_patient_register_id"]}'");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private async Task ImportSingleParallel(List<CustomerOrgRegister> customerOrgRegisterList, List<IdentityUser> userList, DataRow row)
|
|
{
|
|
try
|
|
{
|
|
Stopwatch stopwatch3 = new Stopwatch();
|
|
stopwatch3.Start();
|
|
|
|
using (var scope = _serviceScopeFactory.CreateScope())
|
|
{
|
|
var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
|
|
using (var uow = unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
using (var oldDb2 = new SqlSugarClient(new ConnectionConfig()
|
|
{
|
|
ConnectionString = "server=192.168.0.3;uid=sa;pwd=132****6302;database=oldPeis;Encrypt=false;",
|
|
DbType = SqlSugar.DbType.SqlServer,
|
|
IsAutoCloseConnection = true
|
|
}))
|
|
{
|
|
using (var newDb2 = new SqlSugarClient(new ConnectionConfig()
|
|
{
|
|
ConnectionString = "Host=192.168.0.188;Port=5432;Database=ShentunPeis;User ID=postgres;Password=St123456;",
|
|
DbType = SqlSugar.DbType.PostgreSQL,
|
|
IsAutoCloseConnection = true
|
|
}))
|
|
{
|
|
|
|
|
|
Stopwatch stopwatch31 = new Stopwatch();
|
|
stopwatch31.Start();
|
|
string oldPatientRegisterId = row["patient_register_id"].ToString();
|
|
|
|
//检查是否已经导入
|
|
var isDZPatientRegisterTemp = (await _fieldComparisonRepository.GetListAsync(f => f.TableName == "patient_register"
|
|
&& f.OldKeyValue == oldPatientRegisterId));
|
|
|
|
|
|
if (isDZPatientRegisterTemp.Count > 0)
|
|
{
|
|
return;
|
|
//continue;//并行处理不使用该语句
|
|
}
|
|
|
|
|
|
|
|
//档案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()))
|
|
{
|
|
var nationEnt = fieldComparisonTempList.Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault();
|
|
if (nationEnt == null)
|
|
{
|
|
nationId = row["nation_id"].ToString();
|
|
}
|
|
else
|
|
{
|
|
nationId = nationEnt.NewKeyValue;
|
|
}
|
|
}
|
|
|
|
Guid autoPatientId = GuidGenerator.Create(); //档案ID
|
|
var patientRepository = scope.ServiceProvider.GetRequiredService<IRepository<Patient, Guid>>();
|
|
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 = row["marital_status_id"].ToString() == "2" ? '4' : 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.Name == 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 = fieldComparisonTempList.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(fieldComparisonTempList.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(fieldComparisonTempList.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 = fieldComparisonTempList.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 = fieldComparisonTempList.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 = fieldComparisonTempList.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 = fieldComparisonTempList.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.Name == 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 = row["marital_status_id"].ToString() == "2" ? '4' : 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(),
|
|
};
|
|
var patientRegisterRepository = scope.ServiceProvider.GetRequiredService<IRepository<PatientRegister, Guid>>();
|
|
await patientRegisterRepository.InsertAsync(data, true);
|
|
|
|
stopwatch31.Stop();
|
|
_logger.LogInformation($"{row["patient_register_id"]}_第31片段耗时:{stopwatch31.ElapsedMilliseconds}");
|
|
|
|
Stopwatch stopwatch32 = new Stopwatch();
|
|
stopwatch32.Start();
|
|
|
|
#region 登记的项目、结果、小结
|
|
|
|
var oldRegisterAsbitemList = await oldDb2.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{row["patient_register_id"].ToString()}'");
|
|
|
|
if (oldRegisterAsbitemList.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow rowAsbitem in oldRegisterAsbitemList.Rows)
|
|
{
|
|
Stopwatch stopwatch34 = new Stopwatch();
|
|
stopwatch34.Start();
|
|
#region 转换审核医生ID
|
|
Guid? auditorUserId = null;
|
|
if (!string.IsNullOrWhiteSpace(rowAsbitem["audit_doctor"].ToString()))
|
|
{
|
|
var userEnt = userList.Where(m => m.Name == rowAsbitem["audit_doctor"].ToString().Trim()).FirstOrDefault();
|
|
if (userEnt != null)
|
|
{
|
|
auditorUserId = userEnt.Id;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 转换检查医生ID
|
|
string checkDoctorId = null;
|
|
if (!string.IsNullOrWhiteSpace(rowAsbitem["check_doctor"].ToString()))
|
|
{
|
|
var userEnt = userList.Where(m => m.Name == rowAsbitem["check_doctor"].ToString().Trim()).FirstOrDefault();
|
|
if (userEnt != null)
|
|
{
|
|
checkDoctorId = userEnt.Id.ToString();
|
|
}
|
|
else
|
|
{
|
|
checkDoctorId = rowAsbitem["check_doctor"].ToString().Trim();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 转换组合项目ID
|
|
Guid newAsbitemId = Guid.Parse(fieldComparisonTempList.Where(m => m.TableName == "asbitem" && m.OldKeyValue == rowAsbitem["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
#endregion
|
|
|
|
stopwatch34.Stop();
|
|
_logger.LogInformation($"{row["patient_register_id"]}_第34片段耗时:{stopwatch34.ElapsedMilliseconds}");
|
|
#region 插入register_check
|
|
Guid registerCheckId = GuidGenerator.Create();
|
|
var dataRegisterCheck = new RegisterCheck(registerCheckId)
|
|
{
|
|
AuditorUserId = auditorUserId,
|
|
AuditTime = string.IsNullOrEmpty(rowAsbitem["audit_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["audit_date"].ToString()),
|
|
CheckDate = string.IsNullOrEmpty(rowAsbitem["check_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["check_date"].ToString()),
|
|
CheckDoctorId = checkDoctorId,
|
|
CheckRequestNo = "",
|
|
CheckRequestPrintTimes = (short)1,
|
|
CompleteFlag = Convert.ToChar(rowAsbitem["complete_flag"].ToString()),
|
|
CriticalRangeValue = null,
|
|
//CriticalValueCreateDate = null,
|
|
IsCriticalValue = null,
|
|
CriticalValueContent = null,
|
|
//CriticalValueProcessDate = null,
|
|
//CriticalValueProcessDoctor = null,
|
|
//CriticalValueProcessFlag = null,
|
|
IsAudit = string.IsNullOrEmpty(rowAsbitem["audit_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["audit_flag"].ToString()),
|
|
IsLock = string.IsNullOrEmpty(rowAsbitem["lock_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["lock_flag"].ToString()),
|
|
PatientRegisterId = patientRegisterId,
|
|
ThirdInfo = rowAsbitem["third_info"].ToString()
|
|
};
|
|
var registerCheckRepository = scope.ServiceProvider.GetRequiredService<IRepository<RegisterCheck, Guid>>();
|
|
|
|
await registerCheckRepository.InsertAsync(dataRegisterCheck, true);
|
|
#endregion
|
|
|
|
|
|
|
|
#region 插入register_check_asbitem
|
|
Guid registerCheckAsbitemId = GuidGenerator.Create();
|
|
|
|
var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
|
|
{
|
|
Amount = 1,
|
|
IsCharge = Convert.ToChar(rowAsbitem["charge_flag"].ToString()),
|
|
AsbitemId = newAsbitemId,
|
|
ChargePrice = Convert.ToDecimal(rowAsbitem["price"].ToString()),
|
|
GroupPackageId = null,
|
|
LisRequestId = null,
|
|
PatientRegisterId = patientRegisterId,
|
|
PayTypeFlag = Convert.ToChar(rowAsbitem["payment_mode"].ToString()),
|
|
RegisterCheckId = registerCheckId,
|
|
StandardPrice = Convert.ToDecimal(rowAsbitem["standard_price"].ToString())
|
|
};
|
|
var registerCheckAsbitemRepository = scope.ServiceProvider.GetRequiredService<IRepository<RegisterCheckAsbitem, Guid>>();
|
|
await registerCheckAsbitemRepository.InsertAsync(dataRegisterAsbitem);
|
|
#endregion
|
|
|
|
|
|
#region 插入医生小结
|
|
var registerCheckSummaryRepository = scope.ServiceProvider.GetRequiredService<IRepository<RegisterCheckSummary, Guid>>();
|
|
|
|
var oldSummary = rowAsbitem["summary"].ToString();
|
|
if (!string.IsNullOrWhiteSpace(oldSummary))
|
|
{
|
|
var dataRegisterCheckSummary = new RegisterCheckSummary
|
|
{
|
|
RegisterCheckId = registerCheckId,
|
|
DisplayOrder = 1,
|
|
Summary = oldSummary,
|
|
SummaryFlag = '0'
|
|
};
|
|
|
|
await registerCheckSummaryRepository.InsertAsync(dataRegisterCheckSummary);
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 插入明细项目
|
|
var registerCheckItemRepository = scope.ServiceProvider.GetRequiredService<IRepository<RegisterCheckItem>>();
|
|
var oldRegisterCheckItemList = await oldDb2.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{row["patient_register_id"].ToString()}' and asbitem_id='{rowAsbitem["asbitem_id"].ToString()}'");
|
|
|
|
if (oldRegisterCheckItemList.Rows.Count > 0)
|
|
{
|
|
|
|
foreach (DataRow rowRegisterCheckItem in oldRegisterCheckItemList.Rows)
|
|
{
|
|
#region 转换项目ID 老转新
|
|
Guid newItemId = Guid.Parse(fieldComparisonTempList.Where(m => m.TableName == "item" && m.OldKeyValue == rowRegisterCheckItem["item_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
|
|
#endregion
|
|
|
|
|
|
var dataRegisterCheckItem = new RegisterCheckItem
|
|
{
|
|
CheckDate = string.IsNullOrEmpty(rowRegisterCheckItem["check_date"].ToString()) ? null : Convert.ToDateTime(rowRegisterCheckItem["check_date"].ToString()),
|
|
CriticalValue = null,
|
|
CheckDoctorName = rowRegisterCheckItem["check_doctor"].ToString().Trim(),
|
|
CriticalRangeValue = null,
|
|
ItemId = newItemId,
|
|
ReferenceRangeValue = rowRegisterCheckItem["reference_range_value"].ToString(),
|
|
RegisterCheckId = registerCheckId,
|
|
Result = rowRegisterCheckItem["result"].ToString(),
|
|
ResultStatusId = _registerCheckItemManager.GetResultStatusId(rowRegisterCheckItem["result"].ToString(), rowRegisterCheckItem["reference_range_value"].ToString()),
|
|
Unit = rowRegisterCheckItem["Unit"].ToString()
|
|
};
|
|
|
|
await registerCheckItemRepository.InsertAsync(dataRegisterCheckItem);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
stopwatch32.Stop();
|
|
_logger.LogInformation($"{row["patient_register_id"]}_第32片段耗时:{stopwatch32.ElapsedMilliseconds}");
|
|
|
|
|
|
#region 总检建议、综述、总检诊断
|
|
var sumSummaryHeaderRepository = scope.ServiceProvider.GetRequiredService<IRepository<SumSummaryHeader, Guid>>();
|
|
var sumSummaryContentRepository = scope.ServiceProvider.GetRequiredService<IRepository<SumSummaryContent, Guid>>();
|
|
|
|
var sumSuggestionHeaderRepository = scope.ServiceProvider.GetRequiredService<IRepository<SumSuggestionHeader, Guid>>();
|
|
var sumSuggestionContentRepository = scope.ServiceProvider.GetRequiredService<IRepository<SumSuggestionContent, Guid>>();
|
|
var sumDiagnosisRepository = scope.ServiceProvider.GetRequiredService<IRepository<SumDiagnosis>>();
|
|
|
|
var oldSum = await oldDb2.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' ");
|
|
|
|
if (oldSum.Rows.Count == 1)
|
|
{
|
|
string oldSummary = oldSum.Rows[0][0].ToString();
|
|
string oldSuggestion = oldSum.Rows[0][1].ToString();
|
|
|
|
if (!string.IsNullOrWhiteSpace(oldSummary))
|
|
{
|
|
|
|
Guid sumSummaryHeaderId = GuidGenerator.Create();
|
|
|
|
var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SummaryFlag = '0',
|
|
PatientRegisterId = patientRegisterId,
|
|
SummaryTitle = "异常结果如下"
|
|
};
|
|
|
|
await sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
|
|
|
|
Guid sumSummaryContentId = GuidGenerator.Create();
|
|
var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SumSummaryHeaderId = sumSummaryHeaderId,
|
|
SummaryContent = oldSummary
|
|
};
|
|
|
|
await sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
|
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(oldSuggestion))
|
|
{
|
|
|
|
Guid sumSuggestionHeaderId = GuidGenerator.Create();
|
|
|
|
var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SuggestionFlag = '0',
|
|
PatientRegisterId = patientRegisterId,
|
|
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);
|
|
|
|
|
|
|
|
#region 总症诊断
|
|
var oldSummaryDiagnosis = await oldDb2.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
|
|
|
|
if (oldSummaryDiagnosis.Rows.Count > 0)
|
|
{
|
|
List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
|
|
|
|
foreach (DataRow summaryDiagnosis in oldSummaryDiagnosis.Rows)
|
|
{
|
|
var diagnosisEnt = fieldComparisonTempList.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == summaryDiagnosis["diagnosis_id"].ToString()).FirstOrDefault();
|
|
if (diagnosisEnt != null)
|
|
{
|
|
|
|
var dataSumDiagnosis = new SumDiagnosis
|
|
{
|
|
DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(summaryDiagnosis) + 1,
|
|
PatientRegisterId = patientRegisterId,
|
|
DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
|
|
SumSuggestionHeaderId = sumSuggestionHeaderId
|
|
};
|
|
|
|
sumDiagnosisInsert.Add(dataSumDiagnosis);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (sumDiagnosisInsert.Any())
|
|
await sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
var fieldComparison = new FieldComparison
|
|
{
|
|
FieldName = "id",
|
|
NewKeyValue = patientRegisterId.ToString(),
|
|
OldKeyValue = row["patient_register_id"].ToString(),
|
|
TableName = "patient_register"
|
|
};
|
|
var fieldComparisonRepository = scope.ServiceProvider.GetRequiredService<IRepository<FieldComparison, Guid>>();
|
|
|
|
await fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
|
|
await oldDb2.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
|
|
|
|
await uow.CompleteAsync();
|
|
|
|
|
|
#region 修改创建者日期跟id
|
|
Guid registerDoctorId = Guid.Parse(_configuration.GetValue<string>("AdminId"));
|
|
var registerDoctorEnt = userList.Where(m => m.Name == 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 newDb2.Ado.ExecuteCommandAsync(sql_update);
|
|
#endregion
|
|
}
|
|
|
|
|
|
}
|
|
;
|
|
}
|
|
;
|
|
}
|
|
stopwatch3.Stop();
|
|
_logger.LogInformation($"{row["patient_register_id"]}_处理单个人总耗时:{stopwatch3.ElapsedMilliseconds}");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
hangPatientRegisterErrorCount++;
|
|
_logger.LogInformation($"数据处理失败,人员id为:{row["patient_register_id"]}");
|
|
#region 添加到tb_error_log表
|
|
//await oldDb2.Ado.ExecuteCommandAsync($"insert into tb_error_log(old_patient_register_id,error_message,addtime) values ('{row["patient_register_id"]}','{ex.StackTrace}',getdate()) ");
|
|
#endregion
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 反向导入人员等业务信息
|
|
/// </summary>
|
|
/// <param name="handCount">每次处理的人员数量</param>
|
|
/// <param name="isGo">是否继续处理</param>
|
|
/// <returns></returns>
|
|
[RemoteService(false)]
|
|
[HttpPost("api/app/CCTJExportData/TransferPatientRegisterWithDetailReverseData")]
|
|
public async Task TransferPatientRegisterWithDetailReverseData(int handCount, bool isGo = false)
|
|
{
|
|
//当前导入的ID
|
|
string nextKeyValue = oldDb.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_reverse' ");
|
|
|
|
var oldPatientRegisterList = await oldDb.Ado.GetDataTableAsync($"select top {handCount} * from patient_register where patient_register_id<'{nextKeyValue}' order by patient_register_id desc");
|
|
|
|
if (oldPatientRegisterList.Rows.Count > 0)
|
|
{
|
|
var userList = await _identityUserRepository.GetListAsync();
|
|
List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
|
|
|
|
foreach (DataRow row in oldPatientRegisterList.Rows)
|
|
{
|
|
hangPatientRegisterReverseCount++;
|
|
|
|
|
|
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
string oldPatientRegisterId = row["patient_register_id"].ToString();
|
|
|
|
//检查是否已经导入
|
|
var isDZPatientRegisterTemp = (await _fieldComparisonRepository.GetListAsync(f => f.TableName == "patient_register"
|
|
&& f.OldKeyValue == oldPatientRegisterId));
|
|
|
|
|
|
if (isDZPatientRegisterTemp.Count > 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
|
|
|
|
//档案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()))
|
|
{
|
|
var nationEnt = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault();
|
|
if (nationEnt == null)
|
|
{
|
|
nationId = row["nation_id"].ToString();
|
|
}
|
|
else
|
|
{
|
|
nationId = nationEnt.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 = row["marital_status_id"].ToString() == "2" ? '4' : 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.Name == 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 = (await _fieldComparisonRepository.GetQueryableAsync()).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((await _fieldComparisonRepository.GetQueryableAsync()).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((await _fieldComparisonRepository.GetQueryableAsync()).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 = (await _fieldComparisonRepository.GetQueryableAsync()).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 = (await _fieldComparisonRepository.GetQueryableAsync()).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 = (await _fieldComparisonRepository.GetQueryableAsync()).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 = (await _fieldComparisonRepository.GetQueryableAsync()).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.Name == 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 = row["marital_status_id"].ToString() == "2" ? '4' : 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, true);
|
|
|
|
|
|
|
|
|
|
|
|
#region 登记的项目、结果、小结
|
|
|
|
var oldRegisterAsbitemList = await oldDb.Ado.GetDataTableAsync($"select * from register_asbitem where patient_register_id='{row["patient_register_id"].ToString()}'");
|
|
|
|
if (oldRegisterAsbitemList.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow rowAsbitem in oldRegisterAsbitemList.Rows)
|
|
{
|
|
#region 转换审核医生ID
|
|
Guid? auditorUserId = null;
|
|
if (!string.IsNullOrWhiteSpace(rowAsbitem["audit_doctor"].ToString()))
|
|
{
|
|
var userEnt = userList.Where(m => m.Name == rowAsbitem["audit_doctor"].ToString().Trim()).FirstOrDefault();
|
|
if (userEnt != null)
|
|
{
|
|
auditorUserId = userEnt.Id;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 转换检查医生ID
|
|
string checkDoctorId = null;
|
|
if (!string.IsNullOrWhiteSpace(rowAsbitem["check_doctor"].ToString()))
|
|
{
|
|
var userEnt = userList.Where(m => m.Name == rowAsbitem["check_doctor"].ToString().Trim()).FirstOrDefault();
|
|
if (userEnt != null)
|
|
{
|
|
checkDoctorId = userEnt.Id.ToString();
|
|
}
|
|
else
|
|
{
|
|
checkDoctorId = rowAsbitem["check_doctor"].ToString().Trim();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 转换组合项目ID
|
|
Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "asbitem" && m.OldKeyValue == rowAsbitem["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
#endregion
|
|
|
|
#region 插入register_check
|
|
Guid registerCheckId = GuidGenerator.Create();
|
|
var dataRegisterCheck = new RegisterCheck(registerCheckId)
|
|
{
|
|
AuditorUserId = auditorUserId,
|
|
AuditTime = string.IsNullOrEmpty(rowAsbitem["audit_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["audit_date"].ToString()),
|
|
CheckDate = string.IsNullOrEmpty(rowAsbitem["check_date"].ToString()) ? null : Convert.ToDateTime(rowAsbitem["check_date"].ToString()),
|
|
CheckDoctorId = checkDoctorId,
|
|
CheckRequestNo = "",
|
|
CheckRequestPrintTimes = (short)1,
|
|
CompleteFlag = Convert.ToChar(rowAsbitem["complete_flag"].ToString()),
|
|
CriticalRangeValue = null,
|
|
//CriticalValueCreateDate = null,
|
|
IsCriticalValue = null,
|
|
CriticalValueContent = null,
|
|
//CriticalValueProcessDate = null,
|
|
//CriticalValueProcessDoctor = null,
|
|
//CriticalValueProcessFlag = null,
|
|
IsAudit = string.IsNullOrEmpty(rowAsbitem["audit_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["audit_flag"].ToString()),
|
|
IsLock = string.IsNullOrEmpty(rowAsbitem["lock_flag"].ToString()) ? 'N' : Convert.ToChar(rowAsbitem["lock_flag"].ToString()),
|
|
PatientRegisterId = patientRegisterId,
|
|
ThirdInfo = rowAsbitem["third_info"].ToString()
|
|
};
|
|
|
|
|
|
await _registerCheckRepository.InsertAsync(dataRegisterCheck, true);
|
|
#endregion
|
|
|
|
|
|
|
|
#region 插入register_check_asbitem
|
|
Guid registerCheckAsbitemId = GuidGenerator.Create();
|
|
|
|
var dataRegisterAsbitem = new RegisterCheckAsbitem(registerCheckAsbitemId)
|
|
{
|
|
Amount = 1,
|
|
IsCharge = Convert.ToChar(rowAsbitem["charge_flag"].ToString()),
|
|
AsbitemId = newAsbitemId,
|
|
ChargePrice = Convert.ToDecimal(rowAsbitem["price"].ToString()),
|
|
GroupPackageId = null,
|
|
LisRequestId = null,
|
|
PatientRegisterId = patientRegisterId,
|
|
PayTypeFlag = Convert.ToChar(rowAsbitem["payment_mode"].ToString()),
|
|
RegisterCheckId = registerCheckId,
|
|
StandardPrice = Convert.ToDecimal(rowAsbitem["standard_price"].ToString())
|
|
};
|
|
|
|
await _registerCheckAsbitemRepository.InsertAsync(dataRegisterAsbitem);
|
|
#endregion
|
|
|
|
|
|
#region 插入医生小结
|
|
|
|
var oldSummary = rowAsbitem["summary"].ToString();
|
|
if (!string.IsNullOrWhiteSpace(oldSummary))
|
|
{
|
|
var dataRegisterCheckSummary = new RegisterCheckSummary
|
|
{
|
|
RegisterCheckId = registerCheckId,
|
|
DisplayOrder = 1,
|
|
Summary = oldSummary,
|
|
SummaryFlag = '0'
|
|
};
|
|
|
|
await _registerCheckSummaryRepository.InsertAsync(dataRegisterCheckSummary);
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 插入明细项目
|
|
|
|
var oldRegisterCheckItemList = await oldDb.Ado.GetDataTableAsync($"select * from register_item where patient_register_id='{row["patient_register_id"].ToString()}' and asbitem_id='{rowAsbitem["asbitem_id"].ToString()}'");
|
|
|
|
if (oldRegisterCheckItemList.Rows.Count > 0)
|
|
{
|
|
|
|
foreach (DataRow rowRegisterCheckItem in oldRegisterCheckItemList.Rows)
|
|
{
|
|
#region 转换项目ID 老转新
|
|
Guid newItemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "item" && m.OldKeyValue == rowRegisterCheckItem["item_id"].ToString()).FirstOrDefault().NewKeyValue);
|
|
|
|
#endregion
|
|
|
|
|
|
var dataRegisterCheckItem = new RegisterCheckItem
|
|
{
|
|
CheckDate = string.IsNullOrEmpty(rowRegisterCheckItem["check_date"].ToString()) ? null : Convert.ToDateTime(rowRegisterCheckItem["check_date"].ToString()),
|
|
CriticalValue = null,
|
|
CheckDoctorName = rowRegisterCheckItem["check_doctor"].ToString().Trim(),
|
|
CriticalRangeValue = null,
|
|
ItemId = newItemId,
|
|
ReferenceRangeValue = rowRegisterCheckItem["reference_range_value"].ToString(),
|
|
RegisterCheckId = registerCheckId,
|
|
Result = rowRegisterCheckItem["result"].ToString(),
|
|
ResultStatusId = _registerCheckItemManager.GetResultStatusId(rowRegisterCheckItem["result"].ToString(), rowRegisterCheckItem["reference_range_value"].ToString()),
|
|
Unit = rowRegisterCheckItem["Unit"].ToString()
|
|
};
|
|
|
|
await _registerCheckItemRepository.InsertAsync(dataRegisterCheckItem);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
#region 总检建议、综述、总检诊断
|
|
|
|
|
|
var oldSum = await oldDb.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' ");
|
|
|
|
if (oldSum.Rows.Count == 1)
|
|
{
|
|
string oldSummary = oldSum.Rows[0][0].ToString();
|
|
string oldSuggestion = oldSum.Rows[0][1].ToString();
|
|
|
|
if (!string.IsNullOrWhiteSpace(oldSummary))
|
|
{
|
|
|
|
Guid sumSummaryHeaderId = GuidGenerator.Create();
|
|
|
|
var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SummaryFlag = '0',
|
|
PatientRegisterId = patientRegisterId,
|
|
SummaryTitle = "异常结果如下"
|
|
};
|
|
|
|
await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
|
|
|
|
Guid sumSummaryContentId = GuidGenerator.Create();
|
|
var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SumSummaryHeaderId = sumSummaryHeaderId,
|
|
SummaryContent = oldSummary
|
|
};
|
|
|
|
await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
|
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(oldSuggestion))
|
|
{
|
|
|
|
Guid sumSuggestionHeaderId = GuidGenerator.Create();
|
|
|
|
var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
|
|
{
|
|
DisplayOrder = 1,
|
|
SuggestionFlag = '0',
|
|
PatientRegisterId = patientRegisterId,
|
|
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);
|
|
|
|
|
|
|
|
#region 总症诊断
|
|
var oldSummaryDiagnosis = await oldDb.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
|
|
|
|
if (oldSummaryDiagnosis.Rows.Count > 0)
|
|
{
|
|
List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
|
|
|
|
foreach (DataRow summaryDiagnosis in oldSummaryDiagnosis.Rows)
|
|
{
|
|
var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
|
|
.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == summaryDiagnosis["diagnosis_id"].ToString()).FirstOrDefault();
|
|
if (diagnosisEnt != null)
|
|
{
|
|
|
|
var dataSumDiagnosis = new SumDiagnosis
|
|
{
|
|
DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(summaryDiagnosis) + 1,
|
|
PatientRegisterId = patientRegisterId,
|
|
DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
|
|
SumSuggestionHeaderId = sumSuggestionHeaderId
|
|
};
|
|
|
|
sumDiagnosisInsert.Add(dataSumDiagnosis);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
if (sumDiagnosisInsert.Any())
|
|
await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
var fieldComparison = new FieldComparison
|
|
{
|
|
FieldName = "id",
|
|
NewKeyValue = patientRegisterId.ToString(),
|
|
OldKeyValue = row["patient_register_id"].ToString(),
|
|
TableName = "patient_register"
|
|
};
|
|
|
|
await _fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
|
|
await oldDb.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register_reverse' ");
|
|
|
|
await uow.CompleteAsync();
|
|
|
|
|
|
#region 修改创建者日期跟id
|
|
Guid registerDoctorId = Guid.Parse(_configuration.GetValue<string>("AdminId"));
|
|
var registerDoctorEnt = userList.Where(m => m.Name == 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 newDb.Ado.ExecuteCommandAsync(sql_update);
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
_logger.LogInformation($"人员数据反向处理{oldPatientRegisterList.Rows.Count}条,当前总数{hangPatientRegisterReverseCount}");
|
|
if (isGo)
|
|
await TransferPatientRegisterWithDetailReverseData(handCount, isGo);
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation("人员数据反向已处理完");
|
|
}
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移子项目对照数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferItemColumnReferenceData()
|
|
{
|
|
var oldColumnReferenceList = await oldDb.Ado.GetDataTableAsync($"select code_value,interface_code_value from column_reference_detail where column_reference_id=001 and interface_code_value!=''");
|
|
foreach (DataRow item in oldColumnReferenceList.Rows)
|
|
{
|
|
var fieldComparisonEnt = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "item" && f.OldKeyValue == item["code_value"].ToString().Trim());
|
|
if (fieldComparisonEnt != null)
|
|
{
|
|
var newItemId = Guid.Parse(fieldComparisonEnt.NewKeyValue);
|
|
|
|
|
|
|
|
string oldInterfaceCodeValue = item["interface_code_value"].ToString();
|
|
string[] oldInterfaceCodeValues = oldInterfaceCodeValue.Split(',');
|
|
|
|
var inputDto = new UpdateColumnReferenceInterfaceDto
|
|
{
|
|
ColumnReferenceId = Guid.Parse("3a1cfe80-ab99-509b-5447-8cf83c25fba6"),
|
|
AppCode = new UpdateColumnReferenceCodeDto { CodeValue = newItemId.ToString() },
|
|
InterfaceCodes = oldInterfaceCodeValues.Select(s => new UpdateColumnReferenceInterfaceCodeDto
|
|
{
|
|
CodeValue = s
|
|
}).ToList()
|
|
};
|
|
|
|
await _columnReferenceAppService.UpdateInterfaceCodeValuesAsync(inputDto);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移迪安项目对照数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferDAItemColumnReferenceData()
|
|
{
|
|
List<CommonTable> commonTables = new List<CommonTable>();
|
|
var oldColumnReferenceItemList = await oldDb.Ado.GetDataTableAsync($"select code_value,interface_code_value from column_reference_detail where column_reference_id=002 and interface_code_value!=''");
|
|
foreach (DataRow item in oldColumnReferenceItemList.Rows)
|
|
{
|
|
var fieldComparisonEnt = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "item" && f.OldKeyValue == item["code_value"].ToString().Trim());
|
|
if (fieldComparisonEnt != null)
|
|
{
|
|
var newItemId = Guid.Parse(fieldComparisonEnt.NewKeyValue);
|
|
|
|
|
|
|
|
string oldInterfaceCodeValue = item["interface_code_value"].ToString();
|
|
string[] oldInterfaceCodeValues = oldInterfaceCodeValue.Split(',');
|
|
|
|
foreach (var codeValue in oldInterfaceCodeValues)
|
|
{
|
|
commonTables.Add(new CommonTable
|
|
{
|
|
CommonTableTypeId = "100",
|
|
DataCode = codeValue,
|
|
DisplayName = newItemId.ToString(),
|
|
DisplayOrder = oldColumnReferenceItemList.Rows.IndexOf(item) + 1,
|
|
SimpleCode = ""
|
|
});
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
await _commonTableRepository.InsertManyAsync(commonTables);
|
|
|
|
var oldColumnReferenceAsbitemList = await oldDb.Ado.GetDataTableAsync($"select code_value,interface_code_value from column_reference_detail where column_reference_id=003 and interface_code_value!=''");
|
|
foreach (DataRow item in oldColumnReferenceAsbitemList.Rows)
|
|
{
|
|
var fieldComparisonEnt = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "asbitem" && f.OldKeyValue == item["code_value"].ToString().Trim());
|
|
if (fieldComparisonEnt != null)
|
|
{
|
|
var newItemId = Guid.Parse(fieldComparisonEnt.NewKeyValue);
|
|
|
|
|
|
|
|
string oldInterfaceCodeValue = item["interface_code_value"].ToString();
|
|
string[] oldInterfaceCodeValues = oldInterfaceCodeValue.Split(',');
|
|
|
|
foreach (var codeValue in oldInterfaceCodeValues)
|
|
{
|
|
commonTables.Add(new CommonTable
|
|
{
|
|
CommonTableTypeId = "200",
|
|
DataCode = codeValue,
|
|
DisplayName = newItemId.ToString(),
|
|
DisplayOrder = oldColumnReferenceAsbitemList.Rows.IndexOf(item) + 1,
|
|
SimpleCode = ""
|
|
});
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
await _commonTableRepository.InsertManyAsync(commonTables);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移lis项目对照
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferLisAsbitemColumnReferenceData()
|
|
{
|
|
var oldColumnReferenceList = await oldLisDb.Ado.GetDataTableAsync($"select code_value,interface_code_value from column_reference_detail where column_reference_id=001 and interface_code_value!=''");
|
|
foreach (DataRow item in oldColumnReferenceList.Rows)
|
|
{
|
|
string[] oldInterfaceCodeValues = item["interface_code_value"].ToString().Split(',');
|
|
|
|
var fieldComparisonList = await _fieldComparisonRepository.GetListAsync(f => f.TableName == "asbitem" && oldInterfaceCodeValues.Contains(f.OldKeyValue));
|
|
if (fieldComparisonList.Any())
|
|
{
|
|
string newAsbitemIds = string.Join(',', fieldComparisonList.Select(s => s.NewKeyValue));
|
|
|
|
int maxId = oldLisDb.Ado.GetInt("select max(column_reference_detail_id) from column_reference_detail");
|
|
|
|
await oldLisDb.Ado.ExecuteCommandAsync(@"insert into column_reference_detail(column_reference_detail_id,column_reference_id,code_value,interface_code_value)
|
|
VALUES (@column_reference_detail_id,@column_reference_id,@code_value,@interface_code_value);",
|
|
new List<SugarParameter>() {
|
|
new SugarParameter("column_reference_detail_id",(maxId+1).ToString().PadLeft(6,'0')),
|
|
new SugarParameter("column_reference_id","003"),
|
|
new SugarParameter("code_value",item["code_value"]),
|
|
new SugarParameter("interface_code_value",newAsbitemIds)
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
#region 会员卡相关
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移会员卡相关数据 金额后面统计
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferCardData()
|
|
{
|
|
|
|
await TransferCardTypeDataAsync();
|
|
await TransferCardRegisterDataAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 迁移会员卡类别数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task TransferCardTypeDataAsync()
|
|
{
|
|
var count = await _cardTypeRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
|
|
var oldCardTypeList = await oldDb.Ado.GetDataTableAsync("select card_type_id,card_type_name,card_mode_id,discount,expiry_day,remark from card_type order by display_order asc");
|
|
if (oldCardTypeList.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow row in oldCardTypeList.Rows)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
Guid cardTypeId = GuidGenerator.Create();
|
|
|
|
var data = new CardType(cardTypeId)
|
|
{
|
|
DisplayName = row["card_type_name"].ToString(),
|
|
DisplayOrder = oldCardTypeList.Rows.IndexOf(row) + 1,
|
|
CardModeId = row["card_mode_id"].ToString() == "1" ? '0' : '1',
|
|
Discount = Convert.ToInt32(row["discount"].ToString()),
|
|
ExpiryDay = Convert.ToInt32(row["expiry_day"].ToString()),
|
|
Remark = row["remark"].ToString()
|
|
};
|
|
|
|
await _cardTypeRepository.InsertAsync(data);
|
|
|
|
var fieldComparison = new FieldComparison
|
|
{
|
|
TableName = "card_type",
|
|
FieldName = "id",
|
|
NewKeyValue = cardTypeId.ToString(),
|
|
OldKeyValue = row["card_type_id"].ToString()
|
|
};
|
|
await _fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
await uow.CompleteAsync();
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
_logger.LogInformation($"会员卡类别数据处理完毕,处理数量{oldCardTypeList.Rows.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation($"会员卡类别数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移会员卡数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task TransferCardRegisterDataAsync()
|
|
{
|
|
var count = await _cardRegisterRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldCardRegisterList = await oldDb.Ado.GetDataTableAsync("SELECT [card_register_id],[card_type_id],[card_no],[discount],[expiry_date],[customer_name],[id_card_no]," +
|
|
"[telephone],[mobile_telephone],[card_flag],[remark],[sale_date],[amender],[amended_date] FROM [dbo].[card_register] where card_flag='Y' order by card_register_id asc");
|
|
if (oldCardRegisterList.Rows.Count > 0)
|
|
{
|
|
|
|
foreach (DataRow row in oldCardRegisterList.Rows)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
|
|
#region 统计金额
|
|
|
|
string sql_money = $"select sum(bill_money) as card_balance from card_bill where card_register_id='{row["card_register_id"]}'";
|
|
var cardBalance = oldDb.Ado.SqlQuerySingle<decimal>(sql_money);
|
|
#endregion
|
|
|
|
if (cardBalance <= 0)
|
|
continue;
|
|
Guid cardRegisterId = GuidGenerator.Create();
|
|
|
|
var cardTypeFieldComparison = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "card_type" && f.OldKeyValue == row["card_type_id"].ToString().Trim());
|
|
var data = new CardRegister(cardRegisterId)
|
|
{
|
|
CardBalance = cardBalance,
|
|
CardNo = row["card_no"].ToString(),
|
|
IdNo = row["id_card_no"].ToString(),
|
|
CardPassword = "",
|
|
ExpiryDate = Convert.ToDateTime(row["expiry_date"].ToString()),
|
|
Remark = row["remark"].ToString(),
|
|
CardTypeId = Guid.Parse(cardTypeFieldComparison.NewKeyValue),
|
|
CustomerName = row["customer_name"].ToString(),
|
|
Discount = Convert.ToInt32(row["discount"].ToString()),
|
|
IsActive = Convert.ToChar(row["card_flag"].ToString()),
|
|
MedicalCenterId = defaultMedicalCenterId,
|
|
MobileTelephone = row["mobile_telephone"].ToString(),
|
|
Telephone = row["telephone"].ToString()
|
|
};
|
|
|
|
await _cardRegisterRepository.InsertAsync(data);
|
|
|
|
var fieldComparison = new FieldComparison
|
|
{
|
|
TableName = "card_register",
|
|
FieldName = "id",
|
|
NewKeyValue = cardRegisterId.ToString(),
|
|
OldKeyValue = row["card_register_id"].ToString()
|
|
};
|
|
|
|
await _fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
await uow.CompleteAsync();
|
|
}
|
|
}
|
|
|
|
}
|
|
_logger.LogInformation($"会员卡数据处理完毕,处理数量{oldCardRegisterList.Rows.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation($"会员卡数据已存在,未处理");
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
/// 处理用户签名
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferUserSignData()
|
|
{
|
|
var userList = await _identityUserRepository.GetListAsync();
|
|
var oldUserList = await oldDb.Ado.GetDataTableAsync("select * from users");
|
|
if (oldUserList.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow row in oldUserList.Rows)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(row["signature_image"].ToString()))
|
|
{
|
|
var newUser = userList.FirstOrDefault(f => f.UserName == row["user_id"].ToString());
|
|
if (newUser == null)
|
|
{
|
|
newUser = userList.FirstOrDefault(f => f.UserName == row["user_id"].ToString() + "2");
|
|
}
|
|
if (newUser != null)
|
|
{
|
|
|
|
string signImg = UpLoadSignImg(Guid.NewGuid(), DateTime.Now, (byte[])row["signature_image"]);
|
|
|
|
if (signImg != "")
|
|
{
|
|
newUser.SetProperty("user_sign", signImg);
|
|
|
|
await _identityUserRepository.UpdateAsync(newUser);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 处理房间数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferRoomData()
|
|
{
|
|
var count = await _roomRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldRoomList = await oldDb.Ado.GetDataTableAsync(@"SELECT [room_id],[room_name],[department_id],
|
|
[for_sex_id],[room_type],[valid_flag],[display_order],[amender],[amended_date],[upper_limit_num] FROM [dbo].[room] order by display_order asc ");
|
|
if (oldRoomList.Rows.Count > 0)
|
|
{
|
|
foreach (DataRow row in oldRoomList.Rows)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
var fieldComparisonEnt = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "item_type"
|
|
&& f.OldKeyValue == row["department_id"].ToString().Trim());
|
|
|
|
|
|
|
|
Guid roomId = GuidGenerator.Create();
|
|
var data = new Room(roomId)
|
|
{
|
|
DisplayName = row["room_name"].ToString(),
|
|
IsActive = Convert.ToChar(row["valid_flag"].ToString()),
|
|
MedicalCenterId = defaultMedicalCenterId,
|
|
DisplayOrder = oldRoomList.Rows.IndexOf(row) + 1,
|
|
ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
|
|
QueueTime = 5,
|
|
RoomNo = row["room_id"].ToString(),
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode(row["room_name"].ToString()),
|
|
ItemTypeId = Guid.Parse(fieldComparisonEnt.NewKeyValue),
|
|
RoomTypeFlag = Convert.ToChar(row["room_type"].ToString())
|
|
};
|
|
|
|
await _roomRepository.InsertAsync(data);
|
|
|
|
var fieldComparison = new FieldComparison
|
|
{
|
|
TableName = "room",
|
|
FieldName = "id",
|
|
NewKeyValue = roomId.ToString(),
|
|
OldKeyValue = row["room_id"].ToString()
|
|
};
|
|
|
|
await _fieldComparisonRepository.InsertAsync(fieldComparison);
|
|
|
|
await uow.CompleteAsync();
|
|
}
|
|
}
|
|
|
|
}
|
|
_logger.LogInformation($"房间数据处理完毕,处理数量{oldRoomList.Rows.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation($"房间数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 处理房间明细数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferRoomDetailData()
|
|
{
|
|
var count = await _roomDetailRepository.GetCountAsync();
|
|
if (count == 0)
|
|
{
|
|
var oldRoomDetailList = await oldDb.Ado.GetDataTableAsync(@"select asbitem_id,room_id from room_asbitem ");
|
|
if (oldRoomDetailList.Rows.Count > 0)
|
|
{
|
|
var roomNos = (await _roomRepository.GetListAsync()).Select(s => s.RoomNo);
|
|
foreach (DataRow row in oldRoomDetailList.Rows)
|
|
{
|
|
if (roomNos.Contains(row["room_id"].ToString().Trim()))
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
|
|
var fieldComparisonEnt = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "room"
|
|
&& f.OldKeyValue == row["room_id"].ToString().Trim());
|
|
|
|
var fieldComparisonAsbitemEnt = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "asbitem"
|
|
&& f.OldKeyValue == row["asbitem_id"].ToString().Trim());
|
|
|
|
|
|
var data = new RoomDetail()
|
|
{
|
|
AsbitemId = Guid.Parse(fieldComparisonAsbitemEnt.NewKeyValue),
|
|
RoomId = Guid.Parse(fieldComparisonEnt.NewKeyValue)
|
|
};
|
|
|
|
await _roomDetailRepository.InsertAsync(data);
|
|
|
|
|
|
|
|
await uow.CompleteAsync();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
_logger.LogInformation($"房间明细数据处理完毕,处理数量{oldRoomDetailList.Rows.Count}");
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation($"房间明细数据已存在,未处理");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 处理用户科室
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task TranferUserItemTypeData()
|
|
{
|
|
var userList = await _identityUserRepository.GetListAsync();
|
|
if (userList.Any())
|
|
{
|
|
string sql_old_qx = "select user_id,department_id from security_department order by user_id asc";
|
|
var oldUserItemTypeList = await oldDb.Ado.GetDataTableAsync(sql_old_qx);
|
|
|
|
foreach (var item in userList)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
|
|
var oldRows = oldUserItemTypeList.Select($"user_id = '{item.UserName}'");
|
|
if (oldRows.Count() > 0)
|
|
{
|
|
List<UserItemType> userItemTypes = new List<UserItemType>();
|
|
|
|
foreach (DataRow row in oldRows)
|
|
{
|
|
var oldItemTypeId = row["department_id"].ToString();
|
|
var newItemTypeId = await _fieldComparisonRepository.FirstOrDefaultAsync(f => f.TableName == "item_type" && f.OldKeyValue == oldItemTypeId);
|
|
|
|
//科室找最后一级
|
|
var chidrenItemTypeList = await _itemTypeRepository.GetListAsync(m => m.ParentId == Guid.Parse(newItemTypeId.NewKeyValue));
|
|
if (chidrenItemTypeList.Any())
|
|
{
|
|
foreach (var chidrenItemType in chidrenItemTypeList)
|
|
{
|
|
var tempEnt = new UserItemType()
|
|
{
|
|
UserId = item.Id,
|
|
ItemTypeId = chidrenItemType.Id
|
|
};
|
|
userItemTypes.Add(tempEnt);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var tempEnt = new UserItemType()
|
|
{
|
|
UserId = item.Id,
|
|
ItemTypeId = Guid.Parse(newItemTypeId.NewKeyValue)
|
|
};
|
|
userItemTypes.Add(tempEnt);
|
|
}
|
|
}
|
|
|
|
await _userItemTypeRepository.InsertManyAsync(userItemTypes);
|
|
|
|
}
|
|
|
|
await uow.CompleteAsync();
|
|
|
|
}
|
|
}
|
|
|
|
_logger.LogInformation($"用户科室数据处理完毕,处理数量{oldUserItemTypeList.Rows.Count}");
|
|
}
|
|
|
|
}
|
|
|
|
#region 私有方法
|
|
|
|
/// <summary>
|
|
/// 转换老系统适用性别
|
|
/// </summary>
|
|
/// <param name="forSexId"></param>
|
|
/// <returns></returns>
|
|
private char ConvertForSex(string forSexId)
|
|
{
|
|
if (forSexId == "0")
|
|
{
|
|
return 'M';
|
|
}
|
|
else if (forSexId == "1")
|
|
{
|
|
return 'F';
|
|
}
|
|
else
|
|
{
|
|
return 'A';
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 转换老系统性别
|
|
/// </summary>
|
|
/// <param name="SexId"></param>
|
|
/// <returns></returns>
|
|
private char ConvertSex(string SexId)
|
|
{
|
|
if (SexId == "0")
|
|
{
|
|
return 'M';
|
|
}
|
|
else if (SexId == "1")
|
|
{
|
|
return 'F';
|
|
}
|
|
else
|
|
{
|
|
return 'U';
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 转换头像
|
|
/// </summary>
|
|
/// <param name="PatientRegisterId"></param>
|
|
/// <param name="time"></param>
|
|
/// <param name="Photo"></param>
|
|
/// <returns></returns>
|
|
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 "";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 转换签名
|
|
/// </summary>
|
|
/// <param name="UserId"></param>
|
|
/// <param name="time"></param>
|
|
/// <param name="Photo"></param>
|
|
/// <returns></returns>
|
|
private string UpLoadSignImg(Guid UserId, DateTime time, byte[] Photo)
|
|
{
|
|
string imgurl = $"UserSign/{time.Year}/{time.Month}/{time.Day}/" + UserId;
|
|
var isupload = ImageHelper.ByteToImage(Photo, imgurl);
|
|
if (!string.IsNullOrEmpty(isupload))
|
|
return isupload;
|
|
else
|
|
return "";
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 迁移后台用户数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task TransferUserData()
|
|
{
|
|
|
|
var oldUserList = await oldDb.Ado.GetDataTableAsync("select * from users");
|
|
if (oldUserList.Rows.Count > 0)
|
|
{
|
|
if (await _identityUserRepository.CountAsync() == 1)
|
|
{
|
|
foreach (DataRow row in oldUserList.Rows)
|
|
{
|
|
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
|
|
{
|
|
//#region 上传图片,获取地址
|
|
|
|
//string signImg = "";
|
|
//if (!string.IsNullOrEmpty(row["signature_image"].ToString()))
|
|
//{
|
|
|
|
// signImg = UpLoadSignImg(Guid.NewGuid(), DateTime.Now, (byte[])row["signature_image"]);
|
|
//}
|
|
|
|
|
|
//#endregion
|
|
|
|
string newUserName = LanguageConverter.GetPYSimpleCode(row["user_id"].ToString().Trim());
|
|
|
|
var isUserName = await _identityUserRepository.FirstOrDefaultAsync(m => m.UserName == newUserName);
|
|
if (isUserName != null)
|
|
{
|
|
newUserName += "2";
|
|
}
|
|
var userEnt = new IdentityUserCreateNoEmailDto
|
|
{
|
|
Email = "",
|
|
IsActive = row["valid_flag"].ToString() == "Y" ? true : false,
|
|
LockoutEnabled = false,
|
|
Name = "",
|
|
Password = string.IsNullOrWhiteSpace(row["password"].ToString()) ? "888888" : row["password"].ToString(),
|
|
PhoneNumber = "",
|
|
RoleNames = new string[] { "admin" },
|
|
Surname = row["user_name"].ToString().Trim(),
|
|
UserName = newUserName,
|
|
UserPhoto = "",
|
|
UserSign = ""
|
|
};
|
|
|
|
await _myUserAppService.CreateAsync(userEnt);
|
|
|
|
await uow.CompleteAsync();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation("用户数据已存在,未处理");
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
#region 默认数据
|
|
|
|
/// <summary>
|
|
/// 生成性别表基础数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task CreateSexAsync()
|
|
{
|
|
if (await _sexRepository.GetCountAsync() == 0)
|
|
{
|
|
List<Sex> sexes = new List<Sex>();
|
|
sexes.Add(new Sex
|
|
{
|
|
DisplayName = "未知",
|
|
Id = 'U',
|
|
DisplayOrder = 1,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("未知")
|
|
});
|
|
sexes.Add(new Sex
|
|
{
|
|
DisplayName = "男",
|
|
Id = 'M',
|
|
DisplayOrder = 2,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("男")
|
|
});
|
|
sexes.Add(new Sex
|
|
{
|
|
DisplayName = "女",
|
|
Id = 'F',
|
|
DisplayOrder = 3,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("女")
|
|
});
|
|
|
|
await _sexRepository.InsertManyAsync(sexes);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 生成适用性别表基础数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task CreateForSexAsync()
|
|
{
|
|
if (await _forSexRepository.GetCountAsync() == 0)
|
|
{
|
|
List<ForSex> forSexes = new List<ForSex>();
|
|
forSexes.Add(new ForSex
|
|
{
|
|
DisplayName = "全部",
|
|
Id = 'A',
|
|
DisplayOrder = 1,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("全部")
|
|
});
|
|
forSexes.Add(new ForSex
|
|
{
|
|
DisplayName = "男",
|
|
Id = 'M',
|
|
DisplayOrder = 2,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("男")
|
|
});
|
|
forSexes.Add(new ForSex
|
|
{
|
|
DisplayName = "女",
|
|
Id = 'F',
|
|
DisplayOrder = 3,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("女")
|
|
});
|
|
|
|
await _forSexRepository.InsertManyAsync(forSexes);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成婚姻状况表基础数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task CreateMaritalStatusAsync()
|
|
{
|
|
if (await _maritalStatusRepository.GetCountAsync() == 0)
|
|
{
|
|
List<MaritalStatus> maritalStatuses = new List<MaritalStatus>();
|
|
maritalStatuses.Add(new MaritalStatus
|
|
{
|
|
DisplayName = "未婚",
|
|
Id = '0',
|
|
DisplayOrder = 1,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("未婚")
|
|
});
|
|
maritalStatuses.Add(new MaritalStatus
|
|
{
|
|
DisplayName = "已婚",
|
|
Id = '1',
|
|
DisplayOrder = 2,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("已婚")
|
|
});
|
|
maritalStatuses.Add(new MaritalStatus
|
|
{
|
|
DisplayName = "离异",
|
|
Id = '2',
|
|
DisplayOrder = 3,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("离异")
|
|
});
|
|
maritalStatuses.Add(new MaritalStatus
|
|
{
|
|
DisplayName = "丧偶",
|
|
Id = '3',
|
|
DisplayOrder = 4,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("丧偶")
|
|
});
|
|
maritalStatuses.Add(new MaritalStatus
|
|
{
|
|
DisplayName = "离异或丧偶",
|
|
Id = '4',
|
|
DisplayOrder = 5,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("离异或丧偶")
|
|
});
|
|
maritalStatuses.Add(new MaritalStatus
|
|
{
|
|
DisplayName = "未知",
|
|
Id = '9',
|
|
DisplayOrder = 6,
|
|
SimpleCode = LanguageConverter.GetPYSimpleCode("未知")
|
|
});
|
|
|
|
|
|
|
|
await _maritalStatusRepository.InsertManyAsync(maritalStatuses);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 生成结果状态
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task CreateResultStatusAsync()
|
|
{
|
|
if (await _resultStatusRepository.GetCountAsync() == 0)
|
|
{
|
|
#region 数据
|
|
List<ResultStatus> resultStatuses = new List<ResultStatus>();
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "01",
|
|
DisplayName = "正常",
|
|
ReportPrompt = "",
|
|
ReportBackgroundColor = 16777215,
|
|
ReportFontColor = 0,
|
|
DataInputPrompt = "",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 0,
|
|
DisplayOrder = 1
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "02",
|
|
DisplayName = "错误",
|
|
ReportPrompt = "×",
|
|
ReportBackgroundColor = 16711680,
|
|
ReportFontColor = 255,
|
|
DataInputPrompt = "×",
|
|
DataInputBackgroundColor = 16711808,
|
|
DataInputFontColor = 255,
|
|
DisplayOrder = 2
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "03",
|
|
DisplayName = "阴性",
|
|
ReportPrompt = "-",
|
|
ReportBackgroundColor = 16777215,
|
|
ReportFontColor = 0,
|
|
DataInputPrompt = "-",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 0,
|
|
DisplayOrder = 3
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "04",
|
|
DisplayName = "阳性",
|
|
ReportPrompt = "+",
|
|
ReportBackgroundColor = 16777215,
|
|
ReportFontColor = 0,
|
|
DataInputPrompt = "+",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 0,
|
|
DisplayOrder = 4
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "05",
|
|
DisplayName = "弱阳性",
|
|
ReportPrompt = "±",
|
|
ReportBackgroundColor = 16777215,
|
|
ReportFontColor = 0,
|
|
DataInputPrompt = "±",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 0,
|
|
DisplayOrder = 5
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "06",
|
|
DisplayName = "偏低",
|
|
ReportPrompt = "↓",
|
|
ReportBackgroundColor = 65535,
|
|
ReportFontColor = 16711680,
|
|
DataInputPrompt = "↓",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 16711680,
|
|
DisplayOrder = 6
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "07",
|
|
DisplayName = "偏高",
|
|
ReportPrompt = "↑",
|
|
ReportBackgroundColor = 8454143,
|
|
ReportFontColor = 255,
|
|
DataInputPrompt = "↑",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 255,
|
|
DisplayOrder = 7
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "08",
|
|
DisplayName = "危急值下限",
|
|
ReportPrompt = "↓",
|
|
ReportBackgroundColor = 16777215,
|
|
ReportFontColor = 8421376,
|
|
DataInputPrompt = "↓",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 8421376,
|
|
DisplayOrder = 8
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "09",
|
|
DisplayName = "危急值上限",
|
|
ReportPrompt = "↑",
|
|
ReportBackgroundColor = 16777215,
|
|
ReportFontColor = 16711935,
|
|
DataInputPrompt = "↑",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 16711935,
|
|
DisplayOrder = 9
|
|
});
|
|
resultStatuses.Add(new ResultStatus
|
|
{
|
|
Id = "10",
|
|
DisplayName = "危急值",
|
|
ReportPrompt = "×",
|
|
ReportBackgroundColor = 16777215,
|
|
ReportFontColor = 16711935,
|
|
DataInputPrompt = "×",
|
|
DataInputBackgroundColor = 16777215,
|
|
DataInputFontColor = 16711935,
|
|
DisplayOrder = 10
|
|
});
|
|
#endregion
|
|
|
|
await _resultStatusRepository.InsertManyAsync(resultStatuses);
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
}
|
|
}
|