📄 scp-decode.cpp
字号:
section_1_1(inf.ana); break;
case 2:
section_1_2(inf.ana); break;
case 3:
section_1_3(inf.ana); break;
case 4:
section_1_4(inf.ana); break;
case 5:
section_1_5(inf.ana); break;
case 6:
section_1_6(inf.ana); break;
case 7:
section_1_7(inf.ana); break;
case 8:
section_1_8(inf.ana); break;
case 9:
section_1_9(inf.ana); break;
case 10:
if(!inf.cli.number_drug)
{
inf.cli.drug=NULL;
inf.cli.text_drug=NULL;
dim=0;
}
section_1_10(inf.cli,dim); break;
case 11:
section_1_11(inf.ana); break;
case 12:
section_1_12(inf.ana); break;
case 13:
if(!inf.cli.number_diagnose)
{
inf.cli.diagnose=NULL;
inf.cli.text_diagnose=NULL;
dim=0;
}
section_1_13(inf.cli,dim); break;
case 14:
section_1_14(inf.des); break;
case 15:
section_1_15(inf.des); break;
case 16:
section_1_16(inf.des); break;
case 17:
section_1_17(inf.des); break;
case 18:
section_1_18(inf.des); break;
case 19:
section_1_19(inf.des); break;
case 20:
section_1_20(inf.cli); break;
case 21:
section_1_21(inf.cli); break;
case 22:
section_1_22(inf.cli); break;
case 23:
section_1_23(inf.des); break;
case 24:
section_1_24(inf.des); break;
case 25:
section_1_25(inf.dev); break;
case 26:
section_1_26(inf.dev); break;
case 27:
section_1_27(inf.dev); break;
case 28:
section_1_28(inf.dev); break;
case 29:
section_1_29(inf.dev); break;
case 30:
if(!inf.cli.number_text)
{
inf.cli.free_text=NULL;
inf.cli.text_free_text=NULL;
dim=0;
}
section_1_30(inf.cli,dim); break;
case 31:
section_1_31(inf.dev); break;
case 32:
if(!inf.cli.number_hystory)
{
inf.cli.medical_hystory=NULL;
dim=0;
}
section_1_32(inf.cli,dim,inf.des.acquiring.protocol_revision_number); break;
case 33:
section_1_33(inf.dev); break;
case 34:
section_1_34(inf.dev); break;
case 35:
if(!inf.cli.number_free_hystory)
{
inf.cli.free_medical_hystory=NULL;
inf.cli.text_free_medical_hystory=NULL;
dim=0;
}
section_1_35(inf.cli,dim); break;
case 255:
section_1_255(); break;
default:
section_1_();
break;
}//end switch
}//end do
while((tag!=255) && (_COUNT_BYTE<num));
if ((inf.des.analyzing.protocol_revision_number==0) && (version>0))
inf.des.analyzing.protocol_revision_number=version; // by E.C. may 2004 CARDIOLINE 1.0
}//end section_1
void section_1_0(demographic &ana)
// section 1 tag 0
{
U_int_M dim;
ReadByte(dim);
ana.last_name=ReadString(ana.last_name=NULL,dim);
}//end section_1_0
void section_1_1(demographic &ana)
// section 1 tag 1
{
U_int_M dim;
ReadByte(dim);
ana.first_name=ReadString(ana.first_name=NULL,dim);
}//end section_1_1
void section_1_2(demographic &ana)
//section 1 tag 2
{
U_int_M dim;
ReadByte(dim);
ana.ID=ReadString(ana.ID=NULL,dim);
}//end section_1_2
void section_1_3(demographic &ana)
// section 1 tag 3
{
U_int_M dim;
ReadByte(dim);
ana.second_last_name=ReadString(ana.second_last_name=NULL,dim);
}//end section_1_3
void section_1_4(demographic &ana)
// section 1 tag 4
{
U_int_M dim;
ReadByte(dim);
ReadByte(ana.age.value);
ReadByte(ana.age.unit);
if(ana.age.unit>5)
ana.age.unit=0;
}//end section_1_4
void section_1_5(demographic &ana)
// section 1 tag 5
{
U_int_M dim;
char data[18], temp[18];
U_int_S m, g, num;
U_int_M a;
ReadByte(dim);
ReadByte(a);
ReadByte(m);
ReadByte(g);
ultoa(g,data,10);
strcat(data,_month[m].sentence);
ultoa(a,temp,10);
strcat(data,temp);
num=strlen(data);
if(num!=0 && (ana.date_birth=(char*)mymalloc(num+1))==NULL)
{
fprintf(stderr,"Not enough memory"); // no, exit //
exit(2);
}
strcpy(ana.date_birth,data);
struct tm tmf; // by E.C. feb 2006
tmf.tm_year = a - 1900;
tmf.tm_mon = m - 1;
tmf.tm_mday = g;
tmf.tm_hour = 0;
tmf.tm_min = 0;
tmf.tm_sec = 0;
tmf.tm_isdst = 0;
ana.date_birth2 = mktime(&tmf); // store date in native format
}//end section_1_5
void section_1_6(demographic &ana)
// section 1 tag 6
{
U_int_M dim;
ReadByte(dim);
ReadByte(ana.height.value);
ReadByte(ana.height.unit);
if(ana.height.unit>3)
ana.height.unit=0;
}//end section_1_6
void section_1_7(demographic &ana)
// section 1 tag 7
{
U_int_M dim;
ReadByte(dim);
ReadByte(ana.weight.value);
ReadByte(ana.weight.unit);
if(ana.weight.unit>4)
ana.weight.unit=0;
}//end section_1_7
void section_1_8(demographic &ana)
// section 1 tag 8
{
U_int_M dim;
ReadByte(dim);
ReadByte(ana.sex);
if(ana.sex>2)
ana.sex=3;
}//end section_1_8
void section_1_9(demographic &ana)
// section 1 tag 9
{
U_int_M dim;
ReadByte(dim);
ReadByte(ana.race);
if(ana.race>3)
ana.race=0;
}//end section_1_9
void section_1_10(clinic &cli, U_int_M &dim)
// section 1 tag 10
{
U_int_M val;
U_int_S code_;
char *temp_string, *pos_char;
int_M pos;
ReadByte(val);
/*
this tag may have more instances; each instance have a: table code (1 byte), class code (1 byte)
drug code (1 byte), text description of the drug (at least 1 byte with NULL).
*/
if(val)
{
if((cli.drug=(info_drug*)realloc(cli.drug,sizeof(info_drug)*(cli.number_drug+1)))==NULL)
{
fprintf(stderr,"Not enough memory"); // no, exit //
exit(2);
}
ReadByte(cli.drug[cli.number_drug].table);
ReadByte(code_);
if(!cli.drug[cli.number_drug].table)
{
pos=Look(class_drug,0,15,code_);
if(pos<=0)
cli.drug[cli.number_drug].classes=0;
else
cli.drug[cli.number_drug].classes=pos;
}
else
cli.drug[cli.number_drug].classes=code_;
ReadByte(cli.drug[cli.number_drug].drug_code );
if(!cli.drug[cli.number_drug].table)
{
code_=cli.drug[cli.number_drug].drug_code +256*cli.drug[cli.number_drug].classes;
pos=Look(class_drug,16,88,code_);
if(pos<0)
pos=0;
cli.drug[cli.number_drug].drug_code =pos;
}
cli.drug[cli.number_drug].length=val-3; //string length + NULL
if(cli.drug[cli.number_drug].length)
{
temp_string=ReadString(temp_string=NULL,cli.drug[cli.number_drug].length);
strcat(temp_string,STR_END);
dim+=strlen(temp_string);
if((cli.text_drug=(char*)realloc(cli.text_drug,sizeof(char)*(dim+1)))==NULL)
{
fprintf(stderr,"Not enough memory"); // no, exit //
exit(2);
}
pos_char=cli.text_drug;
pos_char+=dim-strlen(temp_string);
strcpy(pos_char,temp_string);
free(temp_string);
}
cli.number_drug++;
}
}//end section_1_10
void section_1_11(demographic &ana)
// section 1 tag 11
{
U_int_M dim;
ReadByte(dim);
if(dim)
ReadByte(ana.systolic_pressure);
else
ana.systolic_pressure=0;
}//end section_1_11
void section_1_12(demographic &ana)
// section 1 tag 12
{
U_int_M dim;
ReadByte(dim);
if(dim)
ReadByte(ana.diastolic_pressure);
else
ana.diastolic_pressure=0;
}//end section_1_12
void section_1_13(clinic &cli, U_int_M &dim)
// section 1 tag 13
{
U_int_M val;
char *temp_string, *pos_char;
ReadByte(val);
if(val)
{
if((cli.diagnose=(numeric*)realloc(cli.diagnose,sizeof(numeric)*(cli.number_diagnose+1)))==NULL)
{
fprintf(stderr,"Not enough memory"); // no, exit //
exit(2);
}
cli.diagnose[cli.number_diagnose].unit=cli.number_diagnose+1;
cli.diagnose[cli.number_diagnose].value=val;
temp_string=ReadString(temp_string=NULL,cli.diagnose[cli.number_diagnose].value);
strcat(temp_string,STR_END);
dim+=strlen(temp_string);
if((cli.text_diagnose=(char*)realloc(cli.text_diagnose,dim+1))==NULL)
{
fprintf(stderr,"Not enough memory"); // no, exit //
exit(2);
}
pos_char=cli.text_diagnose;
pos_char+=dim-strlen(temp_string);
strcpy(pos_char,temp_string);
free(temp_string);
cli.number_diagnose++;
}
}//end section_1_13
void section_1_14(descriptive &des)
// section 1 tag 14
{
U_int_M dim, dim_to_skip;
U_int_S i, mask, code_;
int_M pos;
fpos_t filepos, filepos_iniz;
ReadByte(dim);
fgetpos(in,&filepos);
fgetpos(in,&filepos_iniz); // by E.C. may 2004 ESAOTE save to reposition at the end of this section
dim_to_skip=dim;
dim+=filepos COMPAT;
ReadByte(des.acquiring.institution_number);
ReadByte(des.acquiring.department_number);
ReadByte(des.acquiring.ID);
ReadByte(des.acquiring.type);
if(des.acquiring.type>1)
des.acquiring.type=2;
ReadByte(des.acquiring.manifacturer);
if(des.acquiring.manifacturer>20 && des.acquiring.manifacturer!=255)
des.acquiring.manifacturer=0;
des.acquiring.model_description=ReadString(des.acquiring.model_description=NULL,6);
ReadByte(des.acquiring.protocol_revision_number);
ReadByte(des.acquiring.category);
pos=Look(compatibility,0,3,des.acquiring.category);
if(pos<0)
pos=4;
des.acquiring.category=pos;
ReadByte(code_);
if(code_<128U)
pos=0;
else if((code_<192U) && (code_>=128U))
pos=1;
else
{
pos=Look(language_code,2,15,code_);
if(pos<0)
pos=16;
}
des.acquiring.language=pos;
ReadByte(code_);
mask=0x10;
for(i=0;i<4;i++)
{
if(code_&mask)
des.acquiring.capability[i]=i+4;
else
des.acquiring.capability[i]=i;
mask<<=1;
}
ReadByte(des.acquiring.AC);
if(des.acquiring.AC>2)
des.acquiring.AC=0;
Skip(16);
des.acquiring.analysing_program_revision_number="\0";
des.acquiring.serial_number_device="\0";
des.acquiring.device_system_software="\0";
des.acquiring.device_SCP_implementation_software="\0";
des.acquiring.manifacturer_trade_name="\0";
ReadByte(i);
if(!i)
des.acquiring.analysing_program_revision_number="\0";
else
des.acquiring.analysing_program_revision_number=ReadString(des.acquiring.analysing_program_revision_number=NULL,i);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -