Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V  < 1 2 3 4 >  
Reply to this topicStart new topic
> [PHP/SOAP] eWUS - info o pacjencie
szaitis
post 8.01.2013, 13:36:43
Post #41





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 2.01.2008

Ostrzeżenie: (0%)
-----


Także pozwolę sobie skorzystać i wielkie dzięki smile.gif
Go to the top of the page
+Quote Post
Kris2X
post 8.01.2013, 22:52:41
Post #42





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.03.2009

Ostrzeżenie: (0%)
-----


A wie ktoś może jak się dobrać do kodu autoryzacji/id_operacji?

Ten post edytował Kris2X 8.01.2013, 22:56:53
Go to the top of the page
+Quote Post
eMCeH
post 8.01.2013, 22:59:37
Post #43





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


w odpowiedzi na zapytanie otrzymujesz string, który musisz odpowiednio podzielić, siedzę nad tym teraz, jak zrobię wrzucę tutaj

ps. dzięki wielkie gilek (z jakiegoś powodu nie mogę dodać Ci "pomógł")

Ten post edytował eMCeH 8.01.2013, 23:02:35
Go to the top of the page
+Quote Post
Kris2X
post 8.01.2013, 23:01:39
Post #44





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.03.2009

Ostrzeżenie: (0%)
-----


Hmm... no właśnie kroję tego stringa ale kodu autoryzacji nie widzę, a z tego co wiem potrzebne to będzie do sprawozdań.

PS: Oczywiście dołączam się do podziękowań gilek biggrin.gif

Ten post edytował Kris2X 8.01.2013, 23:14:11
Go to the top of the page
+Quote Post
eMCeH
post 9.01.2013, 01:21:36
Post #45





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


