Возможен-ли сложный парсинг TXT-файлов средствами OOo BASIC

Автор Dr_Lecter, 4 октября 2015, 19:46

0 Пользователи и 1 гость просматривают эту тему.

Dr_Lecter

bormant
Цитата: bormant от  5 октября 2015, 14:28Код:    If InStr(s, "Возраст :") = 1 Then        i=InStr(s, "яр")        If i>0 Then Mid(s,i,2,"г")    End If

Это отработает только в строке, имеющей в своем составе начало "Возраст :", если будет "Возр.:" то все.
А в моем примере
Foreach-Object {$_ -replace "(\d+)яр",'$1г'}|

будут обработаны все совпадения в файле без относительно остального содержимого строк

Остальные ответы с работы за пару минут не понял, дома прочту подробнее.

Спасибо!

JohnSUN
Цитировать
Доктор, а можно нескромный вопрос по теме? Откуда это непреодолимое желание сделать свой собственный велосипед? Если уж не хочется платить за Ultravision, то можно воспользоваться программами Сергея Шестопалова. Всё давно давным написано, работает в массе кабинетов УЗИ, сёстры, пациенты и - самое главное! - врачи не жалуются...

Посмотрел, не хочу никого обижать но давно так не смеялся... хотя там в пору плакать. Если Врач на ЭТО не жалуется - бегите от него далеко и быстро.

У меня развернута 1C:Медицина.Поликлиника в качестве основной МИС и базы данных. Но под нее довольно муторно разрабатывать свои внешние обработки, и нет нормального контакта с разработчиком.
Если под нее делать это совсем другая история... с поднятием DICOM сервисов, покупкой DICOM ключей на все типы оборудования. Она заточена под большие проекты с большими вложениями.

Весь тот мусор что есть в Интернетах под видом медицинских рабочих мест вообще не предназначен для анализа и обработки медицинских данных.
Делают тупо убогий интерфейс и игрушечную БД и давай продавать.
Мне не нужна ни БД, ни каталогизация - мне нужен перенос уже проанализированных софтом сканера данных из сканера в протокол без помех и ошибок.
А файлы с протоколами я прикрепляю к карточке пациента в МИС.
И отдельным запросом после загружу все нужные мне переменные в SQL прошерстив автоматически файлы протоколов.

Для того чтобы анализ можно выполнять в программе фактически нужно повторить на компе всю программную начинку УЗИ сканера.

Есть пара таких решений, я мне они нравятся Astraia и GE ViewPoint но там цены за интегрированное рабочее место от 25 - 30К евро и еще нужны ключи DICOM по 10 - 15К баксов для каждого сканера что дороговато.

При этом в них протоколы нужно программировать самому.

JohnSUN

Цитата: Dr_Lecter от  5 октября 2015, 12:50Мне не нужна ни БД, ни каталогизация - мне нужен перенос уже проанализированных софтом сканера данных из сканера в протокол без помех и ошибок.
Ну, можно считать, что эта задача уже решена - код bormant'а это даже не печка, от которой начнутся танцы, это практически вся танцплощадка. Просто обязано работать.
Цитата: Dr_Lecter от  5 октября 2015, 12:50
А файлы с протоколами я прикрепляю к карточке пациента в МИС. И отдельным запросом после загружу все нужные мне переменные в SQL прошерстив автоматически файлы протоколов.
Упс!.. В отдельную базу (не в 1С) уходят данные, но не все, что есть в протоколе, а "все нужные мне"?.. Так, может быть, есть смысл чуток перевернуть процесс? Выдрать из протокола абсолютно все данные, сохранить их в МИС отдельным документом ("документом" в терминах 1С, а не файлом Writer'а) и распечатать прямо оттуда средствами самой МИС? Понимаю, что "довольно муторно разрабатывать свои внешние обработки, и нет нормального контакта с разработчиком", но, возможно, есть другие умельцы? Которым не муторно, а интересно, и с которыми контакт получше наладится? Или все-таки хочется сваять нетленку своими руками?..
Просто описанная последовательность действий выглядит как-то неправильно... вроде как "телега перед лошадью"...
Цитата: Dr_Lecter от  5 октября 2015, 12:50
Есть пара таких решений, я мне они нравятся Astraia и GE ViewPoint но там цены за интегрированное рабочее место от 25 - 30К евро
Поэтому я про Астраю и не заикался...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Dr_Lecter

JohnSUN

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

Все упирается в парадигму - все медицинские решения работают через DICOM которого у меня нет ни на сканерах ни отдельного сервера.

Я хочу избежать ошибок повторного ввода, и не заносить имеющие интерес для меня данные повторно, а брать их с машины.
И в эти данные попадает в общем-то и так все что получаем со сканера, кроме вычисляемых данных, которые проще рассчитать на основании базовых.

Например зачем мне возраст на день исследования брать если есть дата рождения и дата исследования.

На сегодняшний день лучше иметь свое решение в котором разбираешься чем то, что на скорую руку сделает заезжий спец в 1С и без которого там потом не разобраться.

Кстати 1С:Медицина.Поликлиника все равно документы выводит в OpenOffice  ;D ;)

bormant

#18
Цитата: Dr_Lecter от  5 октября 2015, 13:50Это отработает только в строке, имеющей в своем составе начало "Возраст :", если будет "Возр.:" то все.
Да, вы замените "9ярдов" на "9гдов".
Если не нужна идентификация поля, легко можно обойтись и без нее, найти "яр" и проверить, что перед ним цифра:
i = InStr(s, "яр")
While i > 0
    If (i > 1) and (InStr("0123456789",Mid(s,i-1,1)) > 0) Then Mid(s, i, 2, "г")
    i = InStr(i+1, s, "яр")
Wend

Это было для всех вхождений в строку. Если только первое, то
i = InStr(s, "яр")
If (i > 1) and (InStr("0123456789", Mid(s, i-1,1)) > 0) Then Mid(s, i, 2, "г")
Автору на яд. Поддержать форум.