//============================Listeners ===========================
        private void cbNASLiberer_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Dossier_Admission dos = cbNASLiberer.SelectedItem as Dossier_Admission;

            txtNomPatientLiberer.Text    = dos.Patient.nomPatient;
            txtPrenomPatientLiberer.Text = dos.Patient.prenomPatient;
        }
        private void btnAssignerMedecin_Click(object sender, RoutedEventArgs e)
        {
            Dossier_Admission dossier = dgDossiersMedecin.SelectedItem as Dossier_Admission;
            Medecin           medecin = cbAutresMedecins.SelectedItem as Medecin;

            if (dossier == null)
            {
                MessageBox.Show("Veuillez sélectionner un patient dans la liste de patients.", "Avertissement", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (medecin == null)
            {
                MessageBox.Show("Veuillez sélectionner un médecin dans la liste de médecin pour assignation.", "Avertissement", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            dossier.idMedecin = medecin.idMedecin;

            try
            {
                Singleton.Instance.bd.SaveChanges();
                MessageBox.Show("Médecin assigné avec succès!", "Confirmation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                refresh();
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        //============================Methodes-Services ===========================

        public void afficherFacture(Dossier_Admission dos)
        {
            string txtAfficher    = "                 FACTURE\n======================\n";
            double fraisTotaux    = 0;
            double fraisPrive     = 571;
            double fraisSemiPrive = 267;
            double fraisPhone     = 7.50;
            double fraisTV        = 42.50;

            //Si le patient doit prendre en charge ses frais de lit, ajouter le montant a sa facture
            if (dos.litPayant == true)
            {
                if (dos.Lit.noTypeLit == 2)
                {
                    fraisTotaux += fraisSemiPrive;
                    txtAfficher += "Lit semi-privé: 267.00$.\n";
                }
                else if (dos.Lit.noTypeLit == 1)
                {
                    fraisTotaux += fraisPrive;
                    txtAfficher += "Lit privé:      571.00$.\n";
                }
            }

            if (dos.telephone == true)
            {
                fraisTotaux += fraisPhone;
                txtAfficher += "Téléphone:       7.50$\n";
            }

            if (dos.television == true)
            {
                fraisTotaux += fraisTV;
                txtAfficher += "Télévision:      42.50$\n";
            }

            txtAfficher += "======================\nTotal:              " + fraisTotaux + "$";
            MessageBox.Show(txtAfficher);
        }
        private void btnLibererPatient_Click(object sender, RoutedEventArgs e)
        {
            Dossier_Admission dos = cbNASLiberer.SelectedItem as Dossier_Admission;


            if (dateLiberation.SelectedDate < dos.dateAdmission)
            {
                MessageBox.Show("Veuillez saisir une date qui ne précède pas la date d'admission du patient.");
            }
            else
            {
                MessageBoxResult messageBoxResult = MessageBox.Show("Êtes-vous sûr de vouloir libérer ce patient?", "Confirmation", System.Windows.MessageBoxButton.YesNo);
                if (messageBoxResult == MessageBoxResult.Yes)
                {
                    //Mettre la date de congé
                    dos.dateConge = dateLiberation.SelectedDate;

                    //Enregistrer le lit comme étant non-occupé
                    int numLit     = (int)dos.noLit;
                    Lit litPatient = Singleton.Instance.bd.Lits.Where(l => l.noLit == numLit).FirstOrDefault();
                    litPatient.occupe = false;

                    try
                    {
                        Singleton.Instance.bd.SaveChanges();
                        MessageBox.Show("Le patient a été libéré.");
                        afficherFacture(dos);
                        refresh();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }
Exemple #5
0
        private void btnEnregistrerDossier_Click_1(object sender, RoutedEventArgs e)
        {
            Dossier_Admission dossier = new Dossier_Admission();

            if (cbLitsDispos.SelectedItem == null)
            {
                MessageBox.Show("Nous ne pouvons admettre de patients qui n'ont pas de lits.", "Erreur", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (dtAdmissionPatientPrep.SelectedDate == null)
            {
                MessageBox.Show("Veuillez saisir une date d'admission", "Erreur", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            int numLit = Int32.Parse(cbLitsDispos.Text);

            dossier.noLit         = numLit;
            dossier.nasPatient    = Int32.Parse(txtNASPatient.Text);
            dossier.dateAdmission = (DateTime)dtAdmissionPatientPrep.SelectedDate;
            dossier.dateConge     = null;
            if (cbMedecinNomCompletPrep.SelectedItem != null)
            {
                dossier.idMedecin = (cbMedecinNomCompletPrep.SelectedItem as Medecin).idMedecin;
            }

            //Si chirurgie prevue mais chambre de chirurgie non-selectionnee, demander confirmation
            if (ouiChirurgie.IsChecked == true && cbDepartementPrep.SelectedIndex != 0)
            {
                var resultatLitAutre = MessageBox.Show("Une chirurgie est prévue pour ce patient, mais le lit sélectionné n'est pas dans le département de chirurgie. Est-ce exact?", "Attention", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (resultatLitAutre == MessageBoxResult.No)
                {
                    MessageBox.Show("Enregistrement annulé", "Annulation", MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }

                {
                    dossier.noLit = null;
                }
            }
            if (ouiChirurgie.IsChecked == true)
            {
                dossier.chirurgieProgrammee = true;
                dossier.dateChirurgie       = (DateTime)dtChirurgie.SelectedDate;
            }
            else
            {
                dossier.chirurgieProgrammee = false;
            }

            if (checkTelephone.IsChecked == true)
            {
                dossier.telephone = true;
            }

            if (checkTelevision.IsChecked == true)
            {
                dossier.television = true;
            }

            //Si patient a 16 ans ou moins mais le lit n'est pas en pediatrie, demander confirmation
            if (agePatient >= 0 && agePatient <= 16 && cbDepartementPrep.SelectedIndex != 1)
            {
                var resultatNonPediatrie = MessageBox.Show("Ce patient a 16 ans ou moins, mais le lit sélectionné n'est pas dans le département de pediatrie. Est-ce exact?", "Attention", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (resultatNonPediatrie == MessageBoxResult.No)
                {
                    return;
                }
                else
                {
                    dossier.noLit = null;
                }
            }

            //determiner si le patient devra payer pour le lit et demander une confirmation si c'est le cas
            dossier.litPayant = determinerSiPayant(numLit);

            if (determinerSiPayant(numLit) == true)
            {
                var reponse = MessageBox.Show("Ce patient devra prendre en charge ses frais de lit. Confirmez-vous l'assignation de ce lit?", "Attention", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (reponse == MessageBoxResult.No)
                {
                    return;
                }
            }

            //Ajouter le dossier (mais pas encore ajout dans la BD)
            Singleton.Instance.bd.Dossier_Admission.Add(dossier);

            //Marquer ce lit comme étant "occupé"
            int numLitAssigne = Int32.Parse(cbLitsDispos.Text);
            Lit litAssigne    = Singleton.Instance.bd.Lits.Where(l => l.noLit == numLitAssigne).FirstOrDefault();

            litAssigne.occupe = true;

            try
            {
                Singleton.Instance.bd.SaveChanges();
                MessageBox.Show("Dossier ajouté avec succes!", "Ajout", MessageBoxButton.OK, MessageBoxImage.Information);

                desactiverSectionDossier(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #6
0
        private void btnRechercherPatient_Click(object sender, RoutedEventArgs e)
        {
            bool inclureDossier = false;
            List <Dossier_Admission> dossiersRetrouves;
            Dossier_Admission        dossierSelectionne = null;
            Patient patientRetrouve = null;
            Parent  parentRetrouve  = null;
            int     recherche;

            bool ok = Int32.TryParse(txtRechercherNAS.Text, out recherche);

            if (!ok)
            {
                MessageBox.Show("Entrez seulement des chiffres sans espaces.");
                return;
            }

            //Rechercher patient
            patientRetrouve = Singleton.Instance.bd.Patients.Where(p => p.idPatient == recherche).FirstOrDefault();

            //Si patient non-trouve, terminer.
            if (patientRetrouve == null)
            {
                txtRechercherNAS.Text = "";
                MessageBox.Show("Patient non-trouvé. Essayez à nouveau ou remplissez les champs.", "Échec", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            string txtAfficher = "Patient retrouvé.\n";

            //Verifier si ce patient a un dossier existant
            dossiersRetrouves = Singleton.Instance.bd.Dossier_Admission.Where(d => d.nasPatient == patientRetrouve.idPatient).OrderByDescending(d => d.dateAdmission).ToList();

            //Si oui
            if (dossiersRetrouves.Count > 0)
            {
                //Si le dossier le plus recent est toujours actif, prendre en note ce dossier pour l'afficher.
                if (dossiersRetrouves.FirstOrDefault().dateConge == null)
                {
                    txtAfficher += "Ce patient n'a pas encore été libéré par un médecin et se trouve toujours dans l'hôpital. Voici le dossier en cours pour ce patient.";
                    MessageBox.Show(txtAfficher, "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                    inclureDossier     = true;
                    dossierSelectionne = dossiersRetrouves.FirstOrDefault();
                }
                //Sinon, demander si l'usager souhaite creer un nouveau dossier.
                else
                {
                    txtAfficher += "Ce patient compte au moins un dossier clos dans notre système. Souhaitez-vous créer un nouveau dossier d'admission pour ce patient?";
                    var ouvrirNouveau = MessageBox.Show(txtAfficher, "Question", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

                    //Si non, selectionner le dossier le plus recent et l'afficher.
                    if (ouvrirNouveau == MessageBoxResult.No)
                    {
                        MessageBox.Show("Voici le dossier le plus récent pour ce patient.", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                        inclureDossier     = true;
                        dossierSelectionne = dossiersRetrouves.FirstOrDefault();
                    }

                    else if (ouvrirNouveau == MessageBoxResult.Cancel)
                    {
                        btnAjouterPatientPrep.IsEnabled = true;
                        return;
                    }
                }
            }

            //Reinitialiser les deux autres sections
            reinitialiserSectionParent();
            reinitialiserSectionDossier();

            //Si le patient n'a pas de parent, activer la section parent (pour que l'on puisse ajouter un parent). Sinon, remplir la section avec les informations du parent puis désactiver la section.

            parentRetrouve = Singleton.Instance.bd.Parents.Where(p => p.refPatient == patientRetrouve.idPatient).FirstOrDefault();

            if (parentRetrouve == null)
            {
                activerSectionParent();
            }
            else
            {
                txtPrenomParent.Text    = parentRetrouve.prenomParent;
                txtNomParent.Text       = parentRetrouve.nomParent;
                txtAdresseParent.Text   = parentRetrouve.adresseParent;
                txtVilleParent.Text     = parentRetrouve.villeParent;
                cbProvinceParent.Text   = parentRetrouve.provinceParent;
                txtCPParent.Text        = parentRetrouve.cpParent;
                txtTelephoneParent.Text = parentRetrouve.noTelParent;
                desactiverSectionParent();
            }

            //S'il ne reste plus de lit disponibles dans l'hopital, interdire l'ajout de dossier
            if (inclureDossier == false && rechercherLits(0, 0) == 0)
            {
                MessageBox.Show("Il n'y a malheureusement aucun lit de disponible présentement dans tout l'hôpital. Vous ne pouvez donc pas ajouter de dossier pour ce patient pour l'instant. Réessayez plus tard.", "Hôpital plein", MessageBoxButton.OK, MessageBoxImage.Warning);
                btnAjouterPatientPrep.IsEnabled = true;
                return;
            }

            //Remplir les informations du patient dans l'interface.
            txtNomPatientAjouter.Text       = patientRetrouve.nomPatient;
            txtPrenomPatientAjouter.Text    = patientRetrouve.prenomPatient;
            txtCPAjouter.Text               = patientRetrouve.cpPatient;
            txtNASPatient.Text              = patientRetrouve.idPatient.ToString();
            cbProvinceAjouter.Text          = patientRetrouve.provincePatient;
            dtNaissanceAjouter.SelectedDate = patientRetrouve.dateNaissancePatient;
            txtAdressePatient.Text          = patientRetrouve.adressePatient;
            txtVilleAjouter.Text            = patientRetrouve.villePatient;
            txtTelephoneAjouter.Text        = patientRetrouve.noTelPatient;

            if (patientRetrouve.typeLitPrefere == null)
            {
                nonLitPref.IsChecked       = true;
                cbTypePrefere.SelectedItem = null;
            }
            else
            {
                ouiLitPref.IsChecked        = true;
                cbTypePrefere.SelectedIndex = (int)patientRetrouve.typeLitPrefere - 1;;
                cbTypePrefere.IsEnabled     = false;
            }

            if (patientRetrouve.idCompagnie == null)
            {
                nonAssurance.IsChecked          = true;
                cbAssuranceNomComplet.IsEnabled = false;
            }
            else
            {
                ouiAssurance.IsChecked = true;
                cbAssuranceNomComplet.SelectedIndex = (int)patientRetrouve.idCompagnie - 1;
                cbAssuranceNomComplet.IsEnabled     = false;
            }

            //Preselectionner des lits pour des nouveaux dossiers
            if (inclureDossier == false)
            {
                calculerAge(patientRetrouve.dateNaissancePatient);

                if (patientRetrouve.typeLitPrefere == null)
                {
                    preSelectionnerLitsDispos(0);
                }
                else
                {
                    preSelectionnerLitsDispos((int)patientRetrouve.typeLitPrefere);
                }

                activerSectionDossier();
            }
            //Pour les cas où l'on souhaite afficher un dossier existant, afficher le dossier
            else
            {
                dtAdmissionPatientPrep.SelectedDate = dossierSelectionne.dateAdmission;
                dtCongePatientPrep.SelectedDate     = dossierSelectionne.dateConge;
                dtChirurgie.SelectedDate            = dossierSelectionne.dateChirurgie;

                if (dossierSelectionne.chirurgieProgrammee == false)
                {
                    nonChirurgie.IsChecked = true;
                }
                else
                {
                    ouiChirurgie.IsChecked = true;
                }

                List <Lit> litsDisponibles = Singleton.Instance.bd.Lits.Where(l => l.noLit == dossierSelectionne.noLit).ToList();
                cbLitsDispos.ItemsSource = litsDisponibles;
                cbTypeLitPrep.Text       = dossierSelectionne.Lit.Type_Lit.descTypeLit;
                cbDepartementPrep.Text   = dossierSelectionne.Lit.Departement.nomDepartement;
                if (dossierSelectionne.idMedecin != null)
                {
                    cbMedecinNomCompletPrep.Text = dossierSelectionne.Medecin.prenomMedecin + " " + dossierSelectionne.Medecin.nomMedecin;
                    txtSpecialitePrep.Text       = dossierSelectionne.Medecin.specialiteMedecin;
                }


                if (dossierSelectionne.telephone == true)
                {
                    checkTelephone.IsChecked = true;
                }
                else
                {
                    checkTelephone.IsChecked = false;
                }

                if (dossierSelectionne.television == true)
                {
                    checkTelevision.IsChecked = true;
                }
                else
                {
                    checkTelevision.IsChecked = false;
                }

                desactiverSectionDossier(true);
            }

            desactiverSectionPatient();
        }