Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/SOAP] eWUS - info o pacjencie
kufalo
post
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 2
Dołączył: 24.08.2005

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


Witam,

Probuje przy wykorzystaniu:
Cytat
Definicję testowej usługi autoryzacji można znaleźć pod adresem:
https://ewus.nfz.gov.pl/ws-broker-server-ew...vices/Auth?wsdl

Definicję testowej usługi ServiceBroker można znaleźć pod adresem:
https://ewus.nfz.gov.pl/ws-broker-server-ew...viceBroker?wsdl


pobrac info o pacjencie.

Analizujac xml'e:
Kod
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:auth="http://xml.kamsoft.pl/ws/kaas/login_types">
   <soapenv:Header/>
   <soapenv:Body>
             <auth:login>
                <auth:credentials>
                    <auth:item>
                        <auth:name>domain</auth:name>
                        <auth:value><auth:stringValue>01</auth:stringValue></auth:value>
                    </auth:item>
                    <auth:item>
                        <auth:name>type</auth:name>
                        <auth:value><auth:stringValue>SWD</auth:stringValue></auth:value>
                    </auth:item>
                    <auth:item>
                        <auth:name>idntSwd</auth:name>
                        <auth:value><auth:stringValue>123456789</auth:stringValue></auth:value>
                    </auth:item>
                    <auth:item>
                        <auth:name>login</auth:name>
                        <auth:value><auth:stringValue>TEST</auth:stringValue></auth:value>
                    </auth:item>
                </auth:credentials>
                        <auth:password>qwerty!@#</auth:password>
            </auth:login>
   </soapenv:Body>
</soapenv:Envelope>


Kod
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
      <ns1:session id="6F3FE3EA6BE54C5630F4F08E6FD0B803" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
      <ns1:authToken id="BSbgyPBVy9Ww0B6al0DFuf" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
   </soapenv:Header>
   <soapenv:Body>
      <ns1:loginReturn xmlns:ns1="http://xml.kamsoft.pl/ws/kaas/login_types">3</ns1:loginReturn>
   </soapenv:Body>
</soapenv:Envelope>


udalo mi sie zalogowac za pomoca stworzonego skrypyu:

Kod
<?
$client=new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl');

$responce=$client->login(['credentials'=>[['name'=>'domain','value'=>['stringValue'=>'01']],['name'=>'type','value'=>['stringValue'=>'SWD']],['name'=>'idntSwd','value'=>['stringValue'=>'123456789']],['name'=>'login','value'=>['stringValue'=>'TEST']]],'password'=>'qwerty!@#']);

print($responce);
?>


Pytanie co dalej .......jak odebrac stringi session i authToken w naglowka odpowiedzi?
Sa one potrzebne w kolejnym zapytaniu zwracajacym dane pacjenta.
Go to the top of the page
+Quote Post
4 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 65)
eMCeH
post
Post #2





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

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


Nie zauważyłem, że założyłeś nowy wątek...

rozwiązanie tkwi chyba w samej definicji __soapCall;
zgodnie z opisem z php.net:
Kod
public mixed SoapClient::__soapCall ( string $function_name , array $arguments [, array $options [, mixed $input_headers [, array &$output_headers ]]] )

output_headers    - If supplied, this array will be filled with the headers from the SOAP response

tylko jak to zapisać?
gdy dla kodu:
  1. $parametry = ['credentials'=>
  2. [
  3. ['name'=>'domain','value'=>['stringValue'=>'15']],
  4. ['name'=>'login','value'=>['stringValue'=>$user]]
  5. ],
  6. 'password'=>$pass];

działa:
  1. $sesja = $client->login($parametry);

nie działa:
  1. $sesja = $client->__soapCall('login',$parametry);

zgłaszając błąd:
Kod
Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'credentials' property in...


no i rozwiązanie:

  1. $user = 'TEST1';
  2. $pass = 'qwerty!@#';
  3. $parametry = ['credentials'=>
  4. [
  5. ['name'=>'domain','value'=>['stringValue'=>'15']],
  6. ['name'=>'login','value'=>['stringValue'=>$user]]
  7. ],
  8. 'password'=>$pass];
  9.  
  10. echo 'parametry :';var_dump($parametry);
  11. echo '<br />';
  12. $sesja = $client->login($parametry);
  13. echo 'sesja:';var_dump($sesja);echo '<br />';
  14. echo '<br />';
  15.  
  16. $sesja = $client->__soapCall('login',array($parametry), null, null, $header);
  17. echo 'sesja2:';var_dump($sesja);echo '<br />';
  18. echo '<br />';
  19. var_dump($header);
  20. echo '<br />';


