Eczane-Otomasyon
Eczane-Otomasyon copied to clipboard
Eczane Otomasyonu Veri Tabanı ve Yönetim Sistemi Ödevi
ECZANE OTOMASYONU
Direkt olarak indirip çalıştırmak için tıklayın
Access DB kullanabilmek için bu paketi indirebilirsiniz
Erciyes Üniversitesi
Mühendislik Fakültesi
Bilgisayar Mühendisliği Bölümü
VTYS Vize Ödevi
Numara:1030516689
Ad Soyad:Emrah Batıgün
Numara:1030516477
Ad Soyad:Kadir Ek
Numara:1030516495
Ad Soyad:Abdulhamit Akaslan
Döküman Markdown ile stackedit.io sitesinde hazırlandı. Daha iyi bir deneyim için .html uzantılı dosyadan çalıştırınız.
Bu otomasyon ile eczanenin çalışma sistemi daha kolay anlatılabilir. Bu vesileyle böyle bir görselleştirme yoluna gittik. C# Windows Form kullanılarak hazırlanmıştır. UI Framework olarak MaterialSkin ve Bunifu kullanılmıştır.
Otomasyonda hem doktor hem de eczane girişi bulunmaktadır.

Hasta doktora gider. Doktorun sisteminde bütün hastalar mevcuttur.

Doktor hastayı TC veya isim soyisim ile bulabilir.

Doktor hastayı seçtikten sonra ilaç yazma ekranı gelir

Yazacağı ilacın yaş sınırı bulunmaktadır. Bu yüzden yazacağı ilacın hastanın yaşına uygun olması gerekir.

Doktor arama yaparak ta ilaçları bulabilir.

Doktorun yazdığı ilaç sayısı sağ alttaki buttonda gösterilir ve o button'a bastığında yazılan ilaçlar sayfasına gider.

Yazılan ilaçlar bu sayfada gösterilir.

Doktor reçeteyi yazdıra bastığı zaman reçete sisteme yüklenir ve reçete bir numaraya sahip olur. Bu numarayla hasta eczaneye gidip ilaçlarını alabilir.

Doktor E-Reçete sorgulaması yapabilir.

Sıra hastanın eczaneye gitmesine geliyor.

Hasta eczaneye gittiği zaman eczane personeli reçete numara veya hasta kimlik numarasını alarak E-Reçete sorgu yapıyor.

Hastanın sigorta türüne göre indirim yapılıyor. Eğer sigorta yoksa indirim yapılmıyor. Satış yapıldıktan sonra satılan ilaçlar, satın alan hasta, ne zaman satın alındığı ve hangi personelin satışı yaptığı veritabanına ekleniyor.

Reçete satışı yapıldıysa bu reçete üzerinden tekrar ilaç satışı yapılamıyor.

Eczane sisteminde hasta sorgulama, ilaçlar ve diğer ürünler sekmeleride mevcut.


Diğer ürünler kısmında ürünlere çift tıklama yapılarak sepete atılabilir.

Eklenen ürünler sepete gelir ve ardından satış yapılır.

Satış yapıldıktan sonra satılan ürünler, ne zaman satıldığı ve hangi personelin sattığı veritabanına kayıt edilmektedir.

NORMALİZASYON
- Birinci Normal Form (1NF)
- İkinci Normal Form (2NF)
- Üçüncü Normal Form (3NF)
- Dördünü Normal Form (4NF)
- Beşinci Normal Form (5NF)
Bu Normal formlardan ilk üçü çok kullanılırken son ikisinin kullanımı daha azdır. İlk üç normal form kayıt güncelleme, kayıt silme ve kayıt bulmada kolaylık sağlar.
Normalizasyon öncesi Hasta Tablosu

1. Normalizasyon
Veri tekrarı olduğu için 1. normalizasyonu uyguluyoruz.
Hasta Tablosu

2. Normalizasyon
Bir tablo içinde tanımlı ancak anahtar olmaya uygun sütunlar anahtar olarak tanımlanmalı ve tanımlı birincil anahtar sütunlara bağlanmalıdır. Bu yüzden ilaçlar ayrı bir tablo olması gerekiyor.
Hasta Tablosu

İlaç Tablosu

3. Normalizasyon
2NF'de karşılaşılan sorunları çözmek için geçişli bağımlılıkları da ortadan kaldırmak gerekmektedir. Ayrıca Hasta İlaçları adında yeni bir tablo yapıp gereksiz sütunları ortadan kaldırıyoruz. Bu tabloda Hasta TC ve Ilaç Kodu olması yeterli.
HastaTablosu

İlaç Tablosu

Hasta İlaçları Tablosu

İl Tablosu

İlçe Tablosu

Sigorta Tablosu

Bu şekilde normalizasyonu yapıyoruz. Veri tekrarı ve karmaşıklığı ortadan kaldırmış oluyoruz.
VERİTABANI ER DİYAGRAMI
ERD Tam Boyut
SORGULAR
1- Hayat Eczanesi stoğuna ilaç temin eden tedarikçiler
SELECT Eczane.Ad, StogaGelenIlaclar.TedarikciId, Tedarikci.FirmaAdi
FROM Tedarikci INNER JOIN (Eczane INNER JOIN StogaGelenIlaclar
ON Eczane.Id = StogaGelenIlaclar.EczaneId)
ON Tedarikci.Id = StogaGelenIlaclar.TedarikciId
WHERE (((Eczane.Ad)="Hayat Eczanesi"));

2- Bursa'da çalışan ve personel sayısı 2 den fazla olan eczanelerdeki personellerin cep telefonu numaraları
SELECT Sehirler.[Plaka Kodu], Eczane.PersonelSayisi,
EczanePersonelleri.CepNo, Sehirler.İl
FROM (Ilceler
INNER JOIN (Eczane INNER JOIN EczanePersonelleri
ON Eczane.Id = EczanePersonelleri.EczaneId)
ON Ilceler.IlceId = Eczane.İlceId)
INNER JOIN Sehirler ON Ilceler.İl = Sehirler.[Plaka Kodu]
WHERE (((Sehirler.[Plaka Kodu])=16) AND ((Eczane.PersonelSayisi)>2));

3- Çiçek Eczanesi'nde adı Ahmet olan personelin sattığı ilaçların listesi ve sattığı tarihler
SELECT EczanePersonelleri.Ad, EczanePersonelleri.Soyad,
Eczane.Ad, Ilaclar.UrunAdi, SatilanIlaclar.SatisTarihi
FROM Ilaclar
INNER JOIN ((Eczane
INNER JOIN EczanePersonelleri
ON Eczane.Id = EczanePersonelleri.EczaneId)
INNER JOIN SatilanIlaclar
ON EczanePersonelleri.Id = SatilanIlaclar.SatanPersonelId)
ON Ilaclar.Id = SatilanIlaclar.IlacId
WHERE (((EczanePersonelleri.Ad)="Ahmet") AND ((Eczane.Ad)="Çiçek Eczanesi"));

4- Stoğunda 50' den fazla maske bulunan eczaneler ve o eczanenin müdürü
SELECT Eczane.Ad, StogaGelenYanUrunler.UrunAdi,
StogaGelenYanUrunler.Adet, EczanePersonelleri.Ad,
EczanePersonelleri.Soyad, EczanePersonelleri.Unvan
FROM (Eczane
INNER JOIN EczanePersonelleri
ON Eczane.Id = EczanePersonelleri.EczaneId)
INNER JOIN StogaGelenYanUrunler
ON (EczanePersonelleri.EczaneId = StogaGelenYanUrunler.EczaneId)
AND (Eczane.Id = StogaGelenYanUrunler.EczaneId)
WHERE (((StogaGelenYanUrunler.UrunAdi)="Maske")
AND ((StogaGelenYanUrunler.Adet)>50)
AND ((EczanePersonelleri.Unvan)="Müdür"));

5- İade edilen yan ürünleri satan personelin adı,soyadı, işe giriş tarihi, sattığı ürünün adı ve hangi eczanede çalıştığı
SELECT EczanePersonelleri.Ad,
EczanePersonelleri.Soyad,
EczanePersonelleri.IseGirisTarihi,
YanUrunler.UrunAdi, IadeEdilenYanUrunler.IadeTarihi, Eczane.Ad
FROM (Eczane INNER JOIN (EczanePersonelleri
INNER JOIN IadeEdilenYanUrunler
ON (EczanePersonelleri.Id = IadeEdilenYanUrunler.IadeAlanPersonelId)
AND (EczanePersonelleri.Id = IadeEdilenYanUrunler.SatanPersonelId))
ON (Eczane.Id = EczanePersonelleri.EczaneId))
INNER JOIN YanUrunler ON IadeEdilenYanUrunler.Id = YanUrunler.Id;

