Browse Source

组合项目

bjmzak
wxd 2 years ago
parent
commit
1fa1fd4b54
  1. 6
      src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs
  2. 8
      src/Shentun.Peis.Application.Contracts/Asbitems/CreateAsbitemDto.cs
  3. 5
      src/Shentun.Peis.Application.Contracts/Asbitems/UpdateAsbitemDto.cs
  4. 1
      src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs
  5. 625
      src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
  6. 2
      src/Shentun.Peis.DbMigrator/appsettings.json
  7. 31
      src/Shentun.Peis.Domain.Shared/Enums/BarcodeModeFlag.cs
  8. 7
      src/Shentun.Peis.Domain/Asbitems/Asbitem.cs
  9. 11
      src/Shentun.Peis.Domain/Asbitems/AsbitemManager.cs
  10. 2
      src/Shentun.Peis.EntityFrameworkCore/DbMapping/Asbitems/AsbitemDbMapping.cs
  11. 14273
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512063617_init20240502001.Designer.cs
  12. 28
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512063617_init20240502001.cs
  13. 8
      src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

6
src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemDto.cs

@ -118,5 +118,11 @@ namespace Shentun.Peis.Asbitems
public int DisplayOrder { get; set; }
/// <summary>
/// 条码模式 0-使用项目类别设置,1-打印人员登记号,2-不打印,默认值是0
/// </summary>
public char BarcodeMode { get; set; }
}
}

8
src/Shentun.Peis.Application.Contracts/Asbitems/CreateAsbitemDto.cs

@ -110,6 +110,12 @@ namespace Shentun.Peis.Asbitems
/// </summary>
public char IsActive { get; set; } = 'N';
/// <summary>
/// 条码模式 0-使用项目类别设置,1-打印人员登记号,2-不打印,默认值是0
/// </summary>
public char BarcodeMode { get; set; } = '0';
}
}

5
src/Shentun.Peis.Application.Contracts/Asbitems/UpdateAsbitemDto.cs

@ -110,6 +110,11 @@ namespace Shentun.Peis.Asbitems
/// </summary>
public char IsActive { get; set; }
/// <summary>
/// 条码模式 0-使用项目类别设置,1-打印人员登记号,2-不打印,默认值是0
/// </summary>
public char BarcodeMode { get; set; }
}
}

1
src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs

@ -137,6 +137,7 @@ namespace Shentun.Peis.Asbitems
QueueTime = s.a.QueueTime,
ShortName = s.a.ShortName,
SimpleCode = s.a.SimpleCode,
BarcodeMode = s.a.BarcodeMode,
CreatorName = s.ab != null ? s.ab.Surname : "",
LastModifierName = s.ac != null ? s.ac.Surname : ""
}).OrderBy(o => o.DisplayOrder).ToList();

625
src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs

@ -50,7 +50,7 @@ namespace Shentun.Peis.DataMigrations
private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis;Encrypt=false;",
ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis0512;Encrypt=false;",
DbType = SqlSugar.DbType.SqlServer,
IsAutoCloseConnection = true
});
@ -2281,14 +2281,635 @@ namespace Shentun.Peis.DataMigrations
#region 新版人员登记迁移
/// <summary>
/// 迁移人员、检查单、登记项目、项目结果、医生小结、修改人员创建者、创建时间
/// </summary>
/// <returns></returns>
public async Task TransferPatientRegisterWithAsbitemData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_new' ");
List<string> patientRegisterNos = new List<string> { "P23083101999",
"P23083100427", "P23083101608","P23083100503", "P23083102172",
"P23083102000", "P23083100563", "P23083100542" };
var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc");
if (oldPatientRegisterList.Rows.Count > 0)
{
var userList = await _identityUserRepository.GetListAsync();
List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
foreach (DataRow row in oldPatientRegisterList.Rows)
{
if (!patientRegisterNos.Contains(row["barcode_no"].ToString()))
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
//档案ID
Guid patientId = Guid.Empty;
#region 处理档案,未找到档案就生成
var patientEnt = await _patientRepository.FirstOrDefaultAsync(m => m.PatientNo == row["patient_id"].ToString());
if (patientEnt == null)
{
string nationId = null;
if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
{
nationId = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
}
Guid autoPatientId = GuidGenerator.Create(); //档案ID
var dataPatient = new Patient(autoPatientId)
{
Address = row["address"].ToString(),
BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
BirthPlaceId = null,
DisplayName = row["name"].ToString(),
Email = row["email"].ToString(),
IdNo = row["id_card_no"].ToString(),
MaritalStatusId = 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.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 = (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.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);
#region 人员登记扩展
var patientRegisterExterData = new PatientRegisterExter
{
IsQztlImport = Convert.ToChar(row["is_qztl_import"].ToString()),
PatientRegisterId = patientRegisterId,
Planuserid = row["planuserid"].ToString(),
QztlIsCw = Convert.ToChar(row["qztl_is_cw"].ToString()),
QztlIsCy = Convert.ToChar(row["qztl_is_cy"].ToString()),
QztlIsFj = Convert.ToChar(row["qztl_is_fj"].ToString()),
QztlIsGt = Convert.ToChar(row["qztl_is_gt"].ToString()),
QztlIsMain = Convert.ToChar(row["qztl_is_main"].ToString()),
QztlIsWh = Convert.ToChar(row["qztl_is_wh"].ToString()),
QztlType = string.IsNullOrEmpty(row["qztl_type"].ToString()) ? null : Convert.ToChar(row["qztl_type"].ToString()),
Remark2 = row["remark2"].ToString(),
Remark3 = row["remark3"].ToString(),
Remark4 = row["remark4"].ToString(),
UploadQztlFlag = Convert.ToChar(row["upload_qztl_flag"].ToString())
};
await _patientRegisterExterRepository.InsertAsync(patientRegisterExterData);
#endregion
var oldRegisterAsbitemList = await Db.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.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.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((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()),
CriticalValue = null,
CriticalValueCreateDate = null,
CriticalValueFlag = null,
CriticalValueProcessContent = 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 Db.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
}
}
var fieldComparison = new FieldComparison
{
FieldName = "id",
NewKeyValue = patientRegisterId.ToString(),
OldKeyValue = row["patient_register_id"].ToString(),
TableName = "patient_register"
};
await _fieldComparisonRepository.InsertAsync(fieldComparison);
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register_new' ");
await uow.CompleteAsync();
#region 修改创建者日期跟id
Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
if (registerDoctorEnt != null)
{
registerDoctorId = registerDoctorEnt.Id;
}
string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
sql_update += $" where id='{patientRegisterId}' ";
await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
#endregion
}
}
}
_logger.LogInformation($"新版人员数据处理{oldPatientRegisterList.Rows.Count}条");
await TransferPatientRegisterWithAsbitemData();
}
else
{
_logger.LogInformation("新版人员数据已处理完");
}
}
/// <summary>
/// 迁移总症 建议、综述、诊断数据
/// </summary>
/// <returns></returns>
public async Task TransferSumData()
{
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_summary'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any())
{
foreach (var item in patientRegisterList)
{
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
#endregion
var oldSum = await Db.Ado.GetDataTableAsync($"select summary,suggestion 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 = item.Id,
SummaryTitle = "."
};
await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader);
Guid sumSummaryContentId = GuidGenerator.Create();
var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId)
{
DisplayOrder = 1,
SumSummaryHeaderId = sumSummaryHeaderId,
SummaryContent = oldSummary
};
await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent);
await uow.CompleteAsync();
}
if (!string.IsNullOrWhiteSpace(oldSuggestion))
{
Guid sumSuggestionHeaderId = GuidGenerator.Create();
var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId)
{
DisplayOrder = 1,
SuggestionFlag = '0',
PatientRegisterId = item.Id,
SuggestionTitle = "."
};
await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader);
Guid sumSuggestionContentId = GuidGenerator.Create();
var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId)
{
DisplayOrder = 1,
SuggestionContent = oldSuggestion,
SuggestionType = SuggestionTypeFlag.HealthGuidance,
SumSuggestionHeaderId = sumSuggestionHeaderId
};
await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent);
await uow.CompleteAsync();
}
}
var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc ");
if (oldSummaryDiagnosis.Rows.Count > 0)
{
//获取建议头
var sumSuggestionHeaderEnt = await _sumSuggestionHeaderRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == item.Id);
if (sumSuggestionHeaderEnt != null)
{
List<SumDiagnosis> sumDiagnosisInsert = new List<SumDiagnosis>();
foreach (DataRow row in oldSummaryDiagnosis.Rows)
{
var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault();
if (diagnosisEnt != null)
{
var dataSumDiagnosis = new SumDiagnosis
{
DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1,
PatientRegisterId = item.Id,
DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue),
SumSuggestionHeaderId = sumSuggestionHeaderEnt.Id
};
sumDiagnosisInsert.Add(dataSumDiagnosis);
}
}
if (sumDiagnosisInsert.Any())
await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert);
await uow.CompleteAsync();
}
}
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_summary' ");
}
}
await TransferSumSummaryData();
}
else
{
_logger.LogInformation("总检综述已处理完");
}
}
#endregion
#region 人员登记
/// <summary>
/// 迁移人员登记数据
/// </summary>
@ -2723,6 +3344,8 @@ namespace Shentun.Peis.DataMigrations
}
/// <summary>
/// 迁移明细项目 查询register_item
/// </summary>

2
src/Shentun.Peis.DbMigrator/appsettings.json

@ -3,7 +3,7 @@
//"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;"
//"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeisTemp;User ID=postgres;Password=shentun123;"
//"Default": "Host=localhost;Port=5432;Database=ShentunPeis1218;User ID=postgres;Password=wxd123;"
"Default": "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;"
"Default": "Host=10.1.12.140;Port=5432;Database=ShentunPeis0508;User ID=postgres;Password=st123;"
},
"OpenIddict": {
"Applications": {

31
src/Shentun.Peis.Domain.Shared/Enums/BarcodeModeFlag.cs

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace Shentun.Peis.Enums
{
public static class BarcodeModeFlag
{
/// <summary>
/// 使用项目类别设置
/// </summary>
[Description("使用项目类别设置")]
public const char UsingItemType = '0';
/// <summary>
/// 打印人员登记号
/// </summary>
[Description("打印人员登记号")]
public const char PrintPatientRegisterNumber = '1';
/// <summary>
/// 不打印
/// </summary>
[Description("不打印")]
public const char NoPrint = '2';
}
}

7
src/Shentun.Peis.Domain/Asbitems/Asbitem.cs

@ -145,6 +145,13 @@ namespace Shentun.Peis.Models
[Column("display_order")]
public int DisplayOrder { get; set; }
/// <summary>
/// 条码模式 0-使用项目类别设置,1-打印人员登记号,2-不打印,默认值是0
/// </summary>
[Column("barcode_mode")]
[MaxLength(1)]
public char BarcodeMode { get; set; }
[Column("concurrency_stamp")]
public string ConcurrencyStamp { get; set; }

11
src/Shentun.Peis.Domain/Asbitems/AsbitemManager.cs

@ -99,7 +99,8 @@ namespace Shentun.Peis.Asbitems
ItemTypeId = entity.ItemTypeId,
Price = entity.Price,
QueueTime = entity.QueueTime,
ShortName = entity.ShortName
ShortName = entity.ShortName,
BarcodeMode = entity.BarcodeMode
};
}
/// <summary>
@ -140,7 +141,7 @@ namespace Shentun.Peis.Asbitems
targetEntity.Price = sourceEntity.Price;
targetEntity.QueueTime = sourceEntity.QueueTime;
targetEntity.ShortName = sourceEntity.ShortName;
targetEntity.BarcodeMode = sourceEntity.BarcodeMode;
}
@ -165,6 +166,12 @@ namespace Shentun.Peis.Asbitems
DataHelper.CheckCharIsYOrN(entity.IsPictureRotate, "体检报告图片旋转90°");
DataHelper.CheckCharIsYOrN(entity.IsCheck, "是否为检查项目");
DataHelper.CheckCharIsYOrN(entity.IsActive, "是否启用");
if (entity.BarcodeMode != BarcodeModeFlag.UsingItemType
&& entity.BarcodeMode != BarcodeModeFlag.PrintPatientRegisterNumber
&& entity.BarcodeMode != BarcodeModeFlag.NoPrint)
{
throw new ArgumentException($"BarcodeMode参数为:{entity.BarcodeMode},是无效值,只能为{BarcodeModeFlag.UsingItemType},{BarcodeModeFlag.PrintPatientRegisterNumber},{BarcodeModeFlag.NoPrint}");
}
}

2
src/Shentun.Peis.EntityFrameworkCore/DbMapping/Asbitems/AsbitemDbMapping.cs

@ -34,7 +34,9 @@ namespace Shentun.Peis.DbMapping
entity.Property(t => t.IsPictureRotate).HasComment("体检报告图片旋转90°").IsRequired().HasDefaultValueSql("'N'");
entity.Property(t => t.IsCheck).HasComment("是检查项目").IsRequired().HasDefaultValueSql("'Y'");
entity.Property(t => t.IsActive).HasComment("是启用").IsRequired().HasDefaultValueSql("'Y'");
entity.Property(t => t.BarcodeMode).HasComment("条码模式").IsRequired().HasDefaultValueSql("'0'");
entity.Property(e => e.Id)
.IsFixedLength()

14273
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512063617_init20240502001.Designer.cs
File diff suppressed because it is too large
View File

28
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240512063617_init20240502001.cs

@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Shentun.Peis.Migrations
{
public partial class init20240502001 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<char>(
name: "barcode_mode",
table: "asbitem",
type: "character(1)",
maxLength: 1,
nullable: false,
defaultValueSql: "'0'",
comment: "条码模式");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "barcode_mode",
table: "asbitem");
}
}
}

8
src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

@ -463,6 +463,14 @@ namespace Shentun.Peis.Migrations
.IsFixedLength()
.HasComment("编号");
b.Property<char>("BarcodeMode")
.ValueGeneratedOnAdd()
.HasMaxLength(1)
.HasColumnType("character(1)")
.HasColumnName("barcode_mode")
.HasDefaultValueSql("'0'")
.HasComment("条码模式");
b.Property<string>("ClinicalMeaning")
.HasMaxLength(100)
.HasColumnType("character varying(100)")

Loading…
Cancel
Save