Парсер / писатель HL7 для PHP - PullRequest
5 голосов
/ 02 февраля 2012

Я читаю HL7 файлы с помощью собственного сценария, но ищу что-то более надежное. Я проверил модуль Net_HL7 Pear, но документации нет и похоже, что с 2009 года обновлений нет.

Есть ли на рынке что-то новое (коммерческое или с открытым исходным кодом), доступное для работы с HL7 через PHP?

Ответы [ 4 ]

6 голосов
/ 10 ноября 2014

Я знаю, что это старый поток, но я работаю над классом PHP для работы с HL7.

Мне интересно, какую функциональность хотели бы люди.

Мой класс позволяет разбить сообщение HL7v2.x на многомерный массив.

Я работаю над некоторыми общими вещами, такими как получение полного имени пациента и поиск местоположения строки.

Это основная функция, которая разбивает сообщение.Он использует символы кодирования в MSH.2, однако я не вышел за пределы карата.

Мне также нужно написать обработчик для повторения подсегментов.

function parsemsg($string) {

    $segs = explode("\n",$string);

    $out = array();       

            //get delimiting characters

            if (substr($segs[0],0,3) != 'MSH') {

                $out['ERROR'][0] = 'Invalid HL7 Message.';
                $out['ERROR'][1] = 'Must start with MSH';

                return $out;

                exit;

            }

            $delbarpos = strpos($segs[0],'|',4);  //looks for the closing bar of the delimiting characters

            $delchar = substr($segs[0],4,($delbarpos - 4));

            define('FLD_SEP', substr($delchar,0,1));
            define('SFLD_SEP', substr($delchar,1,1));
            define('REP_SEP', substr($delchar,2,1));
            define('ESC_CHAR', substr($delchar,3,1));


            foreach($segs as $fseg) {

                $segments = explode('|',$fseg);

                $segname = $segments[0];
                $i = 0;
               foreach ($segments as $seg) {



                   if (strpos($seg,FLD_SEP) == false) {

                       $out[$segname][$i] = $seg;

                   } else {
                       $j=0;

                       $sf = explode(FLD_SEP,$seg);

                       foreach($sf as $f) {



                           $out[$segname][$i][$j] = $f;

                           $j++;

                       }


                   }

                   $i++;
               }
            }

                    //define('PT_NAME',$out['PID'][5][0],true);

                    return $out;


                } //end parsemsg
4 голосов
/ 02 февраля 2012

Посмотрите репозиторий Net_HL7 на github . Похоже, в последнее время произошла какая-то активность.

Если вы хотите сделать больше, чем простой анализ, лучше всего использовать интерфейсный движок, такой как Mirth Connect , а затем связать сообщения между вашим приложением с помощью веб-служб или базы данных.

2 голосов
/ 16 ноября 2017

Я знаю, что это старый поток, но если кто-то все еще ищет пакет HL7 для PHP, вот один, который я недавно разработал - https://github.com/senaranya/HL7

0 голосов
/ 04 февраля 2012

Вам также следует взглянуть на каталог инструментов HL7 по адресу www.HL7.com.au / HL7-Tools.htm

У них длинный список инструментов, включая php

HTH

...