6- 6 numaralı reçetedeki ilaçlar, yazan doktor, verilen hasta, veren eczane ve satan personel
SELECT Recete.ReceteId, Ilaclar.UrunAdi,
Doktor.Ad, Doktor.Soyad, Sehirler.İl,
Ilceler.Ilce, EczanePersonelleri.Ad, EczanePersonelleri.Soyad,
Hasta.Ad, Hasta.Soyad, Ilaclar.Fiyat
FROM Hasta INNER JOIN ((Ilceler
INNER JOIN ((Ilaclar INNER JOIN ((Eczane
INNER JOIN EczanePersonelleri
ON Eczane.Id = EczanePersonelleri.EczaneId)
INNER JOIN SatilanIlaclar
ON EczanePersonelleri.Id = SatilanIlaclar.SatanPersonelId)
ON Ilaclar.Id = SatilanIlaclar.IlacId)
INNER JOIN ((Hastane INNER JOIN Doktor
ON Hastane.Id = Doktor.HastaneId)
INNER JOIN Recete ON Doktor.Id = Recete.YazanDoktorId)
ON SatilanIlaclar.ReceteId = Recete.ReceteId)
ON Ilceler.IlceId = Hastane.IlceId)
INNER JOIN Sehirler ON Ilceler.İl = Sehirler.[Plaka Kodu])
ON Hasta.HastaTc = Recete.HastaTcKimlikNo
WHERE (((Recete.ReceteId)=6));

7 - 1 numaralı receteyi yazan doktorun adı, soyadı, çalıştığı hastane, meslekteki deneyimi çalıştığı il
SELECT Recete.ReceteId, Doktor.Ad, Doktor.Soyad,
Doktor.Tecrube, Sehirler.İl
FROM (Ilceler INNER JOIN ((Hastane
INNER JOIN Doktor ON Hastane.Id = Doktor.HastaneId)
INNER JOIN Recete ON Doktor.Id = Recete.YazanDoktorId)
ON Ilceler.IlceId = Hastane.IlceId)
INNER JOIN Sehirler ON Ilceler.İl = Sehirler.[Plaka Kodu]
WHERE (((Recete.ReceteId)=1));

8- Tarık Saklı adlı hastanın aldığı ilaçların toplam fiyatı
SELECT Sum(Ilaclar.Fiyat) AS ToplaFiyat
FROM Ilaclar
INNER JOIN ((Hasta
INNER JOIN Recete ON Hasta.HastaTc = Recete.HastaTcKimlikNo)
INNER JOIN IlacRecete ON Recete.ReceteId = IlacRecete.ReceteId)
ON Ilaclar.Id = IlacRecete.IlacId
HAVING (((Hasta.Ad)="Tarık") AND ((Hasta.Soyad)="SAKLI"));

9- 18.05.2020 tarihinde satılan ilaçların adı, ruhsat sahibi, ruhsat numarası, kimin sattığı ve satılan eczanenin adı
SELECT SatilanIlaclar.SatisTarihi, Ilaclar.UrunAdi,
Ilaclar.RuhsatSahibi, Ilaclar.RuhsatNumarasi,
EczanePersonelleri.Ad, EczanePersonelleri.Soyad, Eczane.Ad
FROM Ilaclar INNER JOIN ((Eczane
INNER JOIN EczanePersonelleri ON Eczane.Id = EczanePersonelleri.EczaneId)
INNER JOIN SatilanIlaclar
ON EczanePersonelleri.Id = SatilanIlaclar.SatanPersonelId)
ON Ilaclar.Id = SatilanIlaclar.IlacId
WHERE (((SatilanIlaclar.SatisTarihi)=#5/18/2020#));

10 - Murat HAS adlı çalışanın sattığı ilaçların adı, sattığı tarihler, satış şekli ve hangi hastalara sattığı
SELECT EczanePersonelleri.Ad, EczanePersonelleri.Soyad,
Ilaclar.UrunAdi, SatilanIlaclar.SatisTarihi,
SatilanIlaclar.SatisSekli, Hasta.Ad, Hasta.Soyad
FROM (Hasta INNER JOIN Recete
ON Hasta.HastaTc = Recete.HastaTcKimlikNo)
INNER JOIN (Ilaclar INNER JOIN (EczanePersonelleri
INNER JOIN SatilanIlaclar
ON EczanePersonelleri.Id = SatilanIlaclar.SatanPersonelId)
ON Ilaclar.Id = SatilanIlaclar.IlacId)
ON Recete.ReceteId = SatilanIlaclar.ReceteId
WHERE (((EczanePersonelleri.Ad)="Murat")
AND ((EczanePersonelleri.Soyad)="HAS"));

11- Mart 2020'den sonra satılan yan ürünlerin adı, satış tarihi, kaç adet satıldığı, satış şekli, hangi personelin sattığı, satan personelin aylık maaşı ve satan personelin hangi eczanede çalıştığı
SELECT SatilanYanUrunler.SatisTarihi, SatilanYanUrunler.UrunAdi,
SatilanYanUrunler.Adet, SatilanYanUrunler.SatisSekli,
EczanePersonelleri.Ad, EczanePersonelleri.Soyad,
EczanePersonelleri.Maaş, Eczane.Ad
FROM YanUrunler INNER JOIN ((Eczane
INNER JOIN EczanePersonelleri ON Eczane.Id = EczanePersonelleri.EczaneId)
INNER JOIN SatilanYanUrunler
ON EczanePersonelleri.Id = SatilanYanUrunler.SatanPersonelId)
ON YanUrunler.Id = SatilanYanUrunler.Id
WHERE (((SatilanYanUrunler.SatisTarihi)>#3/31/2020#));

12- SGK'lı olan hastaların adı soyadı, hangi şehirde yaşadığı, hangi ilaçları aldığı, ilaçların hangi etkin maddeyi içerdiği, hastanın doktorunun adı soyadı ve uzmanlık alanı
SELECT Hasta.SigortaTuru, Hasta.Ad, Hasta.Soyad, Sehirler.İl,
Ilaclar.UrunAdi, Ilaclar.EtkinMadde, Doktor.Ad, Doktor.Soyad,
Doktor.UzmanlıkAlani
FROM Doktor INNER JOIN (((Ilceler
INNER JOIN (Hasta INNER JOIN Recete
ON Hasta.HastaTc = Recete.HastaTcKimlikNo) ON Ilceler.IlceId = Hasta.IlceId)
INNER JOIN Sehirler
ON Ilceler.İl = Sehirler.[Plaka Kodu])
INNER JOIN (Ilaclar INNER JOIN SatilanIlaclar
ON Ilaclar.Id = SatilanIlaclar.IlacId)
ON Recete.ReceteId = SatilanIlaclar.ReceteId)
ON Doktor.Id = Recete.YazanDoktorId
WHERE (((Hasta.SigortaTuru)="SGK"));

13- 2010'dan itibaren işe giren personellerin işe giriş tarihi adı soyadı,ünvanı, aylık maaşı, sattığı ilaçların adı, sattığı ilaçların satış tarihi, çalıştığı eczanenin adı ve eczanenin hangi şehirde bulunduğu
SELECT EczanePersonelleri.IseGirisTarihi, EczanePersonelleri.Ad,
EczanePersonelleri.Soyad, EczanePersonelleri.Unvan,
EczanePersonelleri.Maaş, Ilaclar.UrunAdi,
SatilanIlaclar.SatisTarihi, Eczane.Ad, Sehirler.İl
FROM (Ilaclar INNER JOIN ((Ilceler
INNER JOIN (Eczane
INNER JOIN EczanePersonelleri
ON Eczane.Id = EczanePersonelleri.EczaneId)
ON Ilceler.IlceId = Eczane.İlceId)
INNER JOIN SatilanIlaclar
ON EczanePersonelleri.Id = SatilanIlaclar.SatanPersonelId)
ON Ilaclar.Id = SatilanIlaclar.IlacId)
INNER JOIN Sehirler ON Ilceler.İl = Sehirler.[Plaka Kodu]
WHERE (((EczanePersonelleri.IseGirisTarihi)>#12/31/2009#));

14- İl, ilçe ve ünvanlara göre çalışanların maaşları, hangi eczanede çalıştıkları ve çalıştıkları eczanenin personel sayısı
SELECT Sehirler.İl, Ilceler.Ilce, EczanePersonelleri.Unvan,
EczanePersonelleri.Maaş, Eczane.PersonelSayisi, Eczane.Ad
FROM (Ilceler INNER JOIN (Eczane
INNER JOIN EczanePersonelleri
ON Eczane.Id = EczanePersonelleri.EczaneId)
ON Ilceler.IlceId = Eczane.İlceId) INNER JOIN Sehirler
ON Ilceler.İl = Sehirler.[Plaka Kodu];

15- Özel hastanede çalışan doktorların ad soyad ve uzmanlık alanları, yazdıkları ilaçlar, yazılan hastanın ad,soyad ve doğum tarihleri, yazılan ilacı satan eczane personelinin adı,soyadı, yazılan ilacı hastaya veren eczane
SELECT Hastane.Tur, Doktor.Ad, Doktor.Soyad, Doktor.UzmanlıkAlani,
Ilaclar.UrunAdi, Hasta.Ad, Hasta.Soyad, Hasta.DogumTarihi
FROM Hasta INNER JOIN ((((Hastane
INNER JOIN Doktor ON Hastane.Id = Doktor.HastaneId)
INNER JOIN Recete ON Doktor.Id = Recete.YazanDoktorId)
INNER JOIN (Ilaclar INNER JOIN IlacRecete
ON Ilaclar.Id = IlacRecete.IlacId)
ON Recete.ReceteId = IlacRecete.ReceteId)
INNER JOIN SatilanIlaclar
ON (Recete.ReceteId = SatilanIlaclar.ReceteId)
AND (IlacRecete.ReceteId = SatilanIlaclar.ReceteId)
AND (Ilaclar.Id = SatilanIlaclar.IlacId))
ON Hasta.HastaTc = Recete.HastaTcKimlikNo
WHERE (((Hastane.Tur)="Özel"));
