首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用命令行CMD在不同行中查找多个值

使用命令行CMD在不同行中查找多个值
EN

Stack Overflow用户
提问于 2015-04-28 23:53:37
回答 2查看 91关注 0票数 0

我有多个结果(放射学,实验室,病理学,转录)对同一个病人在一个文件和我只感兴趣的一组特定的价值观的结果。例如:我想在第一线找一份放射学报告,在第二行找病人MRN 123456789。这能用findstr实现吗?谢谢

代码语言:javascript
复制
MSH|^~\&|RADIOLOGY|1|SCM||20150303||ORU|20150303|T|2.3|20150303
PID||1111111|123456789^^^MRN_SB^||TEST^PATIENT^^^||19000101||^^||
PV1|1|E|ER^ER^1^SB||||||||||||||||||||||||||||||||||||||||||||||
ORC|RE|36543654|36543654|3003487889
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-29 03:42:41

代码语言:javascript
复制
@ECHO OFF
SETLOCAL
:: remove variables starting $
FOR  /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a="
SET "found="
SET "mrn=%1"
FOR /f "delims=" %%o IN (q29931949.txt) DO (
 FOR /f "tokens=1-4delims=|" %%a IN ("%%o") DO (
  IF DEFINED found IF "%%a"=="PID" (
   SET "$2=%%o"
   CALL :report "%%b" "%%c" "%%d"
  )
  SET "found="
  IF "%%a"=="MSH" IF "%%b"=="RADIOLOGY" SET found=Y
  IF "%%a"=="MSH" IF "%%c"=="RADIOLOGY" SET found=Y
  IF DEFINED found SET "$1=%%o"
 )
)

GOTO :EOF

:report
SET "field=%~1"
IF NOT DEFINED field GOTO :EOF
FOR /f "tokens=1delims=^^" %%r IN ("%~1") DO SET "field=%%r"
IF "%field%"=="%mrn%" FOR  /F "tokens=1*delims==" %%r In ('set $') DO ECHO(%%s
shift
GOTO report

我在测试中使用了一个名为q29931949.txt的文件,其中包含了您的数据。

你没有提供足够的信息来产生结果。例如,"MRN“是必需的数据项吗?

此过程将发现两条连续行,第一行在第一列中有"MSH“,在第二或第三列中有”放射学“,在第一列中有"PID”,第二、第三或第四列包含目标号码。

您将使用此批名称123456789运行该例程

它接受参数123456789并将其分配给mrn

然后,它读取文件并将tun中的每一行分配给%%o,并在|上标记该行,并将令牌1-4前瞻性地应用于%%a..%%d

主循环将found设置为空,然后设置为Y,只有当第一个字段是MSH和第二个或第二个RADIOLOGY时。如果设置了found标志,则将%%o中的原始行应用于$1。只有在循环开始时设置found (这意味着前面的行是MSH/RADIOLOGY),常规:report才会在第二行的原始内容被分配后调用。

:report例程将field设置为第一个参数,以查看是否还有要处理的其余参数。然后,for将字段的一部分分配给第一个插入符(^)到field。如果这与命令行中的mrn输入相匹配,那么$变量将被echo编辑到控制台(您没有说出实际要对数据做什么)。无论如何,都会检查其余的参数。

检查第二个/第三个(/fourth)参数的响应是为了满足字段中是否存在数据的需要,因为连续的|字符被解释为单个分隔符。

票数 1
EN

Stack Overflow用户

发布于 2015-04-29 07:47:25

为您选择的编程/脚本语言找到一个HL7解析器库,并使用它。从头开始编写HL7解析器是不值得的。应该为您可以使用的所有流行语言提供库。

如果你有具体的问题,可以再问一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29931949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档