private static void ReadCLPRFiles(IMappable mapper, DbContextOptionsBuilder <MedicContext> builder, string directoryPath) { string invalidCLPRFileMessage = "Invalid CLPR file."; string[] files = Directory.GetFiles(directoryPath, "*.xml"); IMedicXmlParser medicXmlParser = new DefaultMedicXmlParser(new GetXmlParameters()); int counter = 1; foreach (string file in files) { using FileStream sr = new FileStream(file, FileMode.Open, FileAccess.Read); CLPR.HospitalPractice clprFile = medicXmlParser.ParseXML <CLPR.HospitalPractice>(sr); if (clprFile != default) { HospitalPractice hospitalPracticeEntity = mapper.Map <HospitalPractice, CLPR.HospitalPractice>(clprFile); if (hospitalPracticeEntity != default) { using MedicContext medicContext = new MedicContext(builder.Options); using IImportMedicFile importMedicFile = new ImportMedicFile(medicContext); importMedicFile.ImportHospitalPractice(hospitalPracticeEntity); consoleWriter.Notify($"{file} - imported, ({counter++}/{files.Length})."); } else { consoleWriter.Notify(invalidCLPRFileMessage); } } else { consoleWriter.Notify(invalidCLPRFileMessage); } } }
public async Task <IActionResult> HospitalPractice(IFormFile HopsitalPracticeFormFile) { try { string error = string.Empty; if (HopsitalPracticeFormFile != default) { CLPR.HospitalPractice hospitalPracticeModel = MedicXmlParser .ParseXML <CLPR.HospitalPractice>(HopsitalPracticeFormFile.OpenReadStream()); if (hospitalPracticeModel != default) { HospitalPractice hospitalPracticeEntity = Mapper.Map <HospitalPractice, CLPR.HospitalPractice>(hospitalPracticeModel); await Task.Run(() => ImportMedicFile.ImportHospitalPractice(hospitalPracticeEntity)); ClearCache(); } else { error = MedicDataLocalization.Get(MedicDataLocalization.InvalidFile); } } else { error = MedicDataLocalization.Get(MedicDataLocalization.InvalidFile); } return(View(new FileUploadPageHospitalPractice() { Title = MedicDataLocalization.Get(MedicDataLocalization.HospitalPracticeFile), Description = MedicDataLocalization.Get(MedicDataLocalization.HospitalPracticeFile), Keywords = MedicDataLocalization.Get(MedicDataLocalization.HospitalPracticeFileSummary), Error = error })); } catch (XmlException xmlEx) { Task <int> _ = MedicLoggerService.SaveAsync(new Log() { Message = xmlEx.Message, InnerExceptionMessage = xmlEx?.InnerException?.Message ?? null, Source = xmlEx.Source, StackTrace = xmlEx.StackTrace, Date = DateTime.Now }); return(View(new FileUploadPageHospitalPractice() { Title = MedicDataLocalization.Get(MedicDataLocalization.CPFile), Description = MedicDataLocalization.Get(MedicDataLocalization.CPFile), Keywords = MedicDataLocalization.Get(MedicDataLocalization.CPFileSummary), Error = MedicDataLocalization.Get(MedicDataLocalization.InvalidFile) })); } catch (InvalidOperationException invalOpEx) { Task <int> _ = MedicLoggerService.SaveAsync(new Log() { Message = invalOpEx.Message, InnerExceptionMessage = invalOpEx?.InnerException?.Message ?? null, Source = invalOpEx.Source, StackTrace = invalOpEx.StackTrace, Date = DateTime.Now }); return(View(new FileUploadPageHospitalPractice() { Title = MedicDataLocalization.Get(MedicDataLocalization.HospitalPracticeFile), Description = MedicDataLocalization.Get(MedicDataLocalization.HospitalPracticeFile), Keywords = MedicDataLocalization.Get(MedicDataLocalization.HospitalPracticeFileSummary), Error = MedicDataLocalization.Get(MedicDataLocalization.InvalidFile) })); } catch (Exception ex) { Task <int> _ = MedicLoggerService.SaveAsync(new Log() { Message = ex.Message, InnerExceptionMessage = ex?.InnerException?.Message ?? null, Source = ex.Source, StackTrace = ex.StackTrace, Date = DateTime.Now }); throw; } }
public HospitalPractice ImportHospitalPractice(HospitalPractice hospitalPractice) { if (hospitalPractice == default) { throw new ArgumentNullException(nameof(hospitalPractice)); } if (!_areHelpLibrariesLoaded) { LoadHelpData(); _areHelpLibrariesLoaded = !_areHelpLibrariesLoaded; } hospitalPractice.FileType = AddFileType(hospitalPractice.FileType); hospitalPractice.HealthRegion = AddHealthRegion(hospitalPractice.HealthRegion); hospitalPractice.Practice = AddPractice(hospitalPractice.Practice); foreach (InClinicProcedure inClinicProcedure in hospitalPractice.InClinicProcedures) { inClinicProcedure.Patient = AddPatient(inClinicProcedure.Patient); inClinicProcedure.PatientHealthRegion = AddHealthRegion(inClinicProcedure.PatientHealthRegion); inClinicProcedure.PatientBranch = AddPatientBarch(inClinicProcedure.PatientBranch); inClinicProcedure.Sender = AddHealthcarePractitioner(inClinicProcedure.Sender); if (inClinicProcedure.FirstMainDiag != null) { inClinicProcedure.FirstMainDiag.MKB = AddMKB(inClinicProcedure.FirstMainDiag.MKB); inClinicProcedure.FirstMainDiag.LinkDMKB = AddMKB(inClinicProcedure.FirstMainDiag.LinkDMKB); } if (inClinicProcedure.SecondMainDiag != null) { inClinicProcedure.SecondMainDiag.MKB = AddMKB(inClinicProcedure.SecondMainDiag.MKB); inClinicProcedure.SecondMainDiag.LinkDMKB = AddMKB(inClinicProcedure.SecondMainDiag.LinkDMKB); } } foreach (PathProcedure pathProcedure in hospitalPractice.PathProcedures) { pathProcedure.Patient = AddPatient(pathProcedure.Patient); pathProcedure.PatientHRegion = AddHealthRegion(pathProcedure.PatientHRegion); pathProcedure.PatientBranch = AddPatientBarch(pathProcedure.PatientBranch); pathProcedure.Sender = AddHealthcarePractitioner(pathProcedure.Sender); foreach (DoneProcedure doneProcedure in pathProcedure.DoneProcedures) { doneProcedure.Doctor = AddHealthcarePractitioner(doneProcedure.Doctor); } if (pathProcedure.FirstMainDiag != null) { pathProcedure.FirstMainDiag.MKB = AddMKB(pathProcedure.FirstMainDiag.MKB); pathProcedure.FirstMainDiag.LinkDMKB = AddMKB(pathProcedure.FirstMainDiag.LinkDMKB); } if (pathProcedure.SecondMainDiag != null) { pathProcedure.SecondMainDiag.MKB = AddMKB(pathProcedure.SecondMainDiag.MKB); pathProcedure.SecondMainDiag.LinkDMKB = AddMKB(pathProcedure.SecondMainDiag.LinkDMKB); } } foreach (DispObservation dispObservation in hospitalPractice.DispObservations) { dispObservation.Patient = AddPatient(dispObservation.Patient); dispObservation.PatientHRegion = AddHealthRegion(dispObservation.PatientHRegion); dispObservation.PatientBranch = AddPatientBarch(dispObservation.PatientBranch); dispObservation.Doctor = AddHealthcarePractitioner(dispObservation.Doctor); if (dispObservation.FirstMainDiag != default) { dispObservation.FirstMainDiag.MKB = AddMKB(dispObservation.FirstMainDiag.MKB); dispObservation.FirstMainDiag.LinkDMKB = AddMKB(dispObservation.FirstMainDiag.LinkDMKB); } if (dispObservation.SecondMainDiag != default) { dispObservation.SecondMainDiag.MKB = AddMKB(dispObservation.SecondMainDiag.MKB); dispObservation.SecondMainDiag.LinkDMKB = AddMKB(dispObservation.SecondMainDiag.LinkDMKB); } } foreach (CommissionApr commissionApr in hospitalPractice.CommissionAprs) { commissionApr.Patient = AddPatient(commissionApr.Patient); commissionApr.PatientHRegion = AddHealthRegion(commissionApr.PatientHRegion); commissionApr.PatientBranch = AddPatientBarch(commissionApr.PatientBranch); commissionApr.Sender = AddHealthcarePractitioner(commissionApr.Sender); commissionApr.Chairman = AddHealthcarePractitioner(commissionApr.Chairman); if (commissionApr.Members != default && commissionApr.Members.Count > 0) { List <CommissionAprHealthcarePractitioner> tempCommPract = new List <CommissionAprHealthcarePractitioner>(); foreach (CommissionAprHealthcarePractitioner practitioner in commissionApr.Members) { practitioner.HealthcarePractitioner = AddHealthcarePractitioner(practitioner.HealthcarePractitioner); if (!tempCommPract.Any(t => t.HealthcarePractitioner == practitioner.HealthcarePractitioner)) { tempCommPract.Add(practitioner); } } commissionApr.Members = tempCommPract.ToHashSet(); } if (commissionApr.MainDiag != default) { commissionApr.MainDiag.MKB = AddMKB(commissionApr.MainDiag.MKB); commissionApr.MainDiag.LinkDMKB = AddMKB(commissionApr.MainDiag.LinkDMKB); } foreach (Diag diag in commissionApr.AddDiags) { diag.MKB = AddMKB(diag.MKB); diag.LinkDMKB = AddMKB(diag.LinkDMKB); } } foreach (ProtocolDrugTherapy protocolDrugTherapy in hospitalPractice.ProtocolDrugTherapies) { protocolDrugTherapy.Patient = AddPatient(protocolDrugTherapy.Patient); protocolDrugTherapy.PatientHRegion = AddHealthRegion(protocolDrugTherapy.PatientHRegion); protocolDrugTherapy.PatientBranch = AddPatientBarch(protocolDrugTherapy.PatientBranch); protocolDrugTherapy.Chairman = AddHealthcarePractitioner(protocolDrugTherapy.Chairman); protocolDrugTherapy.Practice = AddPractice(protocolDrugTherapy.Practice); foreach (ProtocolDrugTherapyHealthPractitioner practitioner in protocolDrugTherapy.Members) { practitioner.HealthcarePractitioner = AddHealthcarePractitioner(practitioner.HealthcarePractitioner); } foreach (AccompanyingDrug accompanyingDrug in protocolDrugTherapy.AccompanyingDrugs) { accompanyingDrug.TherapyType = AddTherapyType(accompanyingDrug.TherapyType); } foreach (DrugProtocol drugProtocol in protocolDrugTherapy.DrugProtocols) { drugProtocol.TherapyType = AddTherapyType(drugProtocol.TherapyType); } if (protocolDrugTherapy.Diag != default) { protocolDrugTherapy.Diag.MKB = AddMKB(protocolDrugTherapy.Diag.MKB); protocolDrugTherapy.Diag.LinkDMKB = AddMKB(protocolDrugTherapy.Diag.LinkDMKB); } if (protocolDrugTherapy.ChemotherapyPart != default) { foreach (Diag diag in protocolDrugTherapy.ChemotherapyPart.AddDiags) { diag.MKB = AddMKB(diag.MKB); diag.LinkDMKB = AddMKB(diag.LinkDMKB); } } } if (hospitalPractice.Transfers != default) { foreach (Transfer transfer in hospitalPractice.Transfers) { if (transfer.FirstMainDiag != default) { transfer.FirstMainDiag.MKB = AddMKB(transfer.FirstMainDiag.MKB); transfer.FirstMainDiag.LinkDMKB = AddMKB(transfer.FirstMainDiag.LinkDMKB); } if (transfer.SecondMainDiag != default) { transfer.SecondMainDiag.MKB = AddMKB(transfer.SecondMainDiag.MKB); transfer.SecondMainDiag.LinkDMKB = AddMKB(transfer.SecondMainDiag.LinkDMKB); } } } MedicContext.HospitalPractices.Add(hospitalPractice); MedicContext.SaveChanges(); return(hospitalPractice); }