po kolei:
35 znaków to adres Brokera (nie wykorzystywany w potwierdzeniu
29 znanów to data i godzina
1 znak to status obecności nr pesel w CWU (1 - jest, 0 - nie ma)
11 znaków to nr pesel
9 znaków to nr świadczeniodawcy
2 znaki to nr NFZ
5 znaków to identyfikator operatora (czy tylko 5 znaków?)
1 znak to status potwierdzenia (1 - NFZ potwierdza, 0 - NFZ nie potwierdza)
16 znaków to data i godzina do kiedy ważne potwierdzenie

tu zaczynają się schodki -
kolejne znaki to
imię i nazwisko (ilość różna)

28 znaków to podpis? (skrót kodu autoryzacyjnego?)
kolejne znaki to kod autoryzacyjny (dla statusu ubezpieczenia 1- 172 znaki, dla 0-154)

nasuwają się pytania:
1. jak utworzyć nazwę pliku (id_operacji)?
2. czy jest jakaś inna metoda wyciągania elementów z komunikatu zwrotnego niż dzielenie stringa na "części"?
jeśli nie to imię i nazwisko trzeba odczytywać od 110 (licząc od początku) do 201 (licząc od końca) lub do 182 (licząc od końca).

Ten post edytował eMCeH 9.01.2013, 01:22:34
Go to the top of the page
+Quote Post
gilek
post 9.01.2013, 09:30:45
Post #46





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.02.2008

Ostrzeżenie: (0%)
-----


Odpowiedź w zmiennej $r to jest zwykły XML, zatem można po nim wędrować za pośrednictwem XPath. W poprzednim poście pokazałem jak odwołać się do statusu, poniższy kod odwołuje sie do id_operacji. Analogicznie można pobrać wszystkie elementy.

  1. $elements = $xpath->query("//odp:status_cwu_odp");
  2. if ($elements->length !== 1)
  3. throw new Exception('OMG 2');
  4. $id = $elements->item(0)->getAttribute('id_operacji');
Go to the top of the page
+Quote Post
szaitis
post 9.01.2013, 09:44:52
Post #47





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 2.01.2008

Ostrzeżenie: (0%)
-----


A czy pacjent ubezpieczony czy nie jest tutaj jako 0 lub 1

$elements = $xpath->query("//odp:status_ubezp");
$status_ubezp = $elements->item(0)->nodeValue;
Go to the top of the page
+Quote Post
gilek
post 9.01.2013, 09:45:55
Post #48





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.02.2008

Ostrzeżenie: (0%)
-----


dokładnie
Go to the top of the page
+Quote Post
eMCeH
post 9.01.2013, 10:15:09
Post #49





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


jakież to jest łatwe jak się widzi gotowe rozwiązanie... smile.gif

jak mogę odczytać całego XML aby widzieć wszystkie składowe? - nie w postaci stringa tak jak do tej pory.

gilek: wielkie dzięki

ps. gdzie można nauczyć się tak programować te XML'e?

Ten post edytował eMCeH 9.01.2013, 10:18:39
Go to the top of the page
+Quote Post
gilek
post 9.01.2013, 10:24:36
Post #50





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.02.2008

Ostrzeżenie: (0%)
-----


Jednym z rozwiązań jest skorzystanie z rozszerzenia DOM lub SimpleXML. Na podstawie stringa tworzone jest drzewo. Należy pamiętać, że w wynikowym XML, jest kilka przestrzeni nazw, należy jest zarejestrować, aby móc później wyszukiwać elementy do nich należące.

Przykład z DOM, jest kilka postów wstecz.

Można również dokonać transformacji poprzez XSLT do dowolnego formatu.

p.s. ja się w szkole nauczyłem, to są raczej podstawy, nie jestem wymiataczem...

Ten post edytował gilek 9.01.2013, 10:28:19
Go to the top of the page
+Quote Post
Kris2X
post 9.01.2013, 14:28:59
Post #51





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.03.2009

Ostrzeżenie: (0%)
-----


Wie ktoś może skąd mogę wyłowić informacje o oznaczeniu DN na receptach ?

Nieaktualne
Miałem starą wersję status_cwu.xsd

Ten post edytował Kris2X 9.01.2013, 15:05:58
Go to the top of the page
+Quote Post
eMCeH
post 10.01.2013, 01:52:16
Post #52





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


...jak wyciągnąć nazwę i wersję systemu NFZ?

  1. $systemNFZnazwa = $xpath->query("//odp:system")->item(0)->getAttribute('nazwa');
  2. echo '<br />Nazwa systemu: '. $systemNFZnazwa;
  3.  
  4. $systemNFZwersja = $xpath->query("//odp:system")->item(0)->getAttribute('wersja');
  5. echo '<br />Wersja systemu: '. $systemNFZwersja;

błąd:
Kod
Call to a member function getAttribute() on a non-object


całość:
  1. function status ($potwierdzenie) {
  2. $doc = new DOMDocument();
  3. $doc->loadXML($potwierdzenie);
  4. $xpath = new DOMXpath($doc);
  5. $xpath->registerNamespace('odp','https://ewus.nfz.gov.pl/ws/broker/ewus/status_cwu/v2');
  6.  
  7. $statusCWU = $xpath->query("//odp:status_cwu")->item(0)->nodeValue;
  8. echo '<br /><br /> Status CWU (jest pesel czy nie?) : '.$statusCWU;
  9.  
  10. $statusUbezpieczenia = $xpath->query("//odp:status_ubezp")->item(0)->nodeValue;
  11. echo '<br />Status ubezpieczenia : '.$statusUbezpieczenia;
  12.  
  13. $receptaDN = $xpath->query("//odp:status_ubezp")->item(0)->getAttribute('ozn_rec');
  14. echo '<br />Oznaczenie recepty: '. $receptaDN;
  15.  
  16. $zwrotnyPesel = $xpath->query("//odp:numer_pesel")->item(0)->nodeValue;;
  17. echo '<br />zwrotny pesel: '. $zwrotnyPesel;
  18.  
  19. $pacjentImie = $xpath->query("//odp:imie")->item(0)->nodeValue;;
  20. echo '<br />Imię pacjenta: '. $pacjentImie;
  21.  
  22. $pacjentNazwisko = $xpath->query("//odp:nazwisko")->item(0)->nodeValue;;
  23. echo '<br />Imię pacjenta: '. $pacjentNazwisko;
  24.  
  25. $systemNFZ = $xpath->query("//odp:system_nfz")->item(0)->nodeValue;;
  26. echo '<br />System NFZ: '. $systemNFZ;
  27.  
  28. $swiadczeniodawca = $xpath->query("//odp:swiad")->item(0)->nodeValue;;
  29. echo '<br />Świadczeniodawca: '. $swiadczeniodawca;
  30.  
  31. $swiadczeniodawcaID = $xpath->query("//odp:id_swiad")->item(0)->nodeValue;;
  32. echo '<br />Świadczeniodawca: '. $swiadczeniodawcaID;
  33.  
  34. $nfzID = $xpath->query("//odp:id_ow")->item(0)->nodeValue;;
  35. echo '<br />NFZ: '. $nfzID;
  36.  
  37. $operatorID = $xpath->query("//odp:id_operatora")->item(0)->nodeValue;;
  38. echo '<br />Operator: '. $operatorID;
  39.  
  40. $idOperacji = $xpath->query("//odp:status_cwu_odp")->item(0)->getAttribute('id_operacji');
  41. echo '<br />ID operacji: '. $idOperacji;
  42.  
  43. $dataCzasOperacji = $xpath->query("//odp:status_cwu_odp")->item(0)->getAttribute('data_czas_operacji');
  44. echo '<br />Data i czas operacji: '. $dataCzasOperacji;
  45.  
  46. $dataWaznosciPotwierdzenia = $xpath->query("//odp:data_waznosci_potwierdzenia")->item(0)->nodeValue;
  47. echo '<br />Data ważności potwierdzenia : '.$dataWaznosciPotwierdzenia;
  48.  
  49. $systemNFZnazwa = $xpath->query("//odp:system")->item(0)->getAttribute('nazwa');
  50. echo '<br />Nazwa systemu: '. $systemNFZnazwa;
  51.  
  52. $systemNFZwersja = $xpath->query("//odp:system")->item(0)->getAttribute('wersja');
  53. echo '<br />Wersja systemu: '. $systemNFZwersja;
  54.  
  55. }
Go to the top of the page
+Quote Post
szaitis
post 10.01.2013, 14:00:51
Post #53





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 2.01.2008

Ostrzeżenie: (0%)
-----


Powinno być chyba odwołanie do węzła system_nfz a nie system
  1. $systemNFZnazwa = $xpath->query("//odp:system_nfz")->item(0)->getAttribute('nazwa');
  2. echo '<br />Nazwa systemu: '. $systemNFZnazwa;
Go to the top of the page
+Quote Post
eMCeH
post 10.01.2013, 14:32:59
Post #54





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


ledwie coś załapię z tych xml'ów to znów "ciemność widzę..."
w status_cwu_2.xsd nie widzę "węzła" o którym mówisz; możesz mi to rozpracować?
  1. <xs:element name="status_cwu_odp">
  2. <xs:annotation>
  3. <xs:documentation>Komunikat z odpowiedzią dla świadczeniodawcy</xs:documentation>
  4. </xs:annotation>
  5. <xs:complexType>
  6. <xs:sequence>
  7. <xs:element name="status_cwu" type="xs:string">
  8. <xs:annotation>
  9. <xs:documentation>Status pozycji w systemie CWU - jest/nie ma</xs:documentation>
  10. </xs:annotation>
  11. </xs:element>
  12. <xs:element name="numer_pesel" type="pesel">
  13. <xs:annotation>
  14. <xs:documentation>Numer PESEL</xs:documentation>
  15. </xs:annotation>
  16. </xs:element>


jedyna wartość dla system_nfz to:

  1. <xs:element name="system_nfz" type="system">
  2. <xs:annotation>
  3. <xs:documentation>Informacja o systemie udzielającym odpowiedzi po stronie NFZ </xs:documentation>
  4. </xs:annotation>
  5. </xs:element>

i dalszy kod:
  1. <xs:element name="swiad" type="swiadczeniodawca">
  2. <xs:annotation>
  3. <xs:documentation>Identyfikacja operatora świadczeniodawcy wysyłającego zapytanie</xs:documentation>
  4. </xs:annotation>
  5. </xs:element>
  6. <xs:element name="pacjent" type="swiadczeniobiorca" minOccurs="0">
  7. <xs:annotation>
  8. <xs:documentation>Wystepuje tylko dla pacjentów zarejestrowanych w CWU</xs:documentation>
  9. </xs:annotation>
  10. </xs:element>
  11. <xs:element ref="dsig:Signature" minOccurs="0"/>
  12. </xs:sequence>
  13. <xs:attribute name="id_operacji" use="required">
  14. <xs:annotation>
  15. <xs:documentation>Unikalny identyfikator operacji sprawdzenia statusu ubezpieczenia</xs:documentation>
  16. </xs:annotation>
  17. <xs:simpleType>
  18. <xs:restriction base="xs:string">
  19. <xs:minLength value="8"/>
  20. <xs:maxLength value="20"/>
  21. </xs:restriction>
  22. </xs:simpleType>
  23. </xs:attribute>
  24. <xs:attribute name="data_czas_operacji" type="xs:dateTime" use="required">
  25. <xs:annotation>
  26. <xs:documentation>Data i czas dokonana sprawdzenia w systemie NFZ</xs:documentation>
  27. </xs:annotation>
  28. </xs:attribute>
  29. </xs:complexType>
  30. </xs:element>



chyba zajarzyłem: system_nfz jest tak jakby "obiektem" klasy "system" dlatego nie można odwoływac się do system tylko trzeba odwołać do system_nfz i wyciągnąć z niego atrybuty nazwa i wersja... dobrze myślę?


Ten post edytował eMCeH 10.01.2013, 15:00:28
Go to the top of the page
+Quote Post
d_adamkiewicz
post 10.01.2013, 15:10:40
Post #55





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.01.2013

Ostrzeżenie: (0%)
-----


Spójrz w "System eWUS - opis interfejs dostępowego v.1.2.pdf" na końcu masz:
"Komunikat odpowiedzi zawierający informacje o statusie uprawnienia do świadczeń"

tam jest opisane jaki to element

Ten post edytował d_adamkiewicz 10.01.2013, 15:12:32
Go to the top of the page
+Quote Post
eMCeH
post 10.01.2013, 15:18:54
Post #56





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


1.2?

wrzuć proszę link do tego dokumentu.

mam podstawową, 1.1, 1.3

...w 1.1 i 1.3 też jest - rzeczywiście moje niedopatrzenie... jak widzę jeszcze sporo nauki przede mną... w pierwszej kolejności prawidłowo zapisać potwierdzenie do pliku smile.gif

Ten post edytował eMCeH 10.01.2013, 15:35:03
Go to the top of the page
+Quote Post
szaitis
post 10.01.2013, 16:06:48
Post #57





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 2.01.2008

Ostrzeżenie: (0%)
-----


Ja właśnie korzystałam z dokumentacji i tam znalazłam, że to system_nfz
a do pliku można zrzucać cały XML zwrotny
czyli po wywyłaniu loadXML i ustawieniu zmiennych np.
  1. $doc->loadXML
  2. $doc->save('C:/AppServ/www/ewus/'.$numer_pesel.'-'.$kod.'.xml');
Go to the top of the page
+Quote Post
eMCeH
post 10.01.2013, 16:25:09
Post #58





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


zapisujesz to w innej postaci niż potwierdzenia z NFZ - choć to nie jest problem bo id_operacji uzyskujemy z odpowiedzi;
podpis i jego skrót też zapisujesz do pliku?
jak go uzyskujesz skoro
  1. $sygnatura = $xpath->query("//odp:Signature")->item(0)->nodeValue;;
  2. echo '<br />Sygnatura: '. $sygnatura;


daje błąd
Kod
Trying to get property of non-object


mimo, że w specyfikacji 13 jest co_jest.gif
Go to the top of the page
+Quote Post
d_adamkiewicz
post 10.01.2013, 16:28:47
Post #59





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.01.2013

Ostrzeżenie: (0%)
-----


  1. $xpath->registerNamespace('ds', 'http://www.w3.org/2000/09/xmldsig#');
  2.  
  3. $SignatureValue = $xpath->query("//ds:SignatureValue")->item(0)->nodeValue;;
  4. echo '<br />SignatureValue: '. $SignatureValue;
  5.  
  6. $DigestValue = $xpath->query("//ds:DigestValue")->item(0)->nodeValue;;
  7. echo '<br />ValueDigest: '. $DigestValue;
Go to the top of the page
+Quote Post
eMCeH
post 10.01.2013, 16:53:59
Post #60





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.04.2012
Skąd: Świętokrzyskie

Ostrzeżenie: (0%)
-----


no tak, podpis jest przecież opisany w:
Kod
xmldsig-core-schema.xsd


jak widzę macie duże doświadczenie w "automatach"; czy każdy serwis ma tak skomplikowaną strukturę, że trzeba korzystać z:
opisu sesji testowej,
opisu interfejsu v.1.0
opisu interfejsu v.1.3
plików .xsd (2x)
plików xml (2x)




Ten post edytował eMCeH 10.01.2013, 17:11:37
Go to the top of the page
+Quote Post

4 Stron V  < 1 2 3 4 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 06:48