diff --git a/src/Shentun.Pacs.Application.Contracts/PacsBusiness/ImportPeisCheckDataByCheckRequestNoInputDto.cs b/src/Shentun.Pacs.Application.Contracts/PacsBusiness/ImportPeisCheckDataByCheckRequestNoInputDto.cs
new file mode 100644
index 0000000..3e56223
--- /dev/null
+++ b/src/Shentun.Pacs.Application.Contracts/PacsBusiness/ImportPeisCheckDataByCheckRequestNoInputDto.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Pacs.PacsBusiness
+{
+ public class ImportPeisCheckDataByCheckRequestNoInputDto
+ {
+ ///
+ /// 检查条码号
+ ///
+ public string CheckRequestNo { get; set; }
+
+ ///
+ /// 设备Id
+ ///
+ public string DeviceId { get; set; }
+
+ ///
+ /// 预检Aet
+ ///
+ public string ScheduledAet { get; set; }
+ }
+}
diff --git a/src/Shentun.Pacs.Application/CollectItemTypes/CollectItemTypeAppService.cs b/src/Shentun.Pacs.Application/CollectItemTypes/CollectItemTypeAppService.cs
new file mode 100644
index 0000000..e97feed
--- /dev/null
+++ b/src/Shentun.Pacs.Application/CollectItemTypes/CollectItemTypeAppService.cs
@@ -0,0 +1,162 @@
+using AutoMapper.Internal.Mappers;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Shentun.Pacs.HelperDto;
+using Shentun.Pacs.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Identity;
+
+namespace Shentun.Pacs.CollectItemTypes
+{
+ ///
+ /// 汇总项目类别
+ ///
+ [ApiExplorerSettings(GroupName = "Work")]
+ [Authorize]
+ public class CollectItemTypeAppService : ApplicationService
+ {
+ private readonly IRepository _collectItemTypeRepository;
+ private readonly CacheService _cacheService;
+ private readonly CollectItemTypeManager _manager;
+ private readonly IRepository _userRepository;
+ public CollectItemTypeAppService(
+ IRepository collectItemTypeRepository,
+ IRepository userRepository,
+ CollectItemTypeManager manager,
+ CacheService cacheService)
+ {
+ _collectItemTypeRepository = collectItemTypeRepository;
+ _cacheService = cacheService;
+ _manager = manager;
+ _userRepository = userRepository;
+ }
+
+ ///
+ /// 根据ID查实体内容
+ ///
+ ///
+ ///
+ [HttpPost("api/app/CollectItemType/GetById")]
+ public async Task GetByIdAsync(CollectItemTypeIdInputDto input)
+ {
+ var entity = await _collectItemTypeRepository.GetAsync(input.Id);
+ var entityDto = ObjectMapper.Map(entity);
+ entityDto.CreatorName = _cacheService.GetSurnameAsync(entityDto.CreatorId).Result;
+ entityDto.LastModifierName = _cacheService.GetSurnameAsync(entityDto.LastModifierId).Result;
+
+ return entityDto;
+ }
+
+
+
+ ///
+ /// 查询列表
+ ///
+ ///
+ [HttpPost("api/app/CollectItemType/GetList")]
+ public async Task> GetListAsync()
+ {
+ var userQueryable = await _userRepository.GetQueryableAsync();
+
+ var entlist = (from a in await _collectItemTypeRepository.GetQueryableAsync()
+ join b in userQueryable on a.CreatorId equals b.Id into bb
+ from ab in bb.DefaultIfEmpty()
+ join c in userQueryable on a.LastModifierId equals c.Id into cc
+ from ac in cc.DefaultIfEmpty()
+ select new
+ {
+ a,
+ CreatorName = ab != null ? ab.Surname : "",
+ LastModifierName = ac != null ? ac.Surname : ""
+
+ })
+ .Select(s => new CollectItemTypeDto
+ {
+ CreationTime = s.a.CreationTime,
+ CreatorId = s.a.CreatorId,
+ LastModifierId = s.a.LastModifierId,
+ Id = s.a.Id,
+ DisplayOrder = s.a.DisplayOrder,
+ DisplayName = s.a.DisplayName,
+ InvoiceItemTypeId = s.a.InvoiceItemTypeId,
+ SimpleCode = s.a.SimpleCode,
+ LastModificationTime = s.a.LastModificationTime,
+ CreatorName = s.CreatorName,
+ LastModifierName = s.LastModifierName
+ }).OrderBy(o => o.DisplayOrder).ToList();
+
+ return entlist;
+ }
+
+ ///
+ /// 创建
+ ///
+ ///
+ ///
+ [HttpPost("api/app/CollectItemType/Create")]
+ public async Task CreateAsync(CreateCollectItemTypeDto input)
+ {
+ var createEntity = ObjectMapper.Map(input);
+ var entity = await _manager.CreateAsync(createEntity);
+ entity = await _collectItemTypeRepository.InsertAsync(entity);
+ var dto = ObjectMapper.Map(entity);
+ return dto;
+ }
+
+ ///
+ /// 修改
+ ///
+ ///
+ ///
+ [HttpPost("api/app/CollectItemType/Update")]
+ public async Task UpdateAsync(UpdateCollectItemTypeDto input)
+ {
+ var entity = await _collectItemTypeRepository.GetAsync(input.Id);
+ var sourceEntity = ObjectMapper.Map(input);
+ await _manager.UpdateAsync(sourceEntity, entity);
+ entity = await _collectItemTypeRepository.UpdateAsync(entity);
+ return ObjectMapper.Map(entity);
+ }
+
+ ///
+ /// 删除
+ ///
+ ///
+ ///
+ [HttpPost("api/app/CollectItemType/Delete")]
+ public async Task DeleteAsync(CollectItemTypeIdInputDto input)
+ {
+ var entity = await _collectItemTypeRepository.GetAsync(input.Id);
+ await _manager.CheckAndDeleteAsync(entity);
+ }
+
+
+ ///
+ /// 修改排序 置顶,置底
+ ///
+ ///
+ ///
+ [HttpPost("api/app/CollectItemType/UpdateManySort")]
+ public async Task UpdateManySortAsync(UpdateManySortInput input)
+ {
+ await _manager.UpdateManySortAsync(input.Id, input.SortType);
+ }
+
+ ///
+ /// 修改排序 拖拽
+ ///
+ ///
+ ///
+ [HttpPost("api/app/CollectItemType/UpdateSortMany")]
+ public async Task UpdateSortManyAsync(UpdateSortManyDto input)
+ {
+ await _manager.UpdateSortManyAsync(input);
+ }
+ }
+}
diff --git a/src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs b/src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs
index 604b77b..d09e785 100644
--- a/src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs
+++ b/src/Shentun.Pacs.Application/PacsBusiness/PacsBusinessAppService.cs
@@ -6,10 +6,12 @@ using Microsoft.Extensions.Logging;
using NPOI.POIFS.Storage;
using NPOI.Util;
using NUglify.Helpers;
+using Shentun.Pacs.ColumnReferenceCodes;
using Shentun.Pacs.CustomerOrgs;
using Shentun.Pacs.Enums;
using Shentun.Pacs.Models;
using Shentun.Pacs.PatientRegisters;
+using Shentun.Pacs.Patients;
using Shentun.Pacs.PrintReports;
using Shentun.Pacs.RegisterCheckItems;
using Shentun.Pacs.RegisterCheckPictures;
@@ -19,8 +21,11 @@ using Shentun.Pacs.RegisterCheckSummarys;
using Shentun.Pacs.SumSummaryReports;
using Shentun.Pacs.ThirdBookingPushs;
using Shentun.Pacs.ThirdPartyPublicInterfaces;
+using Shentun.Utilities;
+using SqlSugar;
using System;
using System.Collections.Generic;
+using System.Data;
using System.Linq;
using System.Net.Http;
using System.Text;
@@ -61,6 +66,12 @@ namespace Shentun.Pacs.PacsBusiness
private readonly IRepository _itemTypeRepository;
private readonly CustomerOrgManager _customerOrgManager;
private readonly IRepository _organizationUnitRepository;
+ private readonly IRepository _patientRepository;
+ private readonly PatientManager _manager;
+ private readonly PatientRegisterManager _patientRegisterManager;
+ private readonly ColumnReferenceCodeManager _columnReferenceCodeManager;
+ private readonly IRepository _registerCheckItemRepository;
+
public PacsBusinessAppService(
IConfiguration configuration,
IRepository registerCheckRepository,
@@ -82,7 +93,12 @@ namespace Shentun.Pacs.PacsBusiness
ILogger logger,
IRepository itemTypeRepository,
CustomerOrgManager customerOrgManager,
- IRepository organizationUnitRepository)
+ IRepository organizationUnitRepository,
+ IRepository patientRepository,
+ PatientManager manager,
+ PatientRegisterManager patientRegisterManager,
+ ColumnReferenceCodeManager columnReferenceCodeManager,
+ IRepository registerCheckItemRepository)
{
_configuration = configuration;
_registerCheckRepository = registerCheckRepository;
@@ -105,6 +121,11 @@ namespace Shentun.Pacs.PacsBusiness
_itemTypeRepository = itemTypeRepository;
_customerOrgManager = customerOrgManager;
_organizationUnitRepository = organizationUnitRepository;
+ _patientRepository = patientRepository;
+ _manager = manager;
+ _patientRegisterManager = patientRegisterManager;
+ _columnReferenceCodeManager = columnReferenceCodeManager;
+ _registerCheckItemRepository = registerCheckItemRepository;
}
@@ -751,5 +772,282 @@ namespace Shentun.Pacs.PacsBusiness
}
+
+ #region 新流程增加接口
+
+ ///
+ /// 导入老系统人员、项目数据,并自动加入worklist
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("api/app/PacsBusiness/ImportPeisCheckDataByCheckRequestNo")]
+ public async Task ImportPeisCheckDataByCheckRequestNoAsync(ImportPeisCheckDataByCheckRequestNoInputDto input)
+ {
+
+ if (string.IsNullOrWhiteSpace(input.CheckRequestNo))
+ {
+ throw new UserFriendlyException("检查条码不能为空");
+ }
+
+ if (string.IsNullOrWhiteSpace(input.DeviceId))
+ {
+ throw new UserFriendlyException("设备id不能为空");
+ }
+
+
+ if (string.IsNullOrWhiteSpace(input.ScheduledAet))
+ {
+ throw new UserFriendlyException("预检AET不能为空");
+ }
+
+ string connectionString = _configuration.GetValue("OldPeis:ConnectionStrings", "");
+ SqlSugarClient oldDb = new SqlSugarClient(new ConnectionConfig()
+ {
+ ConnectionString = connectionString,
+ DbType = SqlSugar.DbType.SqlServer,
+ IsAutoCloseConnection = true
+ });
+
+
+
+ var oldRegisterAsbitemList = await oldDb.Ado.GetDataTableAsync("select a.name as patient_name,a.sex_id,a.mobile_telephone,a.telephone," +
+ "a.age,a.id_card_no,a.marital_status_id,a.complete_flag," +
+ "b.print_barcode_no,b.asbitem_id,b.price,b.standard_price,b.charge_flag,b.payment_mode,c.item_id " +
+ "from patient_register as a left join register_asbitem as b on a.patient_register_id=b.patient_register_id " +
+ "left join register_item as c on b.asbitem_id=c.asbitem_id and a.patient_register_id=c.patient_register_id" +
+ $" where b.print_barcode_no='{input.CheckRequestNo}'");
+
+ if (oldRegisterAsbitemList.Rows.Count > 0)
+ {
+ var registerCheckFirst = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
+ join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
+ join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
+ where registerCheck.CheckRequestNo == input.CheckRequestNo
+ select new
+ {
+ patientRegister,
+ registerCheck
+ }).FirstOrDefault();
+
+ if (registerCheckFirst == null)
+ {
+ #region 插入人员
+
+ #region 档案
+ var patientName = oldRegisterAsbitemList.Rows[0]["patient_name"].ToString();
+ var sexId = ConvertSex(oldRegisterAsbitemList.Rows[0]["sex_id"].ToString());
+ var mobileTelephone = oldRegisterAsbitemList.Rows[0]["mobile_telephone"].ToString();
+ var telephone = oldRegisterAsbitemList.Rows[0]["telephone"].ToString();
+ var idNo = oldRegisterAsbitemList.Rows[0]["id_card_no"].ToString();
+ short? age = string.IsNullOrWhiteSpace(oldRegisterAsbitemList.Rows[0]["age"].ToString()) ? null : Convert.ToInt16(oldRegisterAsbitemList.Rows[0]["age"].ToString());
+ var maritalStatusId = oldRegisterAsbitemList.Rows[0]["marital_status_id"].ToString() == "2" ? '4' : Convert.ToChar(oldRegisterAsbitemList.Rows[0]["marital_status_id"].ToString());
+
+ var patientQuery = await _patientRepository.GetQueryableAsync();
+ patientQuery = patientQuery.Where(m => m.DisplayName == patientName && m.SexId == sexId);
+ if (!string.IsNullOrWhiteSpace(mobileTelephone))
+ {
+ patientQuery = patientQuery.Where(m => m.MobileTelephone == mobileTelephone);
+ }
+ if (!string.IsNullOrWhiteSpace(idNo))
+ {
+ patientQuery = patientQuery.Where(m => m.IdNo == idNo);
+ }
+
+ //档案
+ var patientEnt = await patientQuery.FirstOrDefaultAsync();
+
+ if (patientEnt == null)
+ {
+ patientEnt = new Patient(GuidGenerator.Create())
+ {
+ BirthDate = null,
+ BirthPlaceId = null,
+ DisplayName = patientName,
+ Email = null,
+ IdNo = idNo,
+ MaritalStatusId = maritalStatusId,
+ MedicalCenterId = Guid.Empty,
+ MobileTelephone = mobileTelephone,
+ NationId = null,
+ PatientNo = await _manager.CreatePatientNo(Guid.Empty),
+ PatientPassword = "",
+ PostalCode = "",
+ SexId = sexId,
+ SimpleCode = LanguageConverter.GetPYSimpleCode(patientName),
+ Telephone = telephone
+ };
+
+ patientEnt = await _patientRepository.InsertAsync(patientEnt, true);
+ }
+ #endregion
+
+ #region 人员
+ var patientRegisterEnt = new PatientRegister(GuidGenerator.Create())
+ {
+ Age = age,
+ CompleteFlag = Convert.ToChar(oldRegisterAsbitemList.Rows[0]["complete_flag"].ToString()),
+ CustomerOrgId = GuidFlag.PersonCustomerOrgId,
+ CustomerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId,
+ DeviceId = Guid.Parse(input.DeviceId),
+ GuidePrintTimes = 0,
+ IsAudit = 'N',
+ IsLock = 'N',
+ IsMedicalStart = 'Y',
+ IsNameHide = 'N',
+ IsPhoneFollow = 'N',
+ IsVip = 'N',
+ IsRecoverGuide = 'N',
+ IsUpload = 'N',
+ IsUploadAppoint = 'N',
+ MaritalStatusId = maritalStatusId,
+ MedicalCenterId = Guid.Empty,
+ MedicalTimes = 0,
+ PatientId = patientEnt.Id,
+ PatientName = patientName,
+ ReportPrintTimes = 0,
+ PatientRegisterNo = await _patientRegisterManager.CreatePatientRegisterNo(Guid.Empty),
+ SendFlag = '0',
+ SexId = sexId
+ };
+
+ patientRegisterEnt = await _patientRegisterRepository.InsertAsync(patientRegisterEnt, true);
+ #endregion
+
+ #region 登记项目 明细项目
+
+ string oldAsbitemId = oldRegisterAsbitemList.Rows[0]["asbitem_id"].ToString();
+ var oldAsbitemPrice = Convert.ToDecimal(oldRegisterAsbitemList.Rows[0]["price"].ToString());
+ var oldAsbitemStandardPrice = Convert.ToDecimal(oldRegisterAsbitemList.Rows[0]["standard_price"].ToString());
+
+ Guid asbitemColumnReferenId = Guid.Parse(_configuration.GetValue("OldPeis:AsbitemColumnReferenId", Guid.Empty.ToString()));
+ Guid itemColumnReferenId = Guid.Parse(_configuration.GetValue("OldPeis:ItemColumnReferenId", Guid.Empty.ToString()));
+
+ var asbitemCodeValues = await _columnReferenceCodeManager.GetColumnReferenCodeValueAsync(asbitemColumnReferenId, oldAsbitemId);
+ if (!asbitemCodeValues.Any())
+ {
+ throw new UserFriendlyException($"组合项目编号:{oldAsbitemId}没有对照");
+ }
+
+ if (asbitemCodeValues.Count() > 1)
+ {
+ throw new UserFriendlyException($"组合项目编号:{oldAsbitemId}有多个pacs项目进行了对照");
+ }
+
+ Guid asbitemId = Guid.Parse(asbitemCodeValues.First()); //pacs系统组合项目id
+ //检查
+ var registerCheckEnt = new RegisterCheck(GuidGenerator.Create())
+ {
+ CheckRequestNo = input.CheckRequestNo,
+ CheckRequestPrintTimes = 0,
+ CompleteFlag = RegisterCheckCompleteFlag.UnChecked,
+ IsAudit = 'N',
+ IsLock = 'N',
+ IsPacsCheck = 'N',
+ IsSignIn = 'Y',
+ PatientRegisterId = patientRegisterEnt.Id,
+ ScheduledAet = input.ScheduledAet,
+ WorklistFlag = '1',
+ WorklistPreCheckDate = DateTime.Now
+ };
+
+ registerCheckEnt = await _registerCheckRepository.InsertAsync(registerCheckEnt, true);
+
+ //组合项目
+ var registerCheckAsbitemEnt = new RegisterCheckAsbitem(GuidGenerator.Create())
+ {
+ Amount = 1,
+ AsbitemId = asbitemId,
+ ChargePrice = oldAsbitemPrice,
+ StandardPrice = oldAsbitemStandardPrice,
+ IsCharge = Convert.ToChar(oldRegisterAsbitemList.Rows[0]["charge_flag"].ToString()),
+ OldAsbitemId = oldAsbitemId,
+ PatientRegisterId = patientRegisterEnt.Id,
+ PayTypeFlag = Convert.ToChar(oldRegisterAsbitemList.Rows[0]["payment_mode"].ToString()),
+ RegisterCheckId = registerCheckEnt.Id
+ };
+
+ registerCheckAsbitemEnt = await _registerCheckAsbitemRepository.InsertAsync(registerCheckAsbitemEnt, true);
+
+ //明细项目
+
+ List registerCheckItemList = new List();
+
+ foreach (DataRow row in oldRegisterAsbitemList.Rows)
+ {
+ string oldItemId = row["item_id"].ToString();
+
+ var itemCodeValues = await _columnReferenceCodeManager.GetColumnReferenCodeValueAsync(itemColumnReferenId, oldItemId);
+ if (!itemCodeValues.Any())
+ {
+ throw new UserFriendlyException($"项目编号:{oldItemId}没有对照");
+ }
+ if (itemCodeValues.Count() > 1)
+ {
+ throw new UserFriendlyException($"项目编号:{oldAsbitemId}有多个pacs项目进行了对照");
+ }
+
+ Guid itemId = Guid.Parse(itemCodeValues.First()); //pacs系统项目id
+
+ if (registerCheckItemList.Count(c => c.ItemId == itemId) == 0)
+ {
+ registerCheckItemList.Add(new RegisterCheckItem
+ {
+ ItemId = itemId,
+ RegisterCheckId = registerCheckEnt.Id,
+ });
+ }
+ }
+
+ if (registerCheckItemList.Any())
+ {
+ await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList);
+ }
+
+ #endregion
+
+ #endregion
+ }
+ else
+ {
+ //更新设备id
+ registerCheckFirst.patientRegister.DeviceId = Guid.Parse(input.DeviceId);
+
+ await _patientRegisterRepository.UpdateAsync(registerCheckFirst.patientRegister);
+
+ }
+ }
+ else
+ {
+ throw new UserFriendlyException("检查条码不正确");
+ }
+
+
+
+ }
+
+
+ #endregion
+
+ ///
+ /// 转换老系统性别
+ ///
+ ///
+ ///
+ private char ConvertSex(string SexId)
+ {
+ if (SexId == "0")
+ {
+ return 'M';
+ }
+ else if (SexId == "1")
+ {
+ return 'F';
+ }
+ else
+ {
+ return 'U';
+ }
+ }
}
}
diff --git a/src/Shentun.Pacs.Application/PacsDataMigrates/PacsDataMigrateAppService.cs b/src/Shentun.Pacs.Application/PacsDataMigrates/PacsDataMigrateAppService.cs
index 9700aa9..56c9415 100644
--- a/src/Shentun.Pacs.Application/PacsDataMigrates/PacsDataMigrateAppService.cs
+++ b/src/Shentun.Pacs.Application/PacsDataMigrates/PacsDataMigrateAppService.cs
@@ -1,11 +1,27 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json;
+using SqlSugar;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
+using System.Net.Http.Headers;
+using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
+using Volo.Abp;
using Volo.Abp.Application.Services;
+using Microsoft.Extensions.Logging;
+using Shentun.Pacs.Models;
+using Volo.Abp.Domain.Repositories;
+using System.Data;
+using Volo.Abp.Uow;
+using Shentun.Utilities;
+using Shentun.Pacs.ItemTypes;
+using Shentun.Pacs.Enums;
namespace Shentun.Pacs.PacsDataMigrates
{
@@ -17,10 +33,834 @@ namespace Shentun.Pacs.PacsDataMigrates
public class PacsDataMigrateAppService : ApplicationService
{
- public PacsDataMigrateAppService()
+ private readonly ILogger _logger;
+ private readonly IRepository _itemTypeRepository;
+ private readonly IRepository- _itemRepository;
+ private readonly IRepository _asbitemRepository;
+ private readonly UnitOfWorkManager _unitOfWorkManager;
+ private readonly IRepository _fieldComparisonRepository;
+ private readonly IRepository _deviceTypeRepository;
+ private readonly ItemTypeManager _itemTypeManager;
+ private readonly IRepository _asbitemDetailRepository;
+ private readonly IRepository _columnReferenceRepository;
+ private readonly IRepository _columnReferenceCodeRepository;
+ private readonly IRepository _columnReferenceInterfaceRepository;
+
+ private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
+ {
+ ConnectionString = "server=192.168.0.3;uid=sa;pwd=;database=reddolphin;Encrypt=false;",
+ DbType = SqlSugar.DbType.SqlServer,
+ IsAutoCloseConnection = true
+ });
+ //默认指引类别ID
+ private readonly char defaultGuidTypeId = '0';
+ //默认体检报告类别ID
+ private readonly char defaultMedicalReportTypeId = '0';
+
+ ///
+ /// 汇总项目类别
+ ///
+ private readonly Guid collectItemTypeId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b3");
+
+ public PacsDataMigrateAppService(
+ ILogger logger,
+ IRepository itemTypeRepository,
+ IRepository
- itemRepository,
+ IRepository asbitemRepository,
+ UnitOfWorkManager unitOfWorkManager,
+ IRepository deviceTypeRepository,
+ ItemTypeManager itemTypeManager,
+ IRepository asbitemDetailRepository,
+ IRepository columnReferenceRepository,
+ IRepository columnReferenceCodeRepository,
+ IRepository columnReferenceInterfaceRepository,
+ IRepository fieldComparisonRepository)
+ {
+ _logger = logger;
+ _itemTypeRepository = itemTypeRepository;
+ _itemRepository = itemRepository;
+ _asbitemRepository = asbitemRepository;
+ _unitOfWorkManager = unitOfWorkManager;
+ _deviceTypeRepository = deviceTypeRepository;
+ _itemTypeManager = itemTypeManager;
+ _asbitemDetailRepository = asbitemDetailRepository;
+ _columnReferenceRepository = columnReferenceRepository;
+ _columnReferenceCodeRepository = columnReferenceCodeRepository;
+ _columnReferenceInterfaceRepository = columnReferenceInterfaceRepository;
+ _fieldComparisonRepository = fieldComparisonRepository;
+ }
+
+
+ #region 对照
+
+ ///
+ /// 组合项目对照
+ ///
+ ///
+ [HttpPost("api/app/PacsDataMigrate/AsbitemFieldComparison")]
+ public async Task AsbitemFieldComparison()
+ {
+ Guid columnReferenceId = GuidGenerator.Create();
+
+ var columnReferenceEnt = await _columnReferenceRepository.FirstOrDefaultAsync(f => f.DisplayName.Contains("组合项目对照"));
+ if (columnReferenceEnt == null)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+
+ columnReferenceEnt = new ColumnReference(columnReferenceId)
+ {
+ DisplayName = "组合项目对照",
+ DisplayOrder = 1,
+ ParmValue = ""
+ };
+
+ await _columnReferenceRepository.InsertAsync(columnReferenceEnt, true);
+
+ await uow.CompleteAsync();
+
+ }
+ }
+ else
+ {
+ columnReferenceId = columnReferenceEnt.Id;
+ }
+
+
+ var fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "asbitem");
+
+ if (fieldComparisonList.Count > 0)
+ {
+ foreach (var fieldComparison in fieldComparisonList)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+ string pacsId = fieldComparison.NewKeyValue;
+ string peisId = fieldComparison.OldKeyValue;
+
+ var columnReferenceCodeEnt = await _columnReferenceCodeRepository.FirstOrDefaultAsync(f => f.ColumnReferenceId == columnReferenceId
+ && f.CodeValue == pacsId);
+
+ Guid columnReferenceCodeId = GuidGenerator.Create();
+
+ if (columnReferenceCodeEnt == null)
+ {
+ columnReferenceCodeEnt = new ColumnReferenceCode(columnReferenceCodeId)
+ {
+ CodeValue = pacsId,
+ ColumnReferenceId = columnReferenceId,
+ FilterCodeValue = ""
+ };
+
+ await _columnReferenceCodeRepository.InsertAsync(columnReferenceCodeEnt, true);
+ }
+ else
+ {
+ columnReferenceCodeId = columnReferenceCodeEnt.Id;
+ }
+
+
+ #region 对照值
+
+ var columnReferenceInterfaceEnt = await _columnReferenceInterfaceRepository.FirstOrDefaultAsync(f => f.ColumnReferenceCodeId == columnReferenceCodeId);
+ if (columnReferenceInterfaceEnt == null)
+ {
+ columnReferenceInterfaceEnt = new ColumnReferenceInterface(GuidGenerator.Create())
+ {
+ ColumnReferenceCodeId = columnReferenceCodeId,
+ InterfaceCodeValue = peisId
+ };
+
+ await _columnReferenceInterfaceRepository.InsertAsync(columnReferenceInterfaceEnt, true);
+ }
+
+ #endregion
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ }
+
+
+ }
+
+ ///
+ /// 明细项目对照
+ ///
+ ///
+ [HttpPost("api/app/PacsDataMigrate/ItemFieldComparison")]
+ public async Task ItemFieldComparison()
+ {
+ Guid columnReferenceId = GuidGenerator.Create();
+
+ var columnReferenceEnt = await _columnReferenceRepository.FirstOrDefaultAsync(f => f.DisplayName.Contains("明细项目对照"));
+ if (columnReferenceEnt == null)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+
+ columnReferenceEnt = new ColumnReference(columnReferenceId)
+ {
+ DisplayName = "明细项目对照",
+ DisplayOrder = 1,
+ ParmValue = ""
+ };
+
+ await _columnReferenceRepository.InsertAsync(columnReferenceEnt, true);
+
+ await uow.CompleteAsync();
+
+ }
+ }
+ else
+ {
+ columnReferenceId = columnReferenceEnt.Id;
+ }
+
+
+ var fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "item");
+
+ if (fieldComparisonList.Count > 0)
+ {
+
+ foreach (var fieldComparison in fieldComparisonList)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+ string pacsId = fieldComparison.NewKeyValue;
+ string peisId = fieldComparison.OldKeyValue;
+
+ var columnReferenceCodeEnt = await _columnReferenceCodeRepository.FirstOrDefaultAsync(f => f.ColumnReferenceId == columnReferenceId
+ && f.CodeValue == pacsId);
+
+ Guid columnReferenceCodeId = GuidGenerator.Create();
+
+ if (columnReferenceCodeEnt == null)
+ {
+ columnReferenceCodeEnt = new ColumnReferenceCode(columnReferenceCodeId)
+ {
+ CodeValue = pacsId,
+ ColumnReferenceId = columnReferenceId,
+ FilterCodeValue = ""
+ };
+
+ await _columnReferenceCodeRepository.InsertAsync(columnReferenceCodeEnt, true);
+ }
+ else
+ {
+ columnReferenceCodeId = columnReferenceCodeEnt.Id;
+ }
+
+
+ #region 对照值
+
+ var columnReferenceInterfaceEnt = await _columnReferenceInterfaceRepository.FirstOrDefaultAsync(f => f.ColumnReferenceCodeId == columnReferenceCodeId);
+ if (columnReferenceInterfaceEnt == null)
+ {
+ columnReferenceInterfaceEnt = new ColumnReferenceInterface(GuidGenerator.Create())
+ {
+ ColumnReferenceCodeId = columnReferenceCodeId,
+ InterfaceCodeValue = peisId
+ };
+
+ await _columnReferenceInterfaceRepository.InsertAsync(columnReferenceInterfaceEnt, true);
+ }
+
+ #endregion
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ }
+
+
+ }
+
+
+ ///
+ /// 仪器类别对照
+ ///
+ ///
+ [HttpPost("api/app/PacsDataMigrate/DeviceTypeFieldComparison")]
+ public async Task DeviceTypeFieldComparison()
+ {
+ Guid columnReferenceId = GuidGenerator.Create();
+
+ var columnReferenceEnt = await _columnReferenceRepository.FirstOrDefaultAsync(f => f.DisplayName.Contains("仪器类别对照"));
+ if (columnReferenceEnt == null)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+
+ columnReferenceEnt = new ColumnReference(columnReferenceId)
+ {
+ DisplayName = "仪器类别对照",
+ DisplayOrder = 1,
+ ParmValue = ""
+ };
+
+ await _columnReferenceRepository.InsertAsync(columnReferenceEnt, true);
+
+ await uow.CompleteAsync();
+
+ }
+ }
+ else
+ {
+ columnReferenceId = columnReferenceEnt.Id;
+ }
+
+
+ var fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "device_type");
+
+ if (fieldComparisonList.Count > 0)
+ {
+
+ foreach (var fieldComparison in fieldComparisonList)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+ string pacsId = fieldComparison.NewKeyValue;
+ string peisId = fieldComparison.OldKeyValue;
+
+ var columnReferenceCodeEnt = await _columnReferenceCodeRepository.FirstOrDefaultAsync(f => f.ColumnReferenceId == columnReferenceId
+ && f.CodeValue == pacsId);
+
+ Guid columnReferenceCodeId = GuidGenerator.Create();
+
+ if (columnReferenceCodeEnt == null)
+ {
+ columnReferenceCodeEnt = new ColumnReferenceCode(columnReferenceCodeId)
+ {
+ CodeValue = pacsId,
+ ColumnReferenceId = columnReferenceId,
+ FilterCodeValue = ""
+ };
+
+ await _columnReferenceCodeRepository.InsertAsync(columnReferenceCodeEnt, true);
+ }
+ else
+ {
+ columnReferenceCodeId = columnReferenceCodeEnt.Id;
+ }
+
+
+ #region 对照值
+
+ var columnReferenceInterfaceEnt = await _columnReferenceInterfaceRepository.FirstOrDefaultAsync(f => f.ColumnReferenceCodeId == columnReferenceCodeId);
+ if (columnReferenceInterfaceEnt == null)
+ {
+ columnReferenceInterfaceEnt = new ColumnReferenceInterface(GuidGenerator.Create())
+ {
+ ColumnReferenceCodeId = columnReferenceCodeId,
+ InterfaceCodeValue = peisId
+ };
+
+ await _columnReferenceInterfaceRepository.InsertAsync(columnReferenceInterfaceEnt, true);
+ }
+
+ #endregion
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ }
+ }
+
+ #endregion
+
+
+ #region 基础数据
+
+ ///
+ /// 处理基础数据
+ ///
+ ///
+ [HttpPost("api/app/PacsDataMigrate/HandBaseData")]
+ public async Task HandBaseData()
+ {
+ await TransferDeviceTypeData();
+ await TransferItemTypeData();
+ }
+
+
+ ///
+ /// 处理基础项目相关数据
+ ///
+ ///
+ [HttpPost("api/app/PacsDataMigrate/HandBaseItemData")]
+ public async Task HandBaseItemData()
+ {
+ await TransferItemData();
+ await TransferAsbitemData();
+ await TransferAsbitemDetailData();
+ }
+
+
+
+
+
+ #endregion
+
+
+ #region 基础数据
+
+ ///
+ /// 迁移仪器类别数据
+ ///
+ ///
+ [RemoteService(false)]
+ public async Task TransferDeviceTypeData()
+ {
+ var count = await _deviceTypeRepository.GetCountAsync();
+ if (count == 0)
+ {
+ var oldDeviceTypeList = await Db.Ado.GetDataTableAsync("select device_type_id,device_type_name from device_type order by display_order asc");
+ if (oldDeviceTypeList.Rows.Count > 0)
+ {
+ foreach (DataRow row in oldDeviceTypeList.Rows)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+ Guid deviceTypeId = GuidGenerator.Create();
+
+ var data = new DeviceType(deviceTypeId)
+ {
+ CheckTypeFlag = '0',
+ DisplayName = row["device_type_name"].ToString(),
+ DisplayOrder = oldDeviceTypeList.Rows.IndexOf(row) + 1,
+ SimpleCode = LanguageConverter.GetPYSimpleCode(row["device_type_name"].ToString())
+ };
+
+ await _deviceTypeRepository.InsertAsync(data);
+
+ var fieldComparison = new FieldComparison
+ {
+ TableName = "device_type",
+ FieldName = "id",
+ NewKeyValue = deviceTypeId.ToString(),
+ OldKeyValue = row["device_type_id"].ToString()
+ };
+
+ await _fieldComparisonRepository.InsertAsync(fieldComparison);
+
+ await uow.CompleteAsync();
+ }
+ }
+ }
+
+ _logger.LogInformation($"仪器类别数据处理完毕,处理数量{oldDeviceTypeList.Rows.Count}");
+ }
+ else
+ {
+ _logger.LogInformation("仪器类别数据已存在,未处理");
+ }
+ }
+
+
+ ///
+ /// 迁移项目类别-科室数据
+ ///
+ ///
+ [RemoteService(false)]
+ public async Task TransferItemTypeData()
+ {
+ var count = await _itemTypeRepository.GetCountAsync();
+ if (count == 0)
+ {
+
+ var oldItemTypeList = await Db.Ado.GetDataTableAsync("select department_id,department_type,department_name,merge_asbitem_flag,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,
+ IsMergeAsbitem = Convert.ToChar(row["merge_asbitem_flag"]),
+ IsWrap = 'N',
+ 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($"项目类别数据已存在,未处理");
+ }
+ }
+
+
+
+ #endregion
+
+
+
+ #region 基础项目相关数据
+
+ ///
+ /// 迁移项目数据
+ ///
+ ///
+ [RemoteService(false)]
+ public async Task TransferItemData()
+ {
+ var count = await _itemRepository.GetCountAsync();
+ if (count == 0)
+ {
+
+ var oldItemList = await Db.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 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 = null,
+ DeviceTypeId = deviceTypeId
+ };
+
+ await _itemRepository.InsertAsync(data);
+
+
+ var fieldComparison = new FieldComparison
+ {
+ TableName = "item",
+ FieldName = "id",
+ NewKeyValue = itemId.ToString(),
+ OldKeyValue = row["item_id"].ToString()
+ };
+
+ await _fieldComparisonRepository.InsertAsync(fieldComparison);
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+
+
+ }
+ _logger.LogInformation($"项目数据处理完毕,处理数量{oldItemList.Rows.Count}");
+ }
+ else
+ {
+ _logger.LogInformation("项目数据已存在,未处理");
+ }
+ }
+
+ ///
+ /// 迁移组合项目数据
+ ///
+ ///
+ [RemoteService(false)]
+ public async Task TransferAsbitemData()
{
+ var count = await _asbitemRepository.GetCountAsync();
+
+ if (count == 0)
+ {
+ var oldAsbitemList = await Db.Ado.GetDataTableAsync("select 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 asbitemId = GuidGenerator.Create();
+
+
+ var data = new Asbitem(asbitemId)
+ {
+ DisplayName = row["asbitem_name"].ToString(),
+ DisplayOrder = oldAsbitemList.Rows.IndexOf(row) + 1,
+ SimpleCode = LanguageConverter.GetPYSimpleCode(row["asbitem_name"].ToString()),
+ DefaultResult = row["default_result"].ToString(),
+ DiagnosisFunction = "",
+ IsActive = Convert.ToChar(row["valid_flag"].ToString()),
+ IsContinueProcess = 'N',
+ IsDiagnosisFunction = 'N',
+ ItemTypeId = itemTypeId,
+ Price = Convert.ToDecimal(row["price"]),
+ DeviceTypeId = deviceTypeId,
+ ClinicalMeaning = row["clinical_meaning"].ToString(),
+ ForSexId = ConvertForSex(row["for_sex_id"].ToString()),
+ CollectItemTypeId = collectItemTypeId,
+ //InvoiceItemTypeId = InvoiceItemTypeId,
+ IsBeforeEat = Convert.ToChar(row["before_eat_flag"].ToString()),
+ IsCheck = Convert.ToChar(row["check_flag"].ToString()),
+ IsItemResultMerger = Convert.ToChar(row["item_result_merger_flag"].ToString()),
+ IsPictureRotate = Convert.ToChar(row["picture_rotate_flag"].ToString()),
+ QueueTime = string.IsNullOrEmpty(row["queue_time"].ToString()) ? 0 : Convert.ToDecimal(row["queue_time"].ToString()),
+ ShortName = row["short_name"].ToString()
+ };
+
+ await _asbitemRepository.InsertAsync(data);
+
+
+
+
+ var fieldComparison = new FieldComparison
+ {
+ TableName = "asbitem",
+ FieldName = "id",
+ NewKeyValue = asbitemId.ToString(),
+ OldKeyValue = row["asbitem_id"].ToString()
+ };
+
+ await _fieldComparisonRepository.InsertAsync(fieldComparison);
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+
+
+ }
+ _logger.LogInformation($"组合项目数据处理完毕,处理数量{oldAsbitemList.Rows.Count}");
+ }
+ else
+ {
+ _logger.LogInformation("组合项目数据已存在,未处理");
+ }
+
+
}
+ ///
+ /// 迁移组合项目明细数据 无字典
+ ///
+ ///
+ [RemoteService(false)]
+ public async Task TransferAsbitemDetailData()
+ {
+ var count = await _asbitemDetailRepository.GetCountAsync();
+
+ if (count == 0)
+ {
+ var oldAsbitemDetailList = await Db.Ado.GetDataTableAsync("select * from asbitem_detail ");
+ if (oldAsbitemDetailList.Rows.Count > 0)
+ {
+ foreach (DataRow row in oldAsbitemDetailList.Rows)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
+ {
+ Guid asbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue);
+ Guid itemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue);
+ var data = new AsbitemDetail
+ {
+ AsbitemId = asbitemId,
+ ItemId = itemId
+ };
+
+ await _asbitemDetailRepository.InsertAsync(data);
+
+ await uow.CompleteAsync();
+ }
+ }
+ }
+ _logger.LogInformation($"组合项目明细数据处理完毕,处理数量{oldAsbitemDetailList.Rows.Count}");
+ }
+ else
+ {
+ _logger.LogInformation("组合项目明细数据已存在,未处理");
+ }
+
+
+ }
+
+
+ #endregion
+
+
+ ///
+ /// 转换老系统适用性别
+ ///
+ ///
+ ///
+ private char ConvertForSex(string forSexId)
+ {
+ if (forSexId == "0")
+ {
+ return 'M';
+ }
+ else if (forSexId == "1")
+ {
+ return 'F';
+ }
+ else
+ {
+ return 'A';
+ }
+ }
}
}
diff --git a/src/Shentun.Pacs.Domain/PatientRegisters/PatientRegister.cs b/src/Shentun.Pacs.Domain/PatientRegisters/PatientRegister.cs
index 3f7616e..5e9b29d 100644
--- a/src/Shentun.Pacs.Domain/PatientRegisters/PatientRegister.cs
+++ b/src/Shentun.Pacs.Domain/PatientRegisters/PatientRegister.cs
@@ -12,10 +12,7 @@ namespace Shentun.Pacs.Models
/// 体检登记主档
///
[Table("patient_register")]
- //[Index(nameof(CustomerOrgRegisterId), Name = "fki_fk_patient_register_org_register")]
- [Index(nameof(MedicalCenterId), Name = "fki_fk_patient_register_ororganization_unit")]
- [Index(nameof(PatientRegisterNo), Name = "ix_patient_register", IsUnique = true)]
- [Index(nameof(PatientId), nameof(MedicalTimes), Name = "ix_patient_register_1", IsUnique = true)]
+ [Index(nameof(PatientRegisterNo), Name = "ix_patient_register")]
[Index(nameof(PatientName), Name = "ix_patient_register_2")]
public class PatientRegister : AuditedEntity, IHasConcurrencyStamp
{
@@ -324,6 +321,25 @@ namespace Shentun.Pacs.Models
[Column("concurrency_stamp")]
public string ConcurrencyStamp { get; set; }
+ ///
+ /// 仪器ID pacs系统的仪器id
+ ///
+ [Column("device_id")]
+ public Guid DeviceId { get; set; }
+
+ ///
+ /// 发送状态 0-未发送 1-发送
+ ///
+ [Column("send_flag")]
+ public char SendFlag { get; set; }
+
+
+ ///
+ /// 发送时间
+ ///
+ [Column("send_date")]
+ public DateTime? SendDate { get; set; }
+
///
/// 修改登记人
///
diff --git a/src/Shentun.Pacs.Domain/Patients/PatientManager.cs b/src/Shentun.Pacs.Domain/Patients/PatientManager.cs
index be43a53..f303ee7 100644
--- a/src/Shentun.Pacs.Domain/Patients/PatientManager.cs
+++ b/src/Shentun.Pacs.Domain/Patients/PatientManager.cs
@@ -291,7 +291,7 @@ namespace Shentun.Pacs.Patients
///
/// 体检中心ID
///
- private async Task CreatePatientNo(Guid medicalCenterId)
+ public async Task CreatePatientNo(Guid medicalCenterId)
{
var patient_id_rule_prefix = ""; //前缀
var patient_id_rule_tail_len = ""; //尾号长度
diff --git a/src/Shentun.Pacs.Domain/RegisterCheckAsbitems/RegisterCheckAsbitem.cs b/src/Shentun.Pacs.Domain/RegisterCheckAsbitems/RegisterCheckAsbitem.cs
index f6460f5..dda4675 100644
--- a/src/Shentun.Pacs.Domain/RegisterCheckAsbitems/RegisterCheckAsbitem.cs
+++ b/src/Shentun.Pacs.Domain/RegisterCheckAsbitems/RegisterCheckAsbitem.cs
@@ -119,6 +119,13 @@ namespace Shentun.Pacs.Models
[Column("concurrency_stamp")]
public string ConcurrencyStamp { get; set; }
+ ///
+ /// 体检系统组合项目id
+ ///
+ [StringLength(50)]
+ [Column("old_asbitem_id")]
+ public string OldAsbitemId { get; set; }
+
/////
///// 主键
/////
diff --git a/src/Shentun.Pacs.Domain/RegisterCheckItems/RegisterCheckItem.cs b/src/Shentun.Pacs.Domain/RegisterCheckItems/RegisterCheckItem.cs
index ba7845c..cb08188 100644
--- a/src/Shentun.Pacs.Domain/RegisterCheckItems/RegisterCheckItem.cs
+++ b/src/Shentun.Pacs.Domain/RegisterCheckItems/RegisterCheckItem.cs
@@ -171,6 +171,13 @@ namespace Shentun.Pacs.Models
[Column("concurrency_stamp")]
public string ConcurrencyStamp { get; set; }
+ ///
+ /// 体检系统明细项目id
+ ///
+ [StringLength(50)]
+ [Column("old_item_id")]
+ public string OldItemId { get; set; }
+
//[Column("last_modifier_id")]
//public Guid LastModifierId { get; set; }
//[Column("last_modification_time", TypeName = "timestamp without time zone")]
diff --git a/src/Shentun.Pacs.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs b/src/Shentun.Pacs.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs
index e27a90f..5d80ffa 100644
--- a/src/Shentun.Pacs.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs
+++ b/src/Shentun.Pacs.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs
@@ -100,6 +100,9 @@ namespace Shentun.Pacs.DbMapping
entity.Property(t => t.CustomerOrgRegisterId).HasComment("客户单位登记ID").HasDefaultValue(Guid.Empty);
entity.Property(t => t.AppointPatientRegisterId).HasMaxLength(40).HasComment("预约人员登记ID");
+ entity.Property(t => t.SendFlag).HasComment("发送状态 0-未发送 1-发送").IsRequired().HasDefaultValueSql("'0'");
+ entity.Property(t => t.SendDate).HasComment("发送时间");
+
//entity.HasOne(d => d.CustomerOrgRegister)
// .WithMany(p => p.PatientRegisters)
// .HasForeignKey(d => d.CustomerOrgRegisterId)
diff --git a/src/Shentun.Pacs.EntityFrameworkCore/Migrations/20241213083723_update_patient_register_check.Designer.cs b/src/Shentun.Pacs.EntityFrameworkCore/Migrations/20241213083723_update_patient_register_check.Designer.cs
new file mode 100644
index 0000000..a59fc7a
--- /dev/null
+++ b/src/Shentun.Pacs.EntityFrameworkCore/Migrations/20241213083723_update_patient_register_check.Designer.cs
@@ -0,0 +1,16267 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using Shentun.Pacs.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+#nullable disable
+
+namespace Shentun.Pacs.Migrations
+{
+ [DbContext(typeof(PeisDbContext))]
+ [Migration("20241213083723_update_patient_register_check")]
+ partial class update_patient_register_check
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql)
+ .HasAnnotation("ProductVersion", "6.0.5")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Shentun.Pacs.Books.HelloA", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("ADesc")
+ .HasColumnType("text")
+ .HasColumnName("a_desc");
+
+ b.Property("AName")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("text")
+ .HasDefaultValue("默认值")
+ .HasColumnName("a_name");
+
+ b.Property("AddTime")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("add_time")
+ .HasDefaultValueSql("now()");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("HelloTypeId")
+ .HasColumnType("text")
+ .HasColumnName("hello_type_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("S2")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("character(1)")
+ .HasDefaultValueSql("'A'::bpchar");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "AName" }, "ix_helloa")
+ .IsUnique();
+
+ b.ToTable("hello_a");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.HelloType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("TypeName")
+ .HasMaxLength(10)
+ .HasColumnType("character varying(10)")
+ .HasColumnName("type_name")
+ .HasComment("类型名称");
+
+ b.Property("s1")
+ .HasColumnType("uuid")
+ .HasColumnName("s1");
+
+ b.Property("s2")
+ .HasColumnType("uuid")
+ .HasColumnName("s2");
+
+ b.Property("s3")
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("s3");
+
+ b.HasKey("Id");
+
+ b.ToTable("hello_type");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.Ma", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text")
+ .HasColumnName("id");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("Name")
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.HasKey("Id");
+
+ b.ToTable("ma");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.Mb", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text")
+ .HasColumnName("id");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("MaId")
+ .HasColumnType("text")
+ .HasColumnName("ma_id");
+
+ b.Property("Name")
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MaId");
+
+ b.ToTable("mb");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.Mc", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text")
+ .HasColumnName("id");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("MbId")
+ .HasColumnType("text")
+ .HasColumnName("mb_id");
+
+ b.Property("Name")
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MbId");
+
+ b.ToTable("mc");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.Student", b =>
+ {
+ b.Property("Sid")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("sid");
+
+ b.Property("Cid")
+ .HasColumnType("text");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uuid")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("DeletionTime");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("boolean")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uuid")
+ .HasColumnName("LastModifierId");
+
+ b.Property("Name")
+ .HasColumnType("text");
+
+ b.Property("Uid")
+ .HasColumnType("uuid");
+
+ b.HasKey("Sid");
+
+ b.ToTable("student");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.TestA", b =>
+ {
+ b.Property("AId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .IsFixedLength()
+ .HasComment("编号");
+
+ b.Property("AName")
+ .HasColumnType("text");
+
+ b.HasKey("AId");
+
+ b.ToTable("testa");
+
+ b.HasComment("组合项目");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.TestB", b =>
+ {
+ b.Property("BId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AId")
+ .HasColumnType("uuid")
+ .IsFixedLength()
+ .HasComment("编号");
+
+ b.Property("AName")
+ .HasColumnType("text");
+
+ b.Property("TestAsAId")
+ .HasColumnType("uuid");
+
+ b.HasKey("BId");
+
+ b.HasIndex("TestAsAId");
+
+ b.ToTable("testb");
+
+ b.HasComment("组合项目");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Books.TestCT", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("TName")
+ .HasColumnType("text")
+ .HasColumnName("t_name");
+
+ b.HasKey("Id");
+
+ b.ToTable("test_ct");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.AbpUserDepartment", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("uuid")
+ .HasColumnName("user_id");
+
+ b.Property("OrganizationUnitId")
+ .HasColumnType("uuid")
+ .HasColumnName("organization_unit_id");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.HasKey("UserId", "OrganizationUnitId")
+ .HasName("pk_user_organizationunitid");
+
+ b.ToTable("abp_user_department");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.Asbitem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .IsFixedLength()
+ .HasComment("编号");
+
+ b.Property("BarcodeMode")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("barcode_mode")
+ .HasDefaultValueSql("'0'")
+ .HasComment("条码模式");
+
+ b.Property("ClinicalMeaning")
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("clinical_meaning")
+ .HasComment("临床意义");
+
+ b.Property("CollectItemTypeId")
+ .HasColumnType("uuid")
+ .HasColumnName("collect_item_type_id")
+ .IsFixedLength()
+ .HasComment("汇总项目类别");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("CriticalValueFunction")
+ .HasColumnType("text")
+ .HasColumnName("critical_value_function")
+ .HasComment("危急值函数");
+
+ b.Property("DefaultResult")
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("default_result")
+ .HasComment("默认结果");
+
+ b.Property("DeviceTypeId")
+ .HasColumnType("uuid")
+ .HasColumnName("device_type_id")
+ .HasComment("仪器类别");
+
+ b.Property("DiagnosisFunction")
+ .HasMaxLength(4000)
+ .HasColumnType("character varying(4000)")
+ .HasColumnName("diagnosis_function")
+ .HasComment("诊断函数");
+
+ b.Property("DiseaseScreeningTypeId")
+ .HasColumnType("uuid")
+ .HasColumnName("disease_screening_type_id");
+
+ b.Property("DisplayName")
+ .IsRequired()
+ .HasMaxLength(30)
+ .HasColumnType("character varying(30)")
+ .HasColumnName("display_name")
+ .HasComment("名称");
+
+ b.Property("DisplayOrder")
+ .HasColumnType("integer")
+ .HasColumnName("display_order");
+
+ b.Property("FollowUpFunction")
+ .HasColumnType("text")
+ .HasColumnName("follow_up_function")
+ .HasComment("随访函数");
+
+ b.Property("ForPregnantFlag")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("for_pregnant_flag")
+ .HasDefaultValueSql("'A'")
+ .HasComment("备怀孕期间禁止检查");
+
+ b.Property("ForSexId")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("for_sex_id")
+ .HasDefaultValueSql("'A'")
+ .HasComment("适用性别,M-男,F-女,A-全部");
+
+ b.Property("IsActive")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_active")
+ .HasDefaultValueSql("'Y'")
+ .HasComment("是启用");
+
+ b.Property("IsBeforeEat")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_before_eat")
+ .HasDefaultValueSql("'N'")
+ .HasComment("餐前项目");
+
+ b.Property("IsCheck")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_check")
+ .HasDefaultValueSql("'Y'")
+ .HasComment("是检查项目");
+
+ b.Property("IsContinueProcess")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_continue_process")
+ .HasDefaultValueSql("'N'")
+ .HasComment("诊断函数处理完毕后继续处理");
+
+ b.Property("IsCriticalValueFunction")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_critical_value_function")
+ .HasDefaultValueSql("'N'")
+ .HasComment("是否启用危急值函数");
+
+ b.Property("IsDiagnosisFunction")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_diagnosis_function")
+ .HasDefaultValueSql("'N'")
+ .HasComment("启用诊断函数");
+
+ b.Property("IsFollowUpFunction")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_follow_up_function")
+ .HasDefaultValueSql("'N'")
+ .HasComment("是否启用随访函数");
+
+ b.Property("IsItemResultMerger")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_item_result_merger")
+ .HasDefaultValueSql("'N'")
+ .HasComment("项目结果合并");
+
+ b.Property("IsPictureRotate")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_picture_rotate")
+ .HasDefaultValueSql("'N'")
+ .HasComment("体检报告图片旋转90°");
+
+ b.Property("IsPrivacy")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("character(1)")
+ .HasColumnName("is_privacy")
+ .HasDefaultValueSql("'N'")
+ .HasComment("是否隐私项目");
+
+ b.Property("IsWebAppoint")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_web_appoint")
+ .HasDefaultValueSql("'Y'")
+ .HasComment("是否支持网上预约");
+
+ b.Property("ItemTypeId")
+ .HasColumnType("uuid")
+ .HasColumnName("item_type_id")
+ .IsFixedLength()
+ .HasComment("项目类别");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("MaritalStatusId")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("marital_status_id")
+ .HasDefaultValueSql("'A'")
+ .HasComment("适用婚姻状况,0-未婚,1-已婚,A-全部");
+
+ b.Property("Price")
+ .ValueGeneratedOnAdd()
+ .HasPrecision(8, 2)
+ .HasColumnType("numeric(8,2)")
+ .HasColumnName("price")
+ .HasDefaultValueSql("0")
+ .HasComment("价格");
+
+ b.Property("QueueTime")
+ .ValueGeneratedOnAdd()
+ .HasPrecision(3, 1)
+ .HasColumnType("numeric(3,1)")
+ .HasColumnName("queue_time")
+ .HasDefaultValueSql("0")
+ .HasComment("候诊时间");
+
+ b.Property("ShortName")
+ .HasMaxLength(20)
+ .HasColumnType("character varying(20)")
+ .HasColumnName("short_name")
+ .HasComment("简称");
+
+ b.Property("SimpleCode")
+ .HasMaxLength(30)
+ .HasColumnType("character varying(30)")
+ .HasColumnName("simple_code");
+
+ b.Property("Warn")
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("warn");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CollectItemTypeId");
+
+ b.HasIndex("ItemTypeId");
+
+ b.HasIndex(new[] { "DisplayName" }, "ix_asbitem")
+ .IsUnique();
+
+ b.ToTable("asbitem");
+
+ b.HasComment("组合项目");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.AsbitemDetail", b =>
+ {
+ b.Property("AsbitemId")
+ .HasColumnType("uuid")
+ .HasColumnName("asbitem_id")
+ .IsFixedLength();
+
+ b.Property("ItemId")
+ .HasColumnType("uuid")
+ .HasColumnName("item_id")
+ .IsFixedLength()
+ .HasComment("项目编码");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.HasKey("AsbitemId", "ItemId")
+ .HasName("pk_department_asbitem_detail");
+
+ b.HasIndex("ItemId");
+
+ b.ToTable("asbitem_detail");
+
+ b.HasComment("组合项目包含项目");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.AsbitemGuide", b =>
+ {
+ b.Property("MedicalCenterId")
+ .HasColumnType("uuid")
+ .HasColumnName("medical_center_id")
+ .IsFixedLength()
+ .HasComment("单位科室ID");
+
+ b.Property("AsbitemId")
+ .HasColumnType("uuid")
+ .HasColumnName("asbitem_id")
+ .IsFixedLength()
+ .HasComment("组合项目ID");
+
+ b.Property("ForSexId")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("for_sex_id")
+ .HasDefaultValueSql("'A'")
+ .HasComment("适用性别ID");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("Guide")
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("guide")
+ .HasComment("指引单内容");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.HasKey("MedicalCenterId", "AsbitemId", "ForSexId")
+ .HasName("pk_department_asbitem_guide");
+
+ b.ToTable("asbitem_guide");
+
+ b.HasComment("体检中心组和项目指引内容");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.AsbitemPriceItem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .IsFixedLength();
+
+ b.Property("Amount")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasColumnType("smallint")
+ .HasColumnName("amount")
+ .HasDefaultValueSql("0")
+ .HasComment("数量");
+
+ b.Property("AsbitemId")
+ .HasColumnType("uuid")
+ .HasColumnName("asbitem_id")
+ .IsFixedLength()
+ .HasComment("组合项目编号");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("PriceItemId")
+ .HasColumnType("uuid")
+ .HasColumnName("price_item_id")
+ .IsFixedLength()
+ .HasComment("价表项目编码");
+
+ b.HasKey("Id");
+
+ b.ToTable("asbitem_price_item");
+
+ b.HasComment("组和项目包含价表项目");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.BigtextResultConclusion", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .IsFixedLength();
+
+ b.Property("BigtextResultTemplateId")
+ .HasColumnType("uuid")
+ .HasColumnName("bigtext_result_template_id")
+ .IsFixedLength();
+
+ b.Property("Conclusion")
+ .HasMaxLength(200)
+ .HasColumnType("character varying(200)")
+ .HasColumnName("conclusion")
+ .HasComment("结论");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("DisplayOrder")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("display_order")
+ .HasDefaultValueSql("999999");
+
+ b.Property("IsAbnormal")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_abnormal")
+ .HasDefaultValueSql("'Y'")
+ .HasComment("是否为异常结论");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BigtextResultTemplateId");
+
+ b.ToTable("bigtext_result_conclusion");
+
+ b.HasComment("大文本结果结论");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.BigtextResultDescription", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .IsFixedLength();
+
+ b.Property("BigtextResultTemplateId")
+ .HasColumnType("uuid")
+ .HasColumnName("bigtext_result_template_id")
+ .IsFixedLength();
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("Description")
+ .HasMaxLength(2000)
+ .HasColumnType("character varying(2000)")
+ .HasColumnName("description")
+ .HasComment("描述");
+
+ b.Property("DisplayOrder")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("display_order")
+ .HasDefaultValueSql("999999");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BigtextResultTemplateId");
+
+ b.ToTable("bigtext_result_description");
+
+ b.HasComment("大文本结果描述");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.BigtextResultTemplate", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .IsFixedLength();
+
+ b.Property("BigtextResultTypeId")
+ .HasColumnType("uuid")
+ .HasColumnName("bigtext_result_type_id")
+ .IsFixedLength()
+ .HasComment("结果类别编号");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("DisplayName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("display_name")
+ .HasComment("名称");
+
+ b.Property("DisplayOrder")
+ .HasColumnType("integer")
+ .HasColumnName("display_order");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("SimpleCode")
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("simple_code");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BigtextResultTypeId");
+
+ b.ToTable("bigtext_result_template");
+
+ b.HasComment("大文本结果模板");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.BigtextResultType", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .IsFixedLength();
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("DisplayName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("display_name")
+ .HasComment("名称");
+
+ b.Property("DisplayOrder")
+ .HasColumnType("integer")
+ .HasColumnName("display_order");
+
+ b.Property("ItemTypeId")
+ .HasColumnType("uuid")
+ .HasColumnName("item_type_id")
+ .IsFixedLength()
+ .HasComment("项目类别");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("ParentId")
+ .HasColumnType("uuid")
+ .HasColumnName("parent_id")
+ .IsFixedLength()
+ .HasComment("父编号");
+
+ b.Property("PathCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("path_code")
+ .HasComment("路径编码");
+
+ b.Property("SimpleCode")
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("simple_code");
+
+ b.HasKey("Id");
+
+ b.ToTable("bigtext_result_type");
+
+ b.HasComment("大文本结果类别");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.BirthPlace", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .IsFixedLength();
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CountryCode")
+ .IsRequired()
+ .HasMaxLength(6)
+ .HasColumnType("character varying(6)")
+ .HasColumnName("country_code")
+ .HasComment("国家标准码");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("DisplayName")
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("display_name");
+
+ b.Property("DisplayOrder")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("display_order")
+ .HasDefaultValueSql("999999");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("SimpleCode")
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("simple_code");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "DisplayName" }, "ix_birth_place")
+ .IsUnique();
+
+ b.ToTable("birth_place");
+
+ b.HasComment("出生地");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.CardBill", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .HasComment("编号");
+
+ b.Property("BillFlag")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("bill_flag")
+ .HasDefaultValueSql("'0'::bpchar")
+ .HasComment("记账标志");
+
+ b.Property("BillMoney")
+ .HasPrecision(10, 2)
+ .HasColumnType("numeric(10,2)")
+ .HasColumnName("bill_money")
+ .HasComment("记账金额");
+
+ b.Property("CardRegisterId")
+ .HasColumnType("uuid")
+ .HasColumnName("card_register_id")
+ .HasComment("卡登记编号");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("LastModificationTime")
+ .IsRequired()
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_modification_time");
+
+ b.Property("LastModifierId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("last_modifier_id");
+
+ b.Property("PayModeId")
+ .IsRequired()
+ .HasMaxLength(4)
+ .HasColumnType("character varying(4)")
+ .HasColumnName("pay_mode_id")
+ .HasComment("支付方式");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CardRegisterId");
+
+ b.HasIndex("PayModeId");
+
+ b.ToTable("card_bill");
+
+ b.HasComment("卡记账记录");
+ });
+
+ modelBuilder.Entity("Shentun.Pacs.Models.CardRegister", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id")
+ .HasComment("编号");
+
+ b.Property("CardBalance")
+ .HasPrecision(10, 2)
+ .HasColumnType("numeric(10,2)")
+ .HasColumnName("card_balance");
+
+ b.Property("CardNo")
+ .IsRequired()
+ .HasMaxLength(30)
+ .HasColumnType("character varying(30)")
+ .HasColumnName("card_no")
+ .HasComment("卡号");
+
+ b.Property("CardPassword")
+ .HasMaxLength(10)
+ .HasColumnType("character varying(10)")
+ .HasColumnName("card_password");
+
+ b.Property("CardTypeId")
+ .HasColumnType("uuid")
+ .HasColumnName("card_type_id")
+ .IsFixedLength()
+ .HasComment("卡类型");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("character varying(40)")
+ .HasColumnName("concurrency_stamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("creation_time");
+
+ b.Property("CreatorId")
+ .IsRequired()
+ .HasColumnType("uuid")
+ .HasColumnName("creator_id");
+
+ b.Property("CustomerName")
+ .HasMaxLength(20)
+ .HasColumnType("character varying(20)")
+ .HasColumnName("customer_name")
+ .HasComment("领用者");
+
+ b.Property("Discount")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("discount")
+ .HasDefaultValueSql("100")
+ .HasComment("折扣");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("expiry_date")
+ .HasComment("有效期");
+
+ b.Property("IdNo")
+ .IsRequired()
+ .HasMaxLength(18)
+ .HasColumnType("character varying(18)")
+ .HasColumnName("id_no")
+ .HasComment("身份证号");
+
+ b.Property("IsActive")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(1)
+ .HasColumnType("character(1)")
+ .HasColumnName("is_active")
+ .HasDefaultValueSql("0")
+ .HasComment("使用标志");
+
+ b.Property