Medula ile ilgili kısım;
Önce sistemin çalışma biçimini kavramanız gerekiyor. Provizyon nedir?, Başvuru Nedir? Başvuru numarası ile takip numarasının ilişkisi nedir? Servis nesneleri içindeki alanlar hangi bilgileri taşır? vs vs.
Kılavuzu okuyarak ve bir hastanenin işleyişini analiz ederek bu bilgileri edinmeniz temel bir gereksinim.
Kodlamayla ilgili kısım;
Web servis nedir? Servis ettiği şey nedir? Sorularına yanıt arayarak başlayabilirsiniz. Bu sizi SOAP nedir sorusuna götürür o başka bir soruya derken bu konuda da medula servislerini kullanacak kadar bilgiye erişirsiniz. Bu soruların yanıtlarını google'da yaptığınız aramalarla kolaylıkla bulabilirsiniz.
Medula servisleri size medula programcılarının ihtiyaçlara göre dizayn ettiği bazı sınıfları ve bu sınıflara ait metotları kullanma ve bu yolla kendi sisteminizle medula sistemi arasında veri alışverişi yapma olanağı sağlıyor.
Herhangi bir web sitesini browse etmek için ne yaparız? URL'i yazıp git düğmesine basarız browser'da bize o URI ile tanımlanmış kaynaktaki bilgiyi uygun formatta bize getirir.
Ya da web üzerinde bir formu doldurdup kaydet, gönder gibi düğmelere bastığımızda ne olur? Ürettiğimiz bir kaynağı uzaktaki bir noktada saklamak üzere iletiriz.
Web Servisleri de bu işleri görmenin alternatif bir yolu olarak düşünebiliriz.
Servislerin kullanılış biçimleri de birbirine benzer.
Örneğin Medula Sisteminden bir takibi okumak için aşağıdaki gibi bir yapıyı kullanmanız gerekir, temelde de hangi işi yapacaksanız yapın bu sistemde buna benzer bir yapıyı kullanacaksınız. Sadece taşınan verinin anlamı değişecek, kullanılacak nesneler ve metotlar değişecek ama prensipler açıklamaya çalıştığım gibi aynı kalacak.
Kolay gelsin, iyi çalışmalar.
//Servisin bir örneğinin yaratılması
HastaKabulIslemleriServiceWse hki = new HastaKabulIslemleriServiceWse();
hki.Url = "https://medula.sgk.gov.tr/medula/hastane/hastaKabulIslemleriWS";
//Servise erişim için kimlik denetimi
hki.RequestSoapContext.Security.Tokens.Clear();
hki.RequestSoapContext.Security.Tokens.Add(new UsernameToken("XXXX", "XXXXX",
PasswordOption.SendPlainText));
hki.RequestSoapContext.Security.MustUnderstand = false;
hki.RequestSoapContext.Security.Timestamp.TtlInSeconds = 1000000;
//Göndereceğimiz istek için istek metoduna geçeceğimiz nesnenin örneğinin yaratılması ve özelliklerinin belirlenmesi
takipOkuGirisDVO takipOku = new takipOkuGirisDVO();
takipOku.saglikTesisKodu = 11231231312;
takipOku.takipNo = "XXXXXX";
//Servisin sunduğu metodun çağrılması ve metodun döndürdüğü tip ne ise o tipte bir nesneye eşlenmesi
TakipDVO cevap = hki.hastaKabulOku(takipOku);
//İhtiyaca göre dönen yanıtın gösterimi veya loglanması
MessageBox.Show(cevap.sonucMesaji);
Not: Uzunca bir zamandır medula sistemi için kod yazmıyorum, metotlar servisler değişmiş olabilir ben sadece açıklayıcı olsun diye bu örneği paylaşıyorum.