@AlexProWeb

Запросы soap в инфоклинику на php?

Помогите сформировать запрос в инфоклинику я вообще запутался в этом soap
с инфоклиники никто не может помочь никто нечего не знает.
<WEB_CLIENT_INFO>
 <MSH>
 <MSH.7>
 <TS.1>20110302184008</TS.1>
 </MSH.7>
 <MSH.9>
 <MSG.1>WEB</MSG.1>
 <MSG.2>CLIENT_INFO</MSG.2>
 <MSH.99>1</MSH.99>
 </MSH.9>
 <MSH.10>IDENT</MSH.10>
 <MSH.18>UTF-8</MSH.18>
 </MSH>
 <CLIENT_INFO_IN>
 <PCODE>1</PCODE>
 </CLIENT_INFO_IN>
</WEB_CLIENT_INFO>


на php
$xml  = [
    "WEB_CLIENT_INFO" =>[
        "MSH"=>[
            "MSH.7"=>[
                "TS.1" => "20110302184008",
            ],
            "MSH.9" => [
                "MSG.1" => "WEB",
                "MSG.2"=> "CLIENT_INFO",
                "MSH.99"=>"1"
            ],
            "MSH.10"=> "IDENT",
            "MSH.18"=> "UTF-8"
        ],
        "CLIENT_INFO_IN"=>[
            "PCODE"=>"1"
        ]

    ]
];


$options = [
    'trace'      => 1,
    'exceptions' => 1,
    'login'      => 'login',
    'password'   => 'password',
];
$client = new SoapClient('http://[url-service]/rest/portHl7Message?wsdl',  $options);
$response = $client->__soapCall('opHl7Message', $xml);
print_r($response);
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
У меня в одном из проектов есть десяток живых интеграций с инфоклиникой :)

1. Они отлично отвечают на вопросы.

2. У вас странный url. У инфоклиники есть центральный шлюз https://api.infoclinica.ru/api/xml
Там все те же самые xml, но без soap.

3. XML запрос мы собираем руками и просто отправляем post в body.
TS.1 - это `date('YmdHis')`
MSH.10 - рекомендуется уникальный для каждого запроса

4. Там есть определенная пляска с подписью запроса сертификатом, на centos так и не заработало, пришлось виртуализироваться
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Когда я вижу слово SOAP в задаче для PHP, меня инстинктивно передёргивает. Ненавижу и саму идею SOAP, и, особенно, её идиотскую реализацию в PHP.

Лично для себя нашёл решение: если мне нужно только несколько конкретных запросов от какого-то SOAP сервиса, я просто беру и делаю запросы при помощи curl и чистого XML. И создание XML запроса, и потом парсинг XML ответа, для меня проще, быстрее, приятнее и надёжнее, чем работа с дурацким SoapClient

Вот вам пример работы с SOAP через curl
https://stackoverflow.com/questions/7120586/soap-r...

Т.е. берём программу SoapUI, подключаемся к их апихе, копируем оттуда примеры XML запроса и ответа для наших нужд, и пишем curl запрос по этим шаблонам.

Кстати, есть инструменты, которые позволяют сгенерировать целый пакет для работы с определенным SOAP API по его wsdl адресу. Там и классы запросов и классы ответов будут сгенерированы, и всё, чтобы делать запросы.
Можете попробовать, но я недолюбливаю такие инструменты.
https://github.com/WsdlToPhp/PackageGenerator
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы