예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        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);
        }