MEDULA VE ARRAY DEĞER GÖNDERİMİ
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
MEDULA VE ARRAY DEĞER GÖNDERİMİ
Merhaba Medula diye bişey çıktı karşıma ve programıma entegre etmem gerek WSDL,DVO bayağı cebelleştim, mantığını çözdüm ama bir yerde takıldım bana yardım edebilecek ustalara şimdiden teşekkür ederim.
Sorunum Şu:
Medula version 3 göre WSDL leri import ettim ve takipKodu alma silme kısımlarını yaptım oldu
ama HizmetKayitGirisiDVO da string ve integer gönderilen kısımlarda tamam ama Array gönderilen kısımlar mesela DigerIslemBilgileriDVO , MuayeneBilgileriDVO gibi alanlara kendi atnımladığım array ları atayamıyorum hata veriyor, DVO ların içersindeki değişkenlere atıyorum gene hata veriyor.
bahsettiğim sorunu aşacak küçük bir kod örneği gönderecek arkadaşlara teşekkür ederim.
Sorunum Şu:
Medula version 3 göre WSDL leri import ettim ve takipKodu alma silme kısımlarını yaptım oldu
ama HizmetKayitGirisiDVO da string ve integer gönderilen kısımlarda tamam ama Array gönderilen kısımlar mesela DigerIslemBilgileriDVO , MuayeneBilgileriDVO gibi alanlara kendi atnımladığım array ları atayamıyorum hata veriyor, DVO ların içersindeki değişkenlere atıyorum gene hata veriyor.
bahsettiğim sorunu aşacak küçük bir kod örneği gönderecek arkadaşlara teşekkür ederim.
-
- Üye
- Mesajlar: 1
- Kayıt: 08 Oca 2009 05:43
Re: MEDULA VE ARRAY DEĞER GÖNDERİMİ
selam kardeş bende bu işle uğraşmaya başladım ama mantığını hala çözemedim eğer senin için bi mahsuru yoksa paylaşabilirmisin provizyon alma gönderme işlemleri nasıl oluyor 1 haftadır uğrasıyorum ama kayda değer bişi bulamaıdm tsk ederim
Re: MEDULA VE ARRAY DEĞER GÖNDERİMİ
selam , ben de bu işle epey kafa yorduktan sonra şöyle bir formül kullanmaya karar verdim ve şimdi rahatım.
Bir defa WSDL THTTPRIO ile çalışmıyor ( yani array şekilleri) . bu Delphi deki bug dan kaynaklanıyor.. Delphi 7 de de Delphi 2007 dede başaramadım. sonunda THTTPReqResp kullanmaya karar verdim direkt. Yani gidecek olan bilgileri kendim XML formata dönüştürüp öyle post edip ve yine gelen XML stream i de parse etmek. Biraz zahmetli ama çözebildiğim için sevinçliyim yine de. POST edilecek yapı mesela şu şekildeydi:
yani birden fazla sayıda ilacın barkod , serino, son kull. tarihi gibi bilgiler gönderilmesi gerekiyor ve gelen cevap bilgisi de yine böyle array tipte. Bunları cliendataset ten alıp gelen cevabı da yine datasete geçirdim. Bir deneyin , olmazsa kodları da yazarım buradan.. Ya da WSDL adresini verin onun üstünde örnek kod yazarız..
Bir defa WSDL THTTPRIO ile çalışmıyor ( yani array şekilleri) . bu Delphi deki bug dan kaynaklanıyor.. Delphi 7 de de Delphi 2007 dede başaramadım. sonunda THTTPReqResp kullanmaya karar verdim direkt. Yani gidecek olan bilgileri kendim XML formata dönüştürüp öyle post edip ve yine gelen XML stream i de parse etmek. Biraz zahmetli ama çözebildiğim için sevinçliyim yine de. POST edilecek yapı mesela şu şekildeydi:
Kod: Tümünü seç
<DT>A</DT>
<FR>8680007900019</FR>
<TO>8680010000010</TO>
<URUNLER>
<URUN>
<GTIN>08680007201246</GTIN>
<BN>BN01</BN>
<SN>ZK22</SN>
<XD>2010-05-22</XD>
</URUN> <URUN>
<GTIN>08680007201246</GTIN>
<BN>BN01</BN>
<SN>ZK22</SN>
<XD>2010-05-22</XD>
</URUN>
</URUNLER>
Re: MEDULA VE ARRAY DEĞER GÖNDERİMİ
TEST İÇİN WSDL linkleri aşağıda ancak şöyle bir sorun var Medula 2 de genel test için Kullanıcı adı,şifre ve tesis kodu veriliyordu ama Version 3 te yani aşağıdaki WSDL leri test edebilmek için gerçek bir sağlık kuruluşunun şifreleri ve diğer bilgileri gerekiyor. Alacağınız sağlık kuruluşunun sözleşme branşı ne ise sadece o branşlara ait bilgi gönderebiliyorsunuz aksi takdirde uyarı mesajı geliyor.
Varyemez kardeş THTTPIO Çalışıyor senin yaptığın yöntemi denemedim ama bana bu yetiyor.
Hasta Kabul Süreci:
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Hizmet Kayıt Süreci:
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Faturalama Süreci:
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Yan Süreçler:
Rapor Bilgisi Kayıt :
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Yardımcı web servisler :
http://saglikt.sgk.gov.tr/medulaws/serv ... emler.wsdl
Varyemez kardeş THTTPIO Çalışıyor senin yaptığın yöntemi denemedim ama bana bu yetiyor.
Hasta Kabul Süreci:
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Hizmet Kayıt Süreci:
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Faturalama Süreci:
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Yan Süreçler:
Rapor Bilgisi Kayıt :
http://saglikt.sgk.gov.tr/medulaws/serv ... mleri.wsdl
Yardımcı web servisler :
http://saglikt.sgk.gov.tr/medulaws/serv ... emler.wsdl
Re: MEDULA VE ARRAY DEĞER GÖNDERİMİ
Selam Varyemez. Bende benzer bir problemle yakşık 15 gündür uğraşıyorum. Benimkisi İlaç Eczacılık Gn.Md. (iegm)'ne İlaç Takip Sistemi bünesinde yapılacak XML veri transferi. Yöntem aynı. Bir WDSL dökümanı var. Bunu Delphi de import ettim. Bana bir .PAS kodu üretti. Bunu Uses başlığı altında programıma dahil ettim Daha sonra tanımlı değişkene parametre olarak istenen bilgileri giriyorum ancak POST edemiyorum. Bana verilen bir kullanıcı adı, Parola ve GTIN numaraları var. Bunları kullanarak yapmaya çalıştım olmadı. Yardım edersen çok sevinirim.varyemez yazdı:selam , ben de bu işle epey kafa yorduktan sonra şöyle bir formül kullanmaya karar verdim ve şimdi rahatım.
Bir defa WSDL THTTPRIO ile çalışmıyor ( yani array şekilleri) . bu Delphi deki bug dan kaynaklanıyor.. Delphi 7 de de Delphi 2007 dede başaramadım. sonunda THTTPReqResp kullanmaya karar verdim direkt. Yani gidecek olan bilgileri kendim XML formata dönüştürüp öyle post edip ve yine gelen XML stream i de parse etmek. Biraz zahmetli ama çözebildiğim için sevinçliyim yine de. POST edilecek yapı mesela şu şekildeydi:
yani birden fazla sayıda ilacın barkod , serino, son kull. tarihi gibi bilgiler gönderilmesi gerekiyor ve gelen cevap bilgisi de yine böyle array tipte. Bunları cliendataset ten alıp gelen cevabı da yine datasete geçirdim. Bir deneyin , olmazsa kodları da yazarım buradan.. Ya da WSDL adresini verin onun üstünde örnek kod yazarız..Kod: Tümünü seç
<DT>A</DT> <FR>8680007900019</FR> <TO>8680010000010</TO> <URUNLER> <URUN> <GTIN>08680007201246</GTIN> <BN>BN01</BN> <SN>ZK22</SN> <XD>2010-05-22</XD> </URUN> <URUN> <GTIN>08680007201246</GTIN> <BN>BN01</BN> <SN>ZK22</SN> <XD>2010-05-22</XD> </URUN> </URUNLER>
Re: MEDULA VE ARRAY DEĞER GÖNDERİMİ
Bu örnekte HTTPRIO kullanmadığımız için WSDL i import etmeye ve unit içinde kullanmaya gerek yok. ancak yine de import edip bir dosyaya saklamakta fayda var çünkü URL ve servis adlarını buradan alıyoruz. yukarıdaki örnek xml formatını mesela aşağıdaki kodlarla oluşturuyoruz.
Bu XML verisini merak edip bir memo ya yazdırabilirsin.. sonra iş geliyor bunu POST etmeye...
bu da taslak görüntü. gelen cevaptaki uyarı kodlarına dikkat.
http://www.baliklieczanesi.com/alimbild.jpg
Kolay gelsin..
Ecz. Mehmet Turan Oruç
Kod: Tümünü seç
var
Stream: TMemoryStream;
StrStream: TStringStream;
XMLdata: TStringList;
xml1: Tstringlist;
begin
XMLData := Tstringlist.Create;
xml1:= tstringlist.Create;
XMLData.Clear;
form1.Table1.Open;
form1.Table1.First;
XMLData.Add('<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">');
XMLData.Add('<SOAP-ENV:Body>');
XMLData.Add('<m:EczaneMalAlimBildirim xmlns:m="http://its.iegm.gov.tr/bildirim/BildirimReceiver/v1/Alim/Eczane">');
XMLData.Add('<DT>A</DT>');
XMLData.Add('<FR>8680007900019</FR>');
XMLData.Add('<TO>8680010000010</TO>');
XMLData.Add('<URUNLER>'); // aşağıda veritabanı tablomuzdan karekod bilgilerini çekiyoruz
while not TABLE1.Eof do
begin
XMLData.Add('<URUN>');
XMLData.Add('<GTIN>'+ Form1.Table1GTIN.Value+'</GTIN>'); //barkod
XMLData.Add('<BN>'+ Form1.Table1BN.Value+'</BN>'); // batch no
XMLData.Add('<SN>'+ Form1.Table1SN.Value+'</SN>'); // seri no
XMLData.Add('<XD>'+ form1.Table1XD.Value+'</XD>'); // son kull tar. YYYY-MM-DD formda string
XMLData.Add('</URUN>');
table1.Next;
end;
//table1.Close;
XMLData.Add('</URUNLER>');
XMLData.Add('</m:EczaneMalAlimBildirim>');
XMLData.Add('</SOAP-ENV:Body>');
XMLData.Add('</SOAP-ENV:Envelope>'); // XML sonu
// memo1.Lines:=XMLData;
Bu XML verisini merak edip bir memo ya yazdırabilirsin.. sonra iş geliyor bunu POST etmeye...
Kod: Tümünü seç
stream:=tmemorystream.Create;
try
HTTPReqresp1.URL:= 'http://212.174.130.240:8080/ITSWebServices/EczaneMalAlimReceiverService'; // bunu wsdl den aldık
HTTPReqResp1.UseUTF8InHeader:=true;
HTTPReqResp1.SoapAction:= 'EczaneMalAlimReceiverService';
HTTPReqResp1.UserName:='balikliecz1'; //kullanıcı adı ve şifre
HTTPReqresp1.Password:='şifrexxxxxx';
HTTPReqresp1.Execute(XMLData.Text,Stream); // burada oluşturduğumuz xml i post ediyoruz. cevap Stream içinde dönecek
Strstream:= Tstringstream.Create('');
try
Strstream.CopyFrom(stream,0);
Memo2.Text:= Strstream.DataString; // gelen cevabı memo içinde görebilirsin. bunu dosyaya yazdırıp sonra bir datasete alacaz
xml1.Add(memo2.Text);
xml1.SaveToFile('mal_alim_cevap.xml'); // gelen cevap bu dosyada
finally
strstream.Free;
end;
finally
stream.Destroy;
end;
// bu xml i datasette görmek için kapatıp açmak yeterli
clientdataset1.Active:=false;
clientdataset1.Active:=true;
end;
http://www.baliklieczanesi.com/alimbild.jpg
Kolay gelsin..
Ecz. Mehmet Turan Oruç
Re: MEDULA VE ARRAY DEĞER GÖNDERİMİ
Bu hızlı ve detaylı cevabınız için çok teşekkür ederim.
Re: MEDULA VE ARRAY DEĞER GÖNDERİMİ
MEDULA 3 te RaporBilgisiDVO ile gönderimin kodu lazım.