Esempio n. 1
0
        private HttpResponseMessage AdmitPatient(PatientAdmitted patient)
        {
            AddHeader();
            var response = _client.PostAsJsonAsync(apiUrl + "PatientAdmitted", patient).Result;

            return(response);
        }
Esempio n. 2
0
 private void When(PatientAdmitted e)
 {
     _currentlyAdmitted = true;
     Id           = e.PatientId;
     _patientName = e.PatientName;
     _ageInYears  = e.AgeInYears;
     _ward        = e.WardNumber;
 }
Esempio n. 3
0
        private async Task <IActionResult> AddToAdmitted(int id, bool sentHome = false)
        {
            if (id > 0)
            {
                try
                {
                    var response        = GetWaitingPatient(id);
                    var patientData     = JsonConvert.DeserializeObject <PatientWaitingList>(response.Content.ReadAsStringAsync().Result);
                    var patientAdmitted = new PatientAdmitted
                    {
                        PatientId       = id,
                        Condition       = patientData.Condition,
                        Priority        = patientData.Priority,
                        Infections      = patientData.Infections,
                        Arrival         = patientData.Arrival,
                        Time_checked_in = patientData.Time_checked_in,
                        Time_triaged    = patientData.Time_triaged,
                        HospitalID      = patientData.HospitalID,
                        FlowchartName   = patientData.FlowchartName
                    };

                    if (sentHome)
                    {
                        patientAdmitted.Time_released  = GetNow();
                        patientAdmitted.FinalCondition = "Sent home";
                    }
                    else
                    {
                        patientAdmitted.Time_admitted = GetNow();
                    }
                    response = AdmitPatient(patientAdmitted);
                    if (response.IsSuccessStatusCode)
                    {
                        response = RemoveWaiting(patientData.Id);
                        await HubContext.Clients.All.SendAsync("ReceiveNotification", patientData.HospitalID);
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
            }
            return(null);
        }
        void OnPatientAdmitted(AdmissionArgs admissionArgs)
        {
            using var serviceScope = _serviceProvider.CreateScope();
            using var ctx          = serviceScope.ServiceProvider.GetService <CoronaReporterContext>();

            var patient = ctx.Patients
                          .Include(p => p.Consultations)
                          .SingleOrDefault(p => p.Id == admissionArgs.PatientId);

            if (patient == null)
            {
                patient = new Patient();
                patient.PopulateFrom(admissionArgs);
                ctx.Patients.Add(patient);
                _logger.LogInformation($"New patient admission: {patient}");
            }
            else
            {
                patient.PopulateFrom(admissionArgs);
                _logger.LogInformation($"New admission for existing patient: {patient}");
            }

            // TODO: Two consultations open at the same time? Understand consultation logic
            // (is there an ID?)
            var consultation = new Consultation
            {
                Patient       = patient,
                AdmissionTime = admissionArgs.AdmissionTime
            };

            patient.Consultations.Add(consultation);

            ctx.SaveChanges();

            PatientAdmitted?.Invoke(consultation);
        }