Сценарии Windows для анализа файла HL7 - PullRequest
0 голосов
/ 24 июня 2010

У меня ОГРОМНЫЙ файл с большим количеством сегментов HL7.Он должен быть разбит на 1000 (или около того) меньших файлов.Так как он имеет данные HL7, существует паттерн (логика), который нужно пройти.Каждый блок данных начинается с "MSH |"и заканчивается, когда следующий сегмент начинается с «MSH |».

Сценарий должен быть основан на Windows (cmd) или VBS, поскольку я не могу установить на этот компьютер никакое программное обеспечение.

Структура файла:

MSH|abc|123|....
s2|sdsd|2323|
...
..
MSH|ns|43|...
...
..
.. 
MSH|sdfns|4343|...
...
..
asds|sds

MSH|sfns|3|...
...
..
as|ss

Файл в приведенном выше примере должен быть разбит на 2 или 3 файла.Кроме того, файлы поступают из UNIX, поэтому символы новой строки должны оставаться такими, как они есть в исходном файле.

Любая помощь?

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

Это пример сценария, который я использовал для анализа больших файлов hl7 в отдельные файлы с новыми именами файлов на основе файла данных.Использует REBOL, который не требует установки, т.е.основная версия не делает никаких записей в реестре.

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

Rebol [
    file: %split-hl7.r
    author: "Graham Chiu"
    date: 17-Feb-2010
    purpose: {split HL7 messages into single messages}
]

fn: %05112010_0730.dat
outdir: %05112010_0730/

if not exists? outdir [
    make-dir outdir
]

data: read fn
cnt: 0
filename: join copy/part form fn -4 + length? form fn "-"
separator: rejoin [ newline "MSH"]
parse/all data [
    some [
        [ copy result to separator | copy result to end ]
        (
            write to-file rejoin [ outdir filename cnt ".txt" ] result
            print "Got result"
            ?? result
            cnt: cnt + 1
        )
        1 skip
    ]
]
1 голос
/ 30 июня 2010

HL7 имеет много сегментов - я предполагаю, что вы знаете, что в вашем файле есть только сегменты MSH. Итак, вы пытались разобрать файл для строки "(новая строка) MSH |"? Просто оставьте работающий буфер и сохраните его в выходном файле, когда он станет слишком большим.

...