dalej juz dasz radę?

ja nie daję... jak wyciągnąć te dwie wartości? var_dump:
Kod
HEADER: array(2) { ["session"]=> object(stdClass)#2 (1) { ["id"]=> string(32) "96208C312BB6A5D38C11D7293B4D4F9B" } ["authToken"]=> object(stdClass)#3 (1) { ["id"]=> string(22) "BSoFd_Jmu9iR6wtvx14Dvf" } }


Ten post edytował eMCeH 3.01.2013, 18:20:42
Go to the top of the page
+Quote Post
marekpulawy
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


A rozgryzł już ktoś jak po zalogowaniu sprawdzić ubezpieczenie pacjenta?
Logowanie już opanowane:
  1. <?php
  2. function objectToArray($d) {
  3. if (is_object($d)) {
  4. $d = get_object_vars($d);
  5. }
  6. if (is_array($d)) {
  7. return array_map(__FUNCTION__, $d);
  8. }
  9. else {
  10. return $d;
  11. }
  12. }
  13.  
  14. $client=new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl');
  15. $user = 'TEST1';
  16. $pass = 'qwerty!@#';
  17. $parametry = ['credentials'=>
  18. [
  19. ['name'=>'domain','value'=>['stringValue'=>'15']],
  20. ['name'=>'login','value'=>['stringValue'=>$user]]
  21. ],
  22. 'password'=>$pass];
  23.  
  24. $sesja = $client->login($parametry);
  25. $sesja = $client->__soapCall('login',array($parametry), null, null, $header);
  26. echo 'sesja: '.$sesja.'';
  27. echo '<br />';
  28. $array = objectToArray($header);
  29. //var_dump($array);
  30. //echo '<br />';
  31. echo 'Session: '.$array['session']['id'].'';
  32. echo '<br />';
  33. echo 'Token: '.$array['authToken']['id'].'';
  34. ?>


Ten post edytował marekpulawy 5.01.2013, 18:35:49
Go to the top of the page
+Quote Post
eMCeH
post
Post #4





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

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


logowanie mamy ale jak się wylogować?

status_cwu sprawdzasz na innym adresie www
Go to the top of the page
+Quote Post
marekpulawy
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


Cytat(eMCeH @ 5.01.2013, 18:50:39 ) *
status_cwu sprawdzasz na innym adresie www

Na innym? A masz już może jakieś pomysły jak wywołać to sprawdzenie pacjenta?
Go to the top of the page
+Quote Post
eMCeH
post
Post #6





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

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


próbowałem:
  1. $wylogowanie = $client->__soapCall('logout',array($header), null, null, $header2);
  2. var_dump($wylogowanie);

ale wywala błędy

status_cwu sprawdzasz na innym adresie www:
Kod
     https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker?wsdl


cały czas nad tym siedzę (z przerwami na sprawdzenia, rozliczenia itp... wink.gif

Ten post edytował eMCeH 5.01.2013, 19:11:56
Go to the top of the page
+Quote Post
szaitis
post
Post #7





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

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


cześć
Też próbuję zmierzyć się z tym problemem i mam niestety cały czas problem z logowaniem.

używam:
$client=new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl');
$user = 'TEST1';
$pass = 'qwerty!@#';
$parametry = ['credentials'=>[['name'=>'domain','value'=>['stringValue'=>'15']],['name'=>'login','value'=>['stringValue'=>$user]]],'password'=>$pass];

i wyrzuca mi błąd:
Parse error: syntax error, unexpected '[' in C:\AppServ\www\victoria2\ewus.php on line 28
czyli jest to błąd w linii $parametry

jak używałam wcześniejszych wywołań z forum to za każym razem mam błąd odnośnie tego nawiasu '['

czy używa ktoś php w wersji 5.2.6? może powinnam podnieść wersję?

będę wdzięczna za jakiekolwiek sugestie
Go to the top of the page
+Quote Post
marekpulawy
post
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


Wg mnie to jest wina starej wersji PHP. U mnie na wersji 5.4.3 nie wyrzuca tego błędu.
Na drugim serwerze mam 5.2.17 i mam taki sam błąd jak u Ciebie.
Go to the top of the page
+Quote Post
eMCeH
post
Post #9





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

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


kod logowania, który skleił ostatecznie marekpulawy jest 100% działający


logout poddałem się...

próbuję dopisać do tamtego kodu
  1. $clientBroker = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/ServiceBroker?wsdl');
  2. $functions = $clientBroker->__getFunctions();
  3. echo '<br />';
  4. echo 'DOSTĘPNE FUNKCJE:'; var_export($functions);
  5. echo '<br />';
  6.  
  7. $sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry), $header, null, $header2);


Kod
DOSTĘPNE FUNKCJE:array ( 0 => 'ServiceResponse executeService(ServiceRequest $request)', )

ale wyrzuca błąd:
Kod
Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'location'


Ten post edytował eMCeH 6.01.2013, 21:09:22
Go to the top of the page
+Quote Post
marekpulawy
post
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


a co masz tym razem w zmiennej $parametry?
bo w zmiennej $header masz session i authToken?

Ten post edytował marekpulawy 6.01.2013, 21:12:32
Go to the top of the page
+Quote Post
d_adamkiewicz
post
Post #11





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

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


Hym, wiem niewiele, ale wydaje mi się, że po zalogowaniu najpierw trzeba ustawić nagłówki z session id i authToken id

coś jak

$auth = ['session'=>['id'=>$array['session']['id']], 'authToken'=>['id'=>$array['authToken']['id']]];
$hd = new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", $auth, false);
$return = $client->__setSoapHeaders($hd);

tylko, że to zwraca FALSE a nie TRUE - czyli coś jest nie tak
Go to the top of the page
+Quote Post
eMCeH
post
Post #12





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

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


te same parametry co w przypadku logowania
  1. $parametry = ['credentials'=>
  2. [
  3. ['name'=>'domain','value'=>['stringValue'=>$domain]],
  4. ['name'=>'login','value'=>['stringValue'=>$login]]
  5. ],
  6. 'password'=>$password];


błądzę po omacku
na jednych forach (np. C#) mówią, iż jest bład w pliku definicji wsdl
na innych iż błąd polega na tym, iż są dwie namespace...
Niestety w xml raczkuję - to jest głęboka woda dla mnie i próbuję się nie utopić...

nagłówek przecież wysyłam też przy wywołaniu
  1. __soapCall('executeService',array($parametry), $header, null, $header2)

- parametr $header

Ten post edytował eMCeH 6.01.2013, 21:24:25
Go to the top of the page
+Quote Post
d_adamkiewicz
post
Post #13





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

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


Teraz zwraca TRUE, chyba;)


$hd = [
new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", ['session'=>['id'=>$array['session']['id']]], true),
new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", ['authToken'=>['id'=>$array['authToken']['id']]], true),
];

$return = $client->__setSoapHeaders($hd);

if ($return == TRUE) {
echo "<br>TRUE";
}

i to działa;)

$functions = $client->__getFunctions();
var_export($functions);
Go to the top of the page
+Quote Post
eMCeH
post
Post #14





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

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


$client =
Auth czy ServiceBroker?

Ten post edytował eMCeH 6.01.2013, 21:42:35
Go to the top of the page
+Quote Post
d_adamkiewicz
post
Post #15





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

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


Auth

Nie znam się, ale wydaje mi się, że teraz

$response = $client->__doRequest(
"checkCWU",
"https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker?wsdl",
"executeService",
"1.0");

tylko, że to nie działa;)

var_export($response);

daje takie coś

'http://www.w3.org/2005/08/addressing/soap/faultcom.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character \'c\' (code 99) in prolog; expected \'<\' at [row,col {unknown-source}]: [1,1]
Go to the top of the page
+Quote Post
eMCeH
post
Post #16





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

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


w zapytaniu checkCWU musisz przesłać pesel oraz równolegle nazwę i wersję swojego systemu
Go to the top of the page
+Quote Post
d_adamkiewicz
post
Post #17





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

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


Może po

$client->__setSoapHeaders($hd);

trzeba:

$clientBroker = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/ServiceBroker?wsdl');

$response = $clientBroker->__soapCall('executeService', ['status_cwu_pyt'=>['numer_pesel'=>49091480757],['system_swiad'=>['nazwa'=>"eWUS", 'wersja'=>"2.0"]]]);


Wprawdzie wywala mi to z błędem:
Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'location' property in index.php:49 Stack trace: #0 index.php(49): SoapClient->__soapCall('executeService', Array) #1 {main} thrown in index.php on line 49

ale wydaje mi się że nie podałem wszystkich parametrów jako drugi argument
Go to the top of the page
+Quote Post
marekpulawy
post
Post #18





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


  1. $response = $clientBroker->__soapCall('executeService', ['status_cwu_pyt'=>['numer_pesel'=>49091480757],['system_swiad'=>['nazwa'=>"eWUS", 'wersja'=>"2.0"]]], null, null, $wynik);


dodałem parametry do soapCall ale mi też wywala błąd
Go to the top of the page
+Quote Post
eMCeH
post
Post #19





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

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


identyczny komunikat dostaję w swoim wywołaniu

  1. $sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry), $header, null, $header2);
Go to the top of the page
+Quote Post
d_adamkiewicz
post
Post #20





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

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


  1. $response = $clientBroker->__soapCall('executeService',
  2. ['parameters'=>[
  3. 'location'=>[
  4. 'namespace'=>"nfz.gov.pl/ws/broker/cwu",
  5. 'localname'=>"checkCWU",
  6. 'version'=>"1.0"],
  7. 'date'=>"2008-09-12T09:37:36.406+01:00",
  8. 'payload'=>[
  9. 'status_cwu_pyt'=>[
  10. 'numer_pesel'=>49091480757,
  11. 'system_swiad'=>[
  12. 'nazwa'=>"eWUS",
  13. 'wersja'=>"2.0"
  14. ]
  15. ]
  16. ]
  17. ]
  18. ]
  19. );


Tamte błędy znikły - pojawia się:
Fatal error: Uncaught SoapFault exception: [soapenv:Server] unknown in index.php
Go to the top of the page
+Quote Post
eMCeH
post
Post #21





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

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


  1. $parametry = ['location'=>
  2. [
  3. ['namespace'=>'nfz.gov.pl/ws/broker/cwu'],
  4. ['localname'=>'checkCWU'],
  5. ['version'=>'1.0']
  6. ],
  7. ['date'=>'2008-09-12T09:37:36.406+01:00'],
  8. ['payload'=>[
  9. ['textload'=>[
  10. 'status_cwu_pyt'=>[
  11. ['numer_pesel'=>49091480757],
  12. ['system_swiad'=>[
  13. ['nazwa'=>"eWUS"],
  14. ['wersja'=>"2.0"]
  15. ]
  16. ]
  17. ]
  18. ]
  19. ]
  20. ]
  21. ]
  22. ];
  23. // $hd = [
  24. // new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", ['session'=>['id'=>$array['session']['id']]], true),
  25. // new SoapHeader("http://xml.kamsoft.pl/ws/common", "com", ['authToken'=>['id'=>$array['authToken']['id']]], true),
  26. // ];
  27. // $sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry),$hd,NULL, $header2);
  28.  
  29. $sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry),$header,NULL, $header2);


zgłasza mi
Kod
Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'namespace' property


Ten post edytował eMCeH 7.01.2013, 00:39:54
Go to the top of the page
+Quote Post
marekpulawy
post
Post #22





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


Udało się komuś rozgryźć temat zapytania eWUS o ubezpieczenie pacjenta?

I jeszcze jedno: czy w parametrach executeService nie należy podać session i authToken?
Go to the top of the page
+Quote Post
eMCeH
post
Post #23





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

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


trzeba, trzeba... jak widzisz "powyżej" - na dwa sposoby nawet rozwiązane (bezpośrednio w zapytaniu lub definiując wcześniej header

problem - co dalej?

Ten post edytował eMCeH 7.01.2013, 14:26:50
Go to the top of the page
+Quote Post
marekpulawy
post
Post #24





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'namespace' property

Może źle jest zdefiniowana ta tablica $parametry, jeśli krzyczy że jest nieprawidłowe namespace?
Go to the top of the page
+Quote Post
eMCeH
post
Post #25





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

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


ja zrozumiałem, że "nie ma obiektu namespace"; za szybko czytam poprostu - to przez ten eWUŚ, rozliczenia, koniec roku itp. wink.gif

tak jak pisałem - na forach innych języków programowania pisali, że używane są dwa różne namespace ale nikt nie powiedział jak go użyć prawidłowo.

Ten post edytował eMCeH 7.01.2013, 14:49:04
Go to the top of the page
+Quote Post
szaitis
post
Post #26





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

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


Ja próbuję po zalogowaniu się takiego czegoś:

$clientBroker = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker?wsdl');
// $functions = $clientBroker->__getFunctions();
// echo '<br />';
// echo 'DOSTĘPNE FUNKCJE:'; var_export($functions);
// echo '<br />';

// $sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry), $header, null, $header2);

$parametry = ['location'=>
[
['namespace'=>'nfz.gov.pl/ws/broker/cwu'],
['localname'=>'checkCWU'],
['version'=>'1.0']
],
['date'=>'2008-09-12T09:37:36.406+01:00'],
['payload'=>[
['textload'=>[
'status_cwu_pyt'=>[
['numer_pesel'=>10101010101],
['system_swiad'=>[
['nazwa'=>"eWUS"],
['wersja'=>"2.0"] ]] ] ] ] ] ] ];

$sesjaReturn = $clientBroker->__soapCall('executeService',array($parametry),$header,NULL, $header2);

i zwraca mi taki komunikat:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: <message> 'executeServiceRequestMsg' already defined in C:\AppServ\www\ewus\ewus.php:43
Stack trace: #0 C:\AppServ\www\ewus\ewus.php(43): SoapClient->SoapClient('https://ewus.nf...') #1 {main} thrown in C:\AppServ\www\ewus\ewus.php on line 43

Miał ktoś coś podobnego?
Go to the top of the page
+Quote Post
eMCeH
post
Post #27





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

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


ja chyba też tak miałem - na testowej błąd dublowania a na roboczej ok.
Go to the top of the page
+Quote Post
szaitis
post
Post #28





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

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


dzięki smile.gif
rzeczywiście na produkcji ten błąd nie występuje smile.gif
Go to the top of the page
+Quote Post
webdice
post
Post #29


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




~szaitis o tagach bbcode słyszałeś? Jeśli nie to poczytaj i popraw swoje posty.
Go to the top of the page
+Quote Post
eMCeH
post
Post #30





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

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


...niestety dalej problem z namespace nierozwiązany...

a wiesz jak się wylogować? co prawda po nowym zalogowaniu lub po zamknięciu przeglądarki sesja ulega zniszczeniu ale ładnie by było wylogowac się wink.gif
Go to the top of the page
+Quote Post
webdice
post
Post #31


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Wiecie że to ma działać od 1 stycznia?

  1. <?php
  2.  
  3. $client = new SoapClient( 'https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/Auth?wsdl', array
  4. (
  5. 'trace' => true
  6. ));
  7.  
  8. $response = $client->login( array
  9. (
  10. 'credentials' => array
  11. (
  12. 'item' => array
  13. (
  14. 'name' => 'domain',
  15.  
  16. 'value' => array
  17. (
  18. 'stringValue' => '06'
  19. )
  20. ),
  21.  
  22. 'name' => 'type',
  23.  
  24. 'value' => array
  25. (
  26. 'stringValue' => 'SWD'
  27. )
  28. ),
  29.  
  30. 'name' => 'idntSwd',
  31.  
  32. 'value' => array
  33. (
  34. 'stringValue' => '[identifkator]'
  35. )
  36. ),
  37.  
  38. 'name' => 'login',
  39.  
  40. 'value' => array
  41. (
  42. 'stringValue' => '[login]'
  43. )
  44. )
  45. )
  46. ),
  47.  
  48. 'password' => '[hasło]'
  49. ));
  50.  
  51. print '<pre>' . print_r( $client->__getLastResponse(), true ) . '<pre>';


Nauczcie się wreszcie czytać manuale/dokumentacje.
Go to the top of the page
+Quote Post
eMCeH
post
Post #32





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

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


wiesz, logowanie to już jakiś czas temu było zrobione (patrz wcześniejsze posty). ja pytałem o logout.

tak na marginesie - skoro masz działający kod to zamiast się złościć i odsyłać do dokumentacji mógłbyś coś podpowiedzieć w trakcie naszych prób "sklecenia" kodu abyśmy i my zrozumieli...

Ten post edytował eMCeH 7.01.2013, 17:35:02
Go to the top of the page
+Quote Post
marekpulawy
post
Post #33





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


webdice mógłbyś zdradzić jak sobie poradziłeś ze sprawdzaniem ubezpieczenia pacjenta? albo podpowiedz gdzie robimy błąd

Ten post edytował marekpulawy 7.01.2013, 17:52:10
Go to the top of the page
+Quote Post
eMCeH
post
Post #34





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

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


jeszcze trzeba będzie pilnować czasu od zalogowania zgodnie z komunikatem NFZ:

Kod
http://www.nfz.gov.pl/new/index.php?katnr=9&dzialnr=4&artnr=5278


...umożliwiło też brak wylogowywania się smile.gif

a to 'item' przy logowaniu konieczne?

Ten post edytował eMCeH 8.01.2013, 08:24:11
Go to the top of the page
+Quote Post
szaitis
post
Post #35





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

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


Udało sie już komuś to zapytanie o ubezpieczenie napisać? czy dalej na poziomie logowania są wszyscy?
Go to the top of the page
+Quote Post
marekpulawy
post
Post #36





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


niestety, ja dalej na poziomie logowania się zatrzymałem, ale cały czas walczę. jak coś to napiszę
Go to the top of the page
+Quote Post
eMCeH
post
Post #37





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

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


...ja też, niestety ograniczam próby logowania i wysyłki zapytań aby mnie weryfikator Departamentu Informatyki nie nakrył wink.gif
powiem szczerze, że nie wierzę aby nikt z forumowiczów nie miał gotowego rozwiązania tylko nie chce się podzielić z innymi, trudno, wspólnymi siłami coś tam się wymyśli i na pewno to opublikujemy

Ten post edytował eMCeH 8.01.2013, 12:00:38
Go to the top of the page
+Quote Post
gilek
post
Post #38





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

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


Wersja "na chama" (w dodatku bez obsługi wyjątków), własciwie to nie do publikacji, ale lepsze to niż nic.

  1. $params = array(
  2. 'credentials' => array(
  3. array('name' => 'domain', 'value' => array('stringValue' => '15')),
  4. array('name' => 'login', 'value' => array('stringValue' => $user))
  5. ),
  6. 'password' => $pass);
  7.  
  8. $clientAuth = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/Auth?wsdl', array('trace' => true));
  9. $clientAuth->__soapCall('login', array($params), null, null, $loginHeaders);
  10.  
  11. $xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://xml.kamsoft.pl/ws/common" xmlns:brok="http://xml.kamsoft.pl/ws/broker">
  12. <soapenv:Header>
  13. <com:session id="' . $loginHeaders['session']->id . '" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
  14. <com:authToken id="' . $loginHeaders['authToken']->id . '" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
  15. </soapenv:Header>
  16. <soapenv:Body>
  17. <brok:executeService>
  18. <com:location>
  19. <com:namespace>nfz.gov.pl/ws/broker/cwu</com:namespace>
  20. <com:localname>checkCWU</com:localname>
  21. <com:version>2.0</com:version>
  22. </com:location>
  23. <brok:date>2008-09-12T09:37:36.406+01:00</brok:date>
  24. <brok:payload>
  25. <brok:textload>
  26. <ewus:status_cwu_pyt xmlns:ewus="https://ewus.nfz.gov.pl/ws/broker/ewus/status_cwu/v2">
  27. <ewus:numer_pesel>00000000000</ewus:numer_pesel>
  28. <ewus:system_swiad nazwa="eWUS" wersja="2012.07.1.0"/>
  29. </ewus:status_cwu_pyt>
  30. </brok:textload>
  31. </brok:payload>
  32. </brok:executeService>
  33. </soapenv:Body>
  34. </soapenv:Envelope>';
  35.  
  36. $clientBroker = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/ServiceBroker?wsdl', array('trace' => true, 'exceptions' => true));
  37. $r = $clientBroker->__doRequest($xml, 'https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/ServiceBroker', 'executeService', SOAP_1_1);


Ten post edytował gilek 8.01.2013, 12:59:57
Go to the top of the page
+Quote Post
marekpulawy
post
Post #39





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


jest mały błąd: </brok:stextload>
powinno być: </brok:textload>,
ale działa. Wielkie dzięki stary. Podaj adres gdzie mam piwo wysłać
Go to the top of the page
+Quote Post
gilek
post
Post #40





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

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


Dzięki, poprawiłem, to też moze sie przydać:

  1. $doc = new DOMDocument();
  2. $doc->loadXML($r);
  3. $xpath = new DOMXpath($doc);
  4. $xpath->registerNamespace('odp','https://ewus.nfz.gov.pl/ws/broker/ewus/status_cwu/v2');
  5.  
  6. $elements = $xpath->query("//odp:status_cwu");
  7. if ($elements->length !== 1)
  8. throw new Exception('OMG');
  9.  
  10. $status = $elements->item(0)->nodeValue;
  11. echo ' Status: '.$status;
  12.  
Go to the top of the page
+Quote Post
szaitis
post
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
d_adamkiewicz
post
Post #61





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

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


Można tak ($responseXML zawiera to co zrobił gilek):

  1. $doc = new DOMDocument();
  2. $doc->loadXML($responseXML);
  3. $match = $doc->getElementsByTagName('status_cwu_odp');//
  4. $foundXML = $doc->saveXML($match->item(0));
  5. $xpath = new DOMXpath($doc);
  6. $xpath->registerNamespace('odp','https://ewus.nfz.gov.pl/ws/broker/ewus/status_cwu/v2');
  7. $operId = $xpath->query("//odp:status_cwu_odp")->item(0)->getAttribute('id_operacji');
  8. file_put_contents($operId . '.xml', $foundXML);

Go to the top of the page
+Quote Post
eMCeH
post
Post #62





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

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


u "gilek"
Kod
$r


uzupełniony kod o zapis do folderów z 3-lit nazwą miesiąca:

  1. $doc = new DOMDocument();
  2. $doc->loadXML($r);
  3. $match = $doc->getElementsByTagName('status_cwu_odp');//
  4. $foundXML = $doc->saveXML($match->item(0));
  5. $xpath = new DOMXpath($doc);
  6. $xpath->registerNamespace('odp','https://ewus.nfz.gov.pl/ws/broker/ewus/status_cwu/v2');
  7. $operId = $xpath->query("//odp:status_cwu_odp")->item(0)->getAttribute('id_operacji');
  8.  
  9. setlocale(LC_ALL, 'pl_PL', 'pl', 'Polish_Poland.28592');
  10. $folderPotwierdzen = './potwierdzenia/' . strftime('%Y') . '/' . substr(strftime('%B'), 0, 3) . '/';
  11. if (!file_exists($folderPotwierdzen))
  12. mkdir($folderPotwierdzen, 0777, true);
  13.  
  14. file_put_contents($folderPotwierdzen. $operId . '.xml', $foundXML);


W przypadku podania błędnego nr pesel np. 00000000000 serwer zwraca :
Kod
soapenv:ServerNiepoprawny numer PESEL.nfz.gov.pl/ws/broker/cwucheckCWU2.0Client.InputExceptionBłędne dane wejściowe.pl.kamsoft.app.ws.broker.cwu.BrokerServiceAuth


jak to przechwycić do wyjątku?

  1. try {
  2. $clientBroker = new SoapClient($path . '?wsdl', array('trace' => 1, 'exceptions' => true));
  3. $potwierdzenie = $clientBroker->__doRequest($xml, $path, 'executeService', SOAP_1_1);
  4. }
  5. catch (Exception $e) {echo 'BŁĄD: ' . $e->getMessage().'<br>';}


przepuszcza i nie wyrzuca wyjątku

Ten post edytował eMCeH 11.01.2013, 06:00:10
Go to the top of the page
+Quote Post
gilek
post
Post #63





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

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


Jeśli zwróci element Fault z przestrzeni nazw http://schemas.xmlsoap.org/soap/envelope/. Oczywiście nie jest to takie proste. W elemencie detail może znadować sie element z przestrzeni http://xml.kamsoft.pl/ws/common mówiący o typie błedu. W zależności od typu czasem należy odświeżyć sesje. Można to obsłużyć tak (kod jest powiązany z moimi klasami, rozważ koncepcje, nie rowiązanie):

  1. class EWUSException extends Exception {
  2. private $_type;
  3. public function setType($type) { $this->_type = $type; }
  4. public function getType() { return $this->_type; }
  5. }


  1. /**
  2.   *
  3.   * @param string $response
  4.   * @throws Exception
  5.   * @throws EWUSException
  6.   */
  7. private function _parseResponse($response) {
  8. if (strlen($response)===0)
  9. throw new Exception('Brak odpowiedzi na żądanie.');
  10.  
  11. $doc = new DOMDocument();
  12. $doc->loadXML($response);
  13.  
  14. $xpath = new DOMXpath($doc);
  15. $xpath->registerNamespace('env', 'http://schemas.xmlsoap.org/soap/envelope/');
  16. $xpath->registerNamespace('com', 'http://xml.kamsoft.pl/ws/common');
  17.  
  18. $fault = $xpath->query('//env:Fault');
  19.  
  20. if ($fault->length===1) {
  21. $ee = new EWUSException();
  22.  
  23. $ks = $xpath->query('//com:*');
  24. if ($ks->length>=1)
  25. $ee->setType($ks->item(0)->localName);
  26.  
  27. throw $ee;
  28. }
  29. }


  1. try {
  2.  
  3. $r = $ec->checkCWU($pesel, EWUSClient::FLAG_STATUS | EWUSClient::FLAG_RESPONSE);
  4. } catch(EWUSException $ee) {
  5. switch($ee->getType()) {
  6. case 'authTokenError':
  7. case 'sessionError':
  8. $e->refreshSession(true);
  9. break;
  10.  
  11. case 'inputError':
  12. $result[$pesel] = array('error'=>'Błędne dane wejściowe.');
  13. break;
  14.  
  15. default:
  16. $result[$pesel] = array('error'=>'Nieznany błąd.');
  17. break;
  18.  
  19. }
  20. } catch(Exception $e) {
  21. $result[$pesel] = array('error'=>$e->getMessage());
  22. }


Ten post edytował gilek 14.01.2013, 08:20:33
Go to the top of the page
+Quote Post
d_adamkiewicz
post
Post #64





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

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


  1. $doc = new DOMDocument();
  2. $doc->loadXML($r);
  3. $match = $doc->getElementsByTagName('status_cwu_odp');//
  4. $foundXML = $doc->saveXML($match->item(0));
  5. file_put_contents($operId . '.xml', $foundXML);


Czy, ktoś próbował tak utworzony plik potwierdzenia sprawdzać, weryfikować, wgrywać do programu do rozliczeń?
tzn. wiem, że Kamsoft nie udostępnia jeszcze dla KS PPS mechanizmu importu, ale może inne oprogramowanie?
Może szukam dziury w całym, ale wołałbym się upewnić.
Go to the top of the page
+Quote Post
nitro18
post
Post #65





Grupa: Zarejestrowani
Postów: 311
Pomógł: 7
Dołączył: 2.08.2006
Skąd: Bystrzyca Kłodzka/Nysa

Ostrzeżenie: (10%)
X----


Witam,

Zmodyfikowałem kod tak, aby na początku korzystał z serwera testowego eWUŚ.

  1. <?php
  2. $params = array(
  3. 'credentials' => array(
  4. array('name' => 'domain', 'value' => array('stringValue' => '15')),
  5. array('name' => 'login', 'value' => array('stringValue' => 'TEST1'))
  6. ),
  7. 'password' => 'qwerty!@#');
  8.  
  9. $clientAuth = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl', array(
  10. 'trace' => true,
  11. 'soap_version' => SOAP_1_2,
  12. "exceptions" => true,
  13. "cache_wsdl" => "WSDL_CACHE_NONE"
  14. ));
  15. $clientAuth->__soapCall('login', array($params), null, null, $loginHeaders);
  16.  
  17. $xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://xml.kamsoft.pl/ws/common" xmlns:brok="http://xml.kamsoft.pl/ws/broker">
  18. <soapenv:Header>
  19. <com:session id="' . $loginHeaders['session']->id . '" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
  20. <com:authToken id="' . $loginHeaders['authToken']->id . '" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/>
  21. </soapenv:Header>
  22. <soapenv:Body>
  23. <brok:executeService>
  24. <com:location>
  25. <com:namespace>nfz.gov.pl/ws/broker/cwu</com:namespace>
  26. <com:localname>checkCWU</com:localname>
  27. <com:version>2.0</com:version>
  28. </com:location>
  29. <brok:date>2008-09-12T09:37:36.406+01:00</brok:date>
  30. <brok:payload>
  31. <brok:textload>
  32. <ewus:status_cwu_pyt xmlns:ewus="https://ewus.nfz.gov.pl/ws/broker/ewus/status_cwu/v2">
  33. <ewus:numer_pesel>00000000000</ewus:numer_pesel>
  34. <ewus:system_swiad nazwa="eWUS" wersja="2012.07.1.0"/>
  35. </ewus:status_cwu_pyt>
  36. </brok:textload>
  37. </brok:payload>
  38. </brok:executeService>
  39. </soapenv:Body>
  40. </soapenv:Envelope>';
  41.  
  42. $clientBroker = new SoapClient('https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker?wsdl', array('trace' => true,
  43. 'soap_version' => SOAP_1_2,
  44. "exceptions" => true,
  45. "cache_wsdl" => "WSDL_CACHE_NONE"));
  46. $r = $clientBroker->__doRequest($xml, 'https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker', 'executeService', SOAP_1_2);
  47.  
  48. ?>


jednakże po wywołaniu pojawia się:

Cytat
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: <message> 'loginResponse' already defined in C:\dane\serwer\htdocs\ewus.php:14 Stack trace: #0 C:\dane\serwer\htdocs\ewus.php(14): SoapClient->SoapClient('https://ewus.nf...', Array) #1 {main} thrown in C:\dane\serwer\htdocs\ewus.php on line 14


w jaki sposób można naprawić błąd.


z SOAP jestem noga. Proszę bardzo o pomoc.





Go to the top of the page
+Quote Post
marekpulawy
post
Post #66





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


A jak włączyć ten certyfikat do SOAP?
Poniżej komunikat NFZ:

"W związku z koniecznością wymiany certyfikatu informujemy, że w dniu 10 września 2018 r. po godzinie 7-ej, system eWUŚ zostanie przełączony na nowy certyfikat. Certyfikat ten wykorzystywać będzie między innymi funkcję skrótu SHA-2.

Certyfikat pośredni (intermediate) oraz główny (root) można pobrać ze strony wystawcy pod adresem https://knowledge.digicert.com/generalinfor...n/INFO3805.html, w sekcji "SHA-2 Intermediate CAs (under SHA-2 Root)"."
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
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 Aktualny czas: 21.08.2025 - 16:10