예제 #1
0
        public PatientSurgery Resolve()
        {
            var patientSurgery          = new PatientSurgery();
            var surgeriesNames          = _context.Surgeries.Select(s => s.Name).ToList();
            var surgeriesRegex          = RegularExpressions.FindWordInList(surgeriesNames);
            var surgeryMatches          = surgeriesRegex.Matches(_surgeryCellValue);
            var surgeryFieldYearMatches = RegularExpressions.ValidYear().Matches(_surgeryCellValue);

            if (surgeryMatches.Count > 0)
            {
                string  matchedSurgeryName = surgeryMatches[0].ToString();
                Surgery dbSurgery          = FindSurgeryByName(matchedSurgeryName);
                if (dbSurgery == null)
                {
                    return(null);
                }

                patientSurgery.SurgeryId = dbSurgery.ID;

                if (NotesCellValueIsNotBlank())
                {
                    patientSurgery.Note = notesCellValue();
                }
                FindAndSetYearInSurgeryColumns(patientSurgery, surgeryFieldYearMatches);
            }
            return(patientSurgery);
        }
        private void ReadCell(Patient patient, IRow row, int cellCursor)
        {
            string header          = _headers.ElementAt(cellCursor);
            string newObjectFields = (string)_dictonary[header];
            string propertyValue   = row.GetCell(cellCursor, MissingCellPolicy.CREATE_NULL_AS_BLANK).ToString();

            if (string.IsNullOrEmpty(propertyValue))
            {
                return;
            }
            switch (header)
            {
            case "OtherDiagnosisAndNotes":
                SetPatientGenericNote(patient, propertyValue);
                break;

            case "HasLungSurgery":
                var            surgeryResolver = new ManARTSPatientSurgeryResolver(_context, propertyValue, row, _headers);
                PatientSurgery surgery         = surgeryResolver.Resolve();
                if (surgery != null)
                {
                    surgery.PatientId = patient.ID;
                    _context.PatientSurgeries.Add(surgery);
                    Imported.Add(surgery);
                    _context.SaveChanges();
                }
                break;
            }
        }
예제 #3
0
        private void FindYearForSurgery(PatientSurgery patientSurgery)
        {
            Match matchesYear = RegularExpressions.ValidYear().Match(_potentialSurgery);

            if (matchesYear.Success)
            {
                patientSurgery.SurgeryDate = Int32.Parse(matchesYear.ToString());
            }
        }
        public async Task <HttpResponseMessage> AddPatientSugery(PatientSurgery_Custom model)
        {
            PatientSurgery psurgery = new PatientSurgery();

            try
            {
                if (model.bodyPart == null || model.bodyPart == "")
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Invalid surgery name."
                    });
                    return(response);
                }
                if (model.patientID == null || model.patientID == 0)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Invalid patient id."
                    });
                    return(response);
                }

                psurgery = db.PatientSurgeries.Where(p => p.bodyPart.Trim() == model.bodyPart.Trim() && p.patientID == model.patientID && p.active == true).FirstOrDefault();
                if (psurgery != null)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Surgery already exists."
                    });
                    response.ReasonPhrase = "Surgery already exists.";

                    return(response);
                }
                if (psurgery == null)
                {
                    psurgery              = new PatientSurgery();
                    psurgery.active       = true;
                    psurgery.bodyPart     = model.bodyPart;
                    psurgery.patientID    = model.patientID;
                    psurgery.cd           = System.DateTime.Now;
                    psurgery.reportedDate = System.DateTime.Now;
                    psurgery.cb           = model.patientID.ToString();

                    db.PatientSurgeries.Add(psurgery);
                    await db.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                return(ThrowError(ex, "AddPatientSurgery in PatientSurgeriesController."));
            }

            response = Request.CreateResponse(HttpStatusCode.OK, new ApiResultModel {
                ID = psurgery.surgeryID, message = ""
            });
            return(response);
        }
        private PatientSurgery GetPatientSurgeriesFromWord(Patient patient, string potentialSurgery)
        {
            var            dataResolver = new EPRDocxPatientSurgeryResolver(potentialSurgery, patient, _context);
            PatientSurgery surgery      = dataResolver.ResolveSurgery();

            if (surgery != null)
            {
                _surgeries.Add(surgery);
            }
            return(surgery);
        }
        public async Task <HttpResponseMessage> EditPatientSugery(long surgeryID, PatientSurgery_Custom model)
        {
            PatientSurgery psurgery = new PatientSurgery();

            try
            {
                if (model.bodyPart == null || model.bodyPart == "" || !Regex.IsMatch(model.bodyPart.Trim(), "^[0-9a-zA-Z ]+$"))
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Invalid surgery. Only letters and numbers are allowed."
                    });
                    return(response);
                }
                if (model.patientID == null || model.patientID == 0)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Invalid patient id."
                    });
                    return(response);
                }
                psurgery = db.PatientSurgeries.Where(all => all.bodyPart.Trim() == model.bodyPart.Trim() && all.surgeryID != surgeryID && all.active == true).FirstOrDefault();
                if (psurgery != null)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Surgery already exists."
                    });
                    response.ReasonPhrase = "Surgery already exists.";
                    return(response);
                }
                psurgery = db.PatientSurgeries.Where(m => m.surgeryID == surgeryID).FirstOrDefault();
                if (psurgery == null)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Surgery not found."
                    });
                    return(response);
                }

                psurgery.bodyPart        = model.bodyPart;
                psurgery.md              = System.DateTime.Now;
                psurgery.mb              = psurgery.patientID.ToString();
                db.Entry(psurgery).State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(ThrowError(ex, "EditPatientSurgery in PatientSurgeriesController."));
            }

            response = Request.CreateResponse(HttpStatusCode.OK, new ApiResultModel {
                ID = surgeryID, message = ""
            });
            return(response);
        }
예제 #7
0
        private PatientSurgery BuildSurgeryForPatient(string matchingSurgery)
        {
            var patientSurgery = new PatientSurgery();
            var dbSurgery      = _context.Surgeries.Where(s => s.Name.Equals(matchingSurgery))
                                 .FirstOrDefault();

            if (dbSurgery == null)
            {
                return(null);
            }
            patientSurgery.Surgery = dbSurgery;
            patientSurgery.Note    = _potentialSurgery;
            FindYearForSurgery(patientSurgery);
            return(patientSurgery);
        }
예제 #8
0
 private void FindAndSetYearInSurgeryColumns(PatientSurgery patientSurgery, MatchCollection surgeryFieldYearMatches)
 {
     if (FoundMatchInSurgeryColumn(surgeryFieldYearMatches))
     {
         int intYear = Int32.Parse(surgeryFieldYearMatches[0].ToString());
         patientSurgery.SurgeryDate = intYear;
     }
     else if (YearCellValueIsNotBlank())
     {
         var yearFieldYearMatches = RegularExpressions.ValidYear().Matches(yearCellValue());
         if (yearFieldYearMatches.Count > 0)
         {
             int intYear = Int32.Parse(yearFieldYearMatches[0].ToString());
             patientSurgery.SurgeryDate = intYear;
         }
     }
 }
예제 #9
0
        internal PatientSurgery ResolveSurgery()
        {
            PatientSurgery patientSurgery  = null;
            var            matchingSurgery = FindMatchingSurgeriesInDatabase();
            PatientSurgery databaseSurgery = CheckIfMatchingSurgeryAlreadyExists(matchingSurgery);

            if (databaseSurgery == null && matchingSurgery != null)
            {
                patientSurgery = BuildSurgeryForPatient(matchingSurgery);
                _patient.PatientSurgeries.Add(patientSurgery);
                _context.PatientSurgeries.Add(patientSurgery);
            }
            else if (databaseSurgery != null && matchingSurgery != null)
            {
                patientSurgery = databaseSurgery;
            }
            return(patientSurgery);
        }
예제 #10
0
        public async Task <HttpResponseMessage> RemovePatientSurgery(long surgeryID)
        {
            try
            {
                if (surgeryID == 0)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Invalid surgery ID."
                    });
                    return(response);
                }
                PatientSurgery psurgery = await db.PatientSurgeries.FindAsync(surgeryID);

                if (psurgery == null)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, new ApiResultModel {
                        ID = 0, message = "Surgery not found."
                    });
                    return(response);
                }
                else
                {
                    psurgery.active          = false;//Delete Operation changed
                    psurgery.mb              = psurgery.patientID.ToString();
                    psurgery.md              = System.DateTime.Now;
                    db.Entry(psurgery).State = EntityState.Modified;
                    await db.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                return(ThrowError(ex, "DeletePatientSurgery in PatientSurgeriesController."));
            }

            response = Request.CreateResponse(HttpStatusCode.OK, new ApiResultModel {
                ID = surgeryID, message = ""
            });
            return(response);
        }