接收worklist服务器发回信息的处理问题

puddingli 2018-04-08 11:22:17
我有个程序请求worklist服务器查询病人ID后返回病人的各项信息。
请求已经成功了,worklist服务器的日志也显示给我的程序发送了病人的信息,但是我的程序该怎么处理接收到的消息?有没有相应的代码例程?谢谢大家。
需要把病人信息一项一项分出来,存到对应的数组里,用的是socket通信。
worklist服务器返回的病人信息日志如下:
2018-04-04 11:10:17,551 [DicomServer: 218.0.25.194 Read [17]] DEBUG - Send MetaInfo:
(0000,0002) UI =Modality Worklist Information Model – FIND # 22 Affected SOP Class UID 1
(0000,0100) US 32800 # 2 Command Field 1
(0000,0120) US 1 # 2 Message ID Being Responded To 1
(0000,0800) US 514 # 2 Data Set Type 1
(0000,0900) US 65280 # 2 Status 1

2018-04-04 11:10:17,551 [DicomServer: 218.0.25.194 Read [17]] DEBUG - Send DataSet:
(0008,0050) SH [0000003] # 8 Accession Number 1
(0008,0090) PN [] # 0 Referring Physician's Name 1
(0008,1110) SQ Referenced Study Sequence
(0008,1120) SQ Referenced Patient Sequence
(0010,0010) PN [DU SI JI] # 8 Patient's Name 1
(0010,0020) LO [0000009707] # 10 Patient ID 1
(0010,0030) DA [19820117] # 8 Patient's Birth Date 1
(0010,0040) CS [M] # 2 Patient's Sex 1
(0010,1030) DS [0] # 2 Patient's Weight 1
(0010,2000) LO [] # 0 Medical Alerts 1-N
(0010,2110) LO [] # 0 Allergies 1-N
(0010,21c0) US 4 # 2 Pregnancy Status 1
(0020,000d) UI [1.2.842065.32022387.1156269686] # 30 Study Instance UID 1
(0032,1032) PN [0^0] # 4 Requesting Physician 1
(0032,1060) LO [REQUESTED_DESC] # 14 Requested Procedure Description 1
(0032,1064) SQ Requested Procedure Code Sequence
(0038,0010) LO [55] # 2 Admission ID 1
(0038,0050) LO [] # 0 Special Needs 1
(0038,0300) LO [] # 0 Current Patient Location 1
(0038,0500) LO [] # 0 Patient State 1
(0040,0100) SQ Scheduled Procedure Step Sequence
Item:
> (0008,0060) CS [DR] # 2 Modality 1
> (0040,0001) AE [ZX] # 2 Scheduled Station AE Title 1-N
> (0040,0002) DA [20180404] # 8 Scheduled Procedure Step Start Date 1
> (0040,0003) TM [070000.000] # 10 Scheduled Procedure Step Start Time 1
> (0040,0006) PN [0^0] # 4 Scheduled Performing Physician's Name 1
> (0040,0007) LO [SPS_DESC] # 8 Scheduled Procedure Step Description 1
> (0040,0008) SQ Scheduled Protocol Code Sequence
> (0040,0009) SH [55] # 2 Scheduled Procedure Step ID 1(0040,1001) SH [55] # 2 Requested Procedure ID 1
(0040,3001) LO [] # 0 Confidentiality Constraint on Patient Data Description 1

2018-04-04 11:10:17,551 [DicomServer: 218.0.25.194 Read [17]] DEBUG - Send MetaInfo:
(0000,0002) UI =Modality Worklist Information Model – FIND # 22 Affected SOP Class UID 1
(0000,0100) US 32800 # 2 Command Field 1
(0000,0120) US 1 # 2 Message ID Being Responded To 1
(0000,0800) US 257 # 2 Data Set Type 1
(0000,0900) US 0 # 2 Status 1
...全文
1459 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-04-08
  • 打赏
  • 举报
回复
仅供参考:
//NAME: essaie bla bla
//DIMENSION: 8
//DATA
//1  14  15
//2  11  10
//3  6   4
//4  7   13
//5  9   21
//6  19  3
//7  1   5
//8  8   8
//EOF
//
// 文本文件中可能还含有其他内容,但是需要用到的内容即以上

//比如data.txt:
//NAME: essaie bla bla
//其它内容
//DIMENSION: 8
//其它内容
//DATA
//其它内容
//1  14  15
//其它内容
//2  11  10
//其它内容
//3  6   4
//其它内容
//4  7   13
//其它内容
//5  9   21
//其它内容
//6  19  3
//其它内容
//7  1   5
//其它内容
//8  8   8
//其它内容
//EOF

// 目标是要获取NAME后字串,DIMENSION后数值,以及DATA以下的数值
// 其中NAME就是随便个字句,DIMENSION是城市数量,DATA以下是城市编号,X坐标,Y坐标
// 所有的这些将赋值给一个事先定义好的结构
#include <stdio.h>
#include <string.h>
#define MAXCPL   80   //每行最大字符数
#define MAXCITY  100  //每组数据中DATA最多项数,DIMENSION的最大值
#define MAXNAMEL 32   //NAME最大长度
struct S {
    char NAME[MAXNAMEL+1];
    int  DIMENSION;
    struct D {
        int NO;
        int X;
        int Y;
    } DATA[MAXCITY];
} s;
FILE *f;
int st,n,i;
char ln[MAXCPL];
int main() {
    f=fopen("data.txt","r");
    if (NULL==f) {
        printf("Can not open file data.txt!\n");
        return 1;
    }
    st=0;
    n=0;
    while (1) {
        if (NULL==fgets(ln,MAXCPL,f)) break;
        if (st==0) {
            if (1==sscanf(ln,"NAME: %31[^\n]",s.NAME)) st=1;
        } else if (st==1) {
            if (1==sscanf(ln,"DIMENSION: %d",&s.DIMENSION)) st=2;
        } else if (st==2) {
            if (0==strcmp(ln,"DATA\n")) st=3;
        } else if (st==3) {
            if (3==sscanf(ln,"%d%d%d",&s.DATA[n].NO,&s.DATA[n].X,&s.DATA[n].Y)) {
                n++;
                if (n>=MAXCITY || n>=s.DIMENSION) break;
            }
        }
    }
    fclose(f);
    printf("s.NAME=[%s]\n",s.NAME);
    printf("s.DIMENSION=%d\n",s.DIMENSION);
    for (i=0;i<n;i++) {
        printf("s.DATA[%d].NO,X,Y=%d,%d,%d\n",i,s.DATA[i].NO,s.DATA[i].X,s.DATA[i].Y);
    }
    return 0;
}
//s.NAME=[essaie bla bla]
//s.DIMENSION=8
//s.DATA[0].NO,X,Y=1,14,15
//s.DATA[1].NO,X,Y=2,11,10
//s.DATA[2].NO,X,Y=3,6,4
//s.DATA[3].NO,X,Y=4,7,13
//s.DATA[4].NO,X,Y=5,9,21
//s.DATA[5].NO,X,Y=6,19,3
//s.DATA[6].NO,X,Y=7,1,5
//s.DATA[7].NO,X,Y=8,8,8

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