コード例 #1
0
        public IActionResult UpdatePatientOutcome()
        {
            DateTime date = DateTime.ParseExact(ProfileModel.OutcomeDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);

            PatientProgram     pp = ProfileModel.Program;
            PatientExamination px = ProfileModel.Examination;
            Patient            pt = ProfileModel.Patient;

            pp.DateCompleted    = date;
            pp.LaboratoryNumber = px.LabNo;
            pp.UpdateOutcome();

            px.SputumSmearDate = date;
            px.Visit           = new Visit(25);
            px.Program         = pp;
            px.Save(HttpContext);

            if (pp.Outcome.Id.Equals(Constants.PATIENT_DIED))
            {
                pt.isDead(true);
                pt.DiedOn       = date;
                pt.CauseOfDeath = new Concept(pp.Program.Id);
                pt.Update();
            }

            return(LocalRedirect("/patients/profile/" + pt.GetUuid()));
        }
コード例 #2
0
        public PatientProfileViewModel()
        {
            Transfer    = new PatientTransfer();
            Patient     = new Patient();
            Program     = new PatientProgram();
            Regimen     = new PatientRegimen();
            Examination = new PatientExamination();

            DateOfBirth  = DateTime.Now.ToString("dd/MM/yyyy");
            RegimenDate  = DateTime.Now.ToString("dd/MM/yyyy");
            OutcomeDate  = DateTime.Now.ToString("dd/MM/yyyy");
            TransferDate = DateTime.Now.ToString("dd/MM/yyyy");

            Centers  = new List <SelectListItem>();
            Facility = new List <SelectListItem>();
            Outcomes = new List <SelectListItem>();
            ExamOpts = new List <SelectListItem>();
            Regimens = new List <SelectListItem>();

            LatestVitals = new Vitals();
            Examinations = new List <Examinations>();
            Contacts     = new List <Contacts>();

            Gender = new PatientService().InitializeGender();
        }
コード例 #3
0
        public IActionResult RegisterNewIntake()
        {
            PatientProgram pp = IntakeModel.Program;

            pp.ArtStartedOn = DateTime.Parse(IntakeModel.ArtStartedOn);
            pp.CptStartedOn = DateTime.Parse(IntakeModel.CptStartedOn);
            pp.UpdateIntake();

            PatientRegimen pr = IntakeModel.Regimen;

            pr.Program = pp;
            pr.Save(HttpContext);

            PatientExamination px = IntakeModel.Examination;

            px.Program         = pp;
            px.Visit           = new Visit(1);
            px.LabNo           = pp.LaboratoryNumber;
            px.SputumSmearDate = DateTime.Parse(IntakeModel.SputumSmearDate);
            px.GeneXpertDate   = DateTime.Parse(IntakeModel.GeneXpertDate);
            px.HivExamDate     = DateTime.Parse(IntakeModel.HivExamDate);
            px.XrayExamDate    = DateTime.Parse(IntakeModel.XrayExamDate);
            px.Save(HttpContext);

            return(LocalRedirect("/patients/profile/" + pp.Patient.GetUuid()));
        }
コード例 #4
0
        public IActionResult AddVisits()
        {
            PatientProgram pp = VisitModel.Program;

            pp.ArtStartedOn = DateTime.Parse(VisitModel.ArtStartedOn);
            pp.CptStartedOn = DateTime.Parse(VisitModel.CptStartedOn);
            pp.UpdateVisit();

            //Test If Regimen has Changed, then Update
            PatientRegimen pr = VisitModel.Regimen;

            pr.Program = pp;
            pr.Save(HttpContext);

            //Post Visit
            PatientExamination px = VisitModel.Examination;

            px.Program         = pp;
            px.LabNo           = pp.LaboratoryNumber;
            px.SputumSmearDate = DateTime.Parse(VisitModel.SputumSmearDate);
            px.GeneXpertDate   = DateTime.Parse(VisitModel.GeneXpertDate);
            px.HivExamDate     = DateTime.Parse(VisitModel.HivExamDate);
            px.XrayExamDate    = DateTime.Parse(VisitModel.XrayExamDate);
            px.Save(HttpContext);

            return(LocalRedirect("/patients/profile/" + pp.Patient.GetUuid()));
        }
コード例 #5
0
        public PatientExamination GetPatientExamination(PatientProgram pp, Visit visit)
        {
            PatientExamination  px   = null;
            SqlServerConnection conn = new SqlServerConnection();
            SqlDataReader       dr   = conn.SqlServerConnect("SELECT pe_idnt, pe_weight, pe_height, pe_muac, pe_bmi, pe_program, pe_visit, pe_sputum_exam, sp.cpt_name, pe_sputum_date, pe_genexpert_exam, gx.cpt_name, pe_genexpert_date, pe_hiv_exam, hv.cpt_name, pe_hiv_date, pe_xray_exam, xr.cpt_name, pe_xray_date, pe_created_on, pe_created_by, pe_notes FROM PatientExamination INNER JOIN Concept sp ON pe_sputum_exam=sp.cpt_id INNER JOIN Concept gx ON pe_genexpert_exam=gx.cpt_id INNER JOIN Concept hv ON pe_hiv_exam=hv.cpt_id INNER JOIN Concept xr ON pe_xray_exam=xr.cpt_id WHERE pe_program=" + pp.Id + " AND pe_visit=" + visit.Id);

            if (dr.Read())
            {
                px = new PatientExamination {
                    Id              = Convert.ToInt64(dr[0]),
                    Weight          = Convert.ToDouble(dr[1]),
                    Height          = Convert.ToDouble(dr[2]),
                    MUAC            = Convert.ToDouble(dr[3]),
                    BMI             = Convert.ToDouble(dr[4]),
                    Program         = new PatientProgram(Convert.ToInt64(dr[5])),
                    Visit           = new Visit(Convert.ToInt64(dr[6])),
                    SputumSmear     = new Concept(Convert.ToInt64(dr[7]), dr[8].ToString()),
                    SputumSmearDate = Convert.ToDateTime(dr[9]),
                    GeneXpert       = new Concept(Convert.ToInt64(dr[10]), dr[11].ToString()),
                    GeneXpertDate   = Convert.ToDateTime(dr[12]),
                    HivExam         = new Concept(Convert.ToInt64(dr[13]), dr[14].ToString()),
                    HivExamDate     = Convert.ToDateTime(dr[15]),
                    XrayExam        = new Concept(Convert.ToInt64(dr[16]), dr[17].ToString()),
                    XrayExamDate    = Convert.ToDateTime(dr[18]),
                    CreatedOn       = Convert.ToDateTime(dr[19]),
                    CreatedBy       = new Users(Convert.ToInt64(dr[20])),
                    Notes           = dr[21].ToString()
                };
            }

            return(px);
        }
コード例 #6
0
        public PatientExamination SavePatientExamination(PatientExamination px)
        {
            SqlServerConnection conn = new SqlServerConnection();

            px.Id = conn.SqlServerUpdate("IF NOT EXISTS (SELECT pe_idnt FROM PatientExamination WHERE pe_idnt=" + px.Id + ") BEGIN INSERT INTO PatientExamination (pe_program, pe_visit, pe_labno, pe_weight, pe_height, pe_muac, pe_bmi, pe_sputum_exam, pe_sputum_date, pe_genexpert_exam, pe_genexpert_date, pe_hiv_exam, pe_hiv_date, pe_xray_exam, pe_xray_date, pe_created_by) output INSERTED.pe_idnt VALUES (" + px.Program.Id + ", " + px.Visit.Id + ", '" + px.LabNo + "', " + px.Weight + ", " + px.Height + ", " + px.MUAC + ", " + px.BMI + ", " + px.SputumSmear.Id + ", '" + px.SputumSmearDate + "', " + px.GeneXpert.Id + ", '" + px.GeneXpertDate + "', " + px.HivExam.Id + ", '" + px.HivExamDate + "', " + px.XrayExam.Id + ", '" + px.XrayExamDate + "', " + Actor + ") END ELSE BEGIN UPDATE PatientExamination SET pe_labno='" + px.LabNo + "', pe_weight=" + px.Weight + ", pe_height=" + px.Height + ", pe_muac=" + px.MUAC + ", pe_bmi=" + px.BMI + ", pe_sputum_exam=" + px.SputumSmear.Id + ", pe_sputum_date='" + px.SputumSmearDate + "', pe_genexpert_exam=" + px.GeneXpert.Id + ", pe_genexpert_date='" + px.GeneXpertDate + "', pe_hiv_exam=" + px.HivExam.Id + ", pe_hiv_date='" + px.HivExamDate + "', pe_xray_exam=" + px.XrayExam.Id + ", pe_xray_date='" + px.XrayExamDate + "' output INSERTED.pe_idnt WHERE pe_idnt=" + px.Id + " END");

            return(px);
        }
コード例 #7
0
        public PatientModel()
        {
            PatientProgram = new PatientProgram();
            Examination    = new PatientExamination();

            Date    = DateTime.Now.ToString("d MMMM, yyyy");
            Age     = "";
            Weight  = "";
            Address = "";
        }
コード例 #8
0
        public IActionResult RegisterMultiple()
        {
            Facility facility = new Facility {
                Id = MultipleModel.Facility
            };

            foreach (var line in MultipleModel.PatientModel)
            {
                if (string.IsNullOrEmpty(line.PatientProgram.Patient.Person.Name))
                {
                    continue;
                }

                Patient patient = line.PatientProgram.Patient;
                patient.Person.DateOfBirth = DateTime.Now.AddYears(0 - Convert.ToInt32(line.Age));
                patient.Save();

                patient.Person.Address = new PersonAddress {
                    Telephone = line.Address,
                    Person    = patient.Person
                }.Save(HttpContext);

                PatientProgram pp = line.PatientProgram;
                pp.Facility     = facility;
                pp.Patient      = patient;
                pp.DateEnrolled = DateTime.Parse(line.Date);
                pp.Create(HttpContext);

                //Update Intake
                pp.ArtStartedOn = DateTime.Parse(line.Date);
                pp.CptStartedOn = DateTime.Parse(line.Date);
                pp.UpdateIntake();

                //Regimen
                new PatientRegimen {
                    Regimen = new Regimen {
                        Id = Constants.REG_SHORT_ADULT
                    },
                    Program = pp
                }.Save(HttpContext);

                //Examinations
                PatientExamination px = line.Examination;
                px.Program         = pp;
                px.Visit           = new Visit(1);
                px.LabNo           = "N/A";
                px.SputumSmearDate = DateTime.Parse(line.Date);
                px.GeneXpertDate   = DateTime.Parse(line.Date);
                px.HivExamDate     = DateTime.Parse(line.Date);
                px.XrayExamDate    = DateTime.Parse(line.Date);
                px.Save(HttpContext);
            }

            return(LocalRedirect("/patients/register/tb?fac=" + MultipleModel.Facility));
        }
コード例 #9
0
        public static async Task CancelPatientExAsync(int id)
        {
            PatientExamination patientExamination = await _context.PatientExaminations.FindAsync(id);

            if (await _context.ExaminationReagents.Where(e => e.ExaminationID == patientExamination.ExaminationID).AnyAsync())
            {
                await ReagentHelper.IncreaseReagentsAsync(patientExamination.ExaminationID);
            }

            _context.PatientExaminations.Remove(patientExamination);
            await _context.SaveChangesAsync();
        }
コード例 #10
0
 public PatientExaminationHistoryViewModel(PatientExamination patientExamination)
 {
     ID                  = patientExamination.ID;
     ExCode              = patientExamination.Examination.ExCode;
     ExName              = patientExamination.Examination.Name;
     ExDisease           = patientExamination.Examination.Disease;
     Results             = patientExamination.Results;
     ResultsComment      = patientExamination.ResultsComment;
     ExaminationFinished = patientExamination.ExaminationFinished;
     DateOfExamination   = patientExamination.DateOfExamination.ToLocalTime();
     ResultsReceived     = patientExamination.ResultsReceived;
 }
コード例 #11
0
 public PExaminationViewModel(PatientExamination patientExamination)
 {
     ID                  = patientExamination.ID;
     PatientID           = patientExamination.PatientID;
     FullName            = $"{patientExamination.Patient.LastName}, {patientExamination.Patient.FirstName}";
     ExCode              = patientExamination.Examination.ExCode;
     ExName              = patientExamination.Examination.Name;
     ExDisease           = patientExamination.Examination.Disease;
     Results             = patientExamination.Results;
     ResultsComment      = patientExamination.ResultsComment;
     ExaminationFinished = patientExamination.ExaminationFinished;
     DateOfExamination   = patientExamination.DateOfExamination.ToLocalTime();
     ResultsReceived     = patientExamination.ResultsReceived;
 }
コード例 #12
0
        private void InsertExaminationsByIds(string klassName, PatientVisit patientVisit, IEnumerable <int> toInsertIds)
        {
            PatientExamination examination;
            var igs = _context.PatientImmunoglobulins.Where(pe => toInsertIds.Contains(pe.ID)).ToList();
            var currentCollection = PatientExamination.EntityTypes(_context, klassName);
            var items             = currentCollection.Where(pe => toInsertIds.ToList().Contains(pe.ID));

            foreach (var item in items)
            {
                examination = PatientExamination.BuildPatientExamination(klassName, TABS_KLASSES_LIST[klassName],
                                                                         item.ID.ToString(), patientVisit);
                _context.Add(examination);
            }
        }
コード例 #13
0
        public static async Task <int> AddPatientExAsync(PatientExaminationViewModel patientExaminationVM)
        {
            PatientExamination patientExamination = SimplifyPE(patientExaminationVM);

            _context.PatientExaminations.Add(patientExamination);

            if (await _context.ExaminationReagents.Where(e => e.ExaminationID == patientExamination.ExaminationID).AnyAsync())
            {
                ReagentHelper.Init(_context);
                await ReagentHelper.ReduceReagentsAsync(patientExamination.ExaminationID);
            }

            await _context.SaveChangesAsync();

            return(patientExamination.ID);
        }
コード例 #14
0
        public PatientIntakeViewModel()
        {
            Program     = new PatientProgram();
            Patient     = new Patient();
            Regimen     = new PatientRegimen();
            Examination = new PatientExamination();

            RegimenStartedOn = DateTime.Now.ToString("d MMMM, yyyy");
            SputumSmearDate  = DateTime.Now.ToString("d MMMM, yyyy");
            GeneXpertDate    = DateTime.Now.ToString("d MMMM, yyyy");
            HivExamDate      = DateTime.Now.ToString("d MMMM, yyyy");
            XrayExamDate     = DateTime.Now.ToString("d MMMM, yyyy");
            ArtStartedOn     = DateTime.Now.ToString("d MMMM, yyyy");
            CptStartedOn     = DateTime.Now.ToString("d MMMM, yyyy");

            InitiazeBoolOpts();
        }
コード例 #15
0
        public static async Task UpdatePatientExAsync(int id, PExaminationViewModel pExaminationView)
        {
            PatientExamination patientExaminationToUpdate = await _context.PatientExaminations.FindAsync(id);

            if (pExaminationView.ExaminationFinished)
            {
                patientExaminationToUpdate.ExaminationFinished = pExaminationView.ExaminationFinished;
                patientExaminationToUpdate.DateOfConclusion    = DateTime.UtcNow;
            }

            patientExaminationToUpdate.Results         = pExaminationView.Results;
            patientExaminationToUpdate.ResultsComment  = pExaminationView.ResultsComment;
            patientExaminationToUpdate.ResultsReceived = pExaminationView.ResultsReceived;

            _context.PatientExaminations.Update(patientExaminationToUpdate);
            await _context.SaveChangesAsync();
        }
コード例 #16
0
        private List <PatientExamination> SaveExamination(string klass, string propertyName, PatientVisit patientVisit)
        {
            var selected = _form.Keys.Where(k => k.Contains(klass)).ToList();

            var savedItems = new List <PatientExamination>();

            for (var cursor = 0; cursor < selected.Count; cursor++)
            {
                var itemId    = _form[klass + "[" + cursor + "].ID"];
                var isChecked = _form[klass + "[" + cursor + "].Selected"];
                if (isChecked == "on")
                {
                    var examination = PatientExamination.BuildPatientExamination(klass, propertyName,
                                                                                 itemId, patientVisit);
                    savedItems.Add(examination);
                }
            }
            return(savedItems);
        }
コード例 #17
0
        public PatientVisitsViewModel()
        {
            Patient = new Patient();
            Program = new PatientProgram();

            Visits   = new List <SelectListItem>();
            Regimens = new List <SelectListItem>();

            HivRecent   = new Examinations();
            Regimen     = new PatientRegimen();
            Examination = new PatientExamination();

            RegimenStartedOn = DateTime.Now.ToString("d MMMM, yyyy");
            SputumSmearDate  = DateTime.Now.ToString("d MMMM, yyyy");
            GeneXpertDate    = DateTime.Now.ToString("d MMMM, yyyy");
            HivExamDate      = DateTime.Now.ToString("d MMMM, yyyy");
            XrayExamDate     = DateTime.Now.ToString("d MMMM, yyyy");

            ArtStartedOn = DateTime.Now.ToString("d MMMM, yyyy");
            CptStartedOn = DateTime.Now.ToString("d MMMM, yyyy");

            InitiazeBoolOpts();
        }