[英]Windows scripting to parse a HL7 file
我有一個包含很多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,因此換行符必須保留在源文件中。
有什么幫助嗎?
這是一個示例腳本,我使用該腳本將大型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
]
]
HL7有很多段-我假設您知道您的文件只有MSH段。 因此,您是否嘗試過分析文件中的字符串“(newline)MSH |”? 只需保留一個正在運行的緩沖區,然后在緩沖區過大時將其轉儲到輸出文件中即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.