- ONCWEBP2 ;HINES OIFO/RTK - PARSER DISPLAY FOR CLOUD SERVER ; 2/5/24 1:07pm
- ;;2.2;ONCOLOGY;**19**;Jul 31, 2013;Build 4
- ;
- Q
- ;
- ;--- CS SCHEMA RESPONSE FROM THE CLOUD WEB SERVICE
- ;
- ; <CsGetSchemaResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema...
- ; <IsRequestValid>false</IsRequestValid>
- ; <Schema>106</Schema>
- ; <SchemaName>Breast</SchemaName>
- ; <Discriminator />
- ; </CsGetSchemaResponse>
- ;
- ;
- PARSESCR ;parse CS Schema response message from cloud server
- ;
- ;Supported IA #3561 reference to ^MXMLDOM
- ;
- ;ONCRHDL = response handle from the MXML parser
- ;ONCTAG1 = 1st level tags
- ;ONCPARR = array of server response values; ^TMP("ONCPARSE" = errors
- ;ERRFLG SET = 0 if NO CS errors, if there are CS errors set = 1
- N ONCRHDL,ONCTAG1
- S ONCCSSCH="E",ONCCSSNM=""
- S ERRFLG=0 S ONCRHDL=$$EN^MXMLDOM($NA(^TMP("ONCSCRSP",$J)),"W")
- I $D(^TMP("MXMLERR",$J)) D Q
- .N HDL S HDL=^TMP("MXMLERR",$J)
- .W !!?3,"XML message",!
- .N X S X=^TMP("MXMLERR",$J,HDL,"MSG") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
- .W !?3,"XML error",!
- .N X S X=^TMP("MXMLERR",$J,HDL,"XML") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
- .S ERRFLG=2
- ;--- Traverse top level child(ren) nodes
- K ONCPARR,^TMP("ONCPARSE",$J)
- N CT S CT=1 F S CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT) Q:CT=0 D
- .N ONCTAG1 S ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
- .N OUT S OUT=""
- .N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT,"TXT") OUT=TXT(1)
- .S ONCPARR(ONCTAG1)=OUT
- .I ONCTAG1="Schema" S ONCCSSCH=OUT
- .I ONCTAG1="SchemaName" S ONCCSSNM=OUT
- .Q
- D DELETE^MXMLDOM(ONCRHDL)
- K ONCRHDL
- Q
- ;
- ;--- CS TABLE RESPONSE FROM THE CLOUD WEB SERVICE
- ;
- ; <CsGetSchemaResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema...
- ; <IsRequestValid></IsRequestValid>
- ; <CrResponse></CrResponse>
- ; <SCHEMA></SCHEMA>
- ; <TABLE>
- ; <ROWS>
- ; <ROW>
- ; <CODE>
- ; <DESCR>
- ; <ACS>
- ; . . .
- ; <NUMBER></NUMBER>
- ; <PATTERN></PATTERN>
- ; <SUBTITLE></SUBTITLE>
- ; <TITLE></TITLE>
- ; <NOTES>
- ; <TNS>
- ; <TN>
- ; . . .
- ; </TNS>
- ; <FNS/>
- ; </NOTES>
- ; </TABLE>
- ; </CrResponse>
- ;</TableRecordCompleteResponse>
- ;
- ;
- PARSETBR ;parse CS Table response message from cloud server
- ;
- ;Supported IA #3561 reference to ^MXMLDOM
- ;
- ;ONCRHDL = response handle from the MXML parser
- ;ONCTAG1 = 1st level tags; ONCTAG2 = 2nd level tags; ONCTAG3 = 3rd level tags
- ;ONCPARR = array of server response values; ^TMP("ONCPARSE" = errors
- ;ERRFLG SET = 0 if NO EDITs errors, if there are EDITs errors set = 1
- N ONCRHDL,ONCTAG1,ONCTAG2,ONCTAG3,ONCTAG4,ONCTAG5
- S ERRFLG=0 S ONCRHDL=$$EN^MXMLDOM($NA(^TMP("ONCTBRSP",$J)),"W")
- I $D(^TMP("MXMLERR",$J)) D Q
- .N HDL S HDL=^TMP("MXMLERR",$J)
- .W !!?3,"XML message",!
- .N X S X=^TMP("MXMLERR",$J,HDL,"MSG") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
- .W !?3,"XML error",!
- .N X S X=^TMP("MXMLERR",$J,HDL,"XML") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
- .S ERRFLG=2
- ;--- Traverse top level child(ren) nodes
- K ONCPARR,ONCVLARR,^TMP("ONCPARSE",$J)
- N CT,NUM,NOTE S NUM=0,NOTE=1
- S CT=1 F S CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT) Q:CT=0 D
- .N ONCTAG1 S ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
- .;--- Traverse second level child(ren) nodes
- .N CT2 S CT2=1 F S CT2=$$CHILD^MXMLDOM(ONCRHDL,CT,CT2) Q:CT2=0 D
- ..N ONCTAG2 S ONCTAG2=$$NAME^MXMLDOM(ONCRHDL,CT2)
- ..N OUT S OUT=""
- ..N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT2,"TXT") OUT=TXT(1)
- ..;S ONCPARR(ONCTAG2)=OUT
- ..;--- Traverse third level child(ren) nodes
- ..N CT3 S CT3=1 F S CT3=$$CHILD^MXMLDOM(ONCRHDL,CT2,CT3) Q:CT3=0 D
- ...N ONCTAG3 S ONCTAG3=$$NAME^MXMLDOM(ONCRHDL,CT3)
- ...N OUT S OUT=""
- ...N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT3,"TXT") OUT=TXT(1)
- ...S ONCPARR(ONCTAG3)=OUT
- ...;--- Traverse fourth level child(ren) nodes
- ...N CT4 S CT4=1 F S CT4=$$CHILD^MXMLDOM(ONCRHDL,CT3,CT4) Q:CT4=0 D
- ....N ONCTAG4 S ONCTAG4=$$NAME^MXMLDOM(ONCRHDL,CT4)
- ....N OUT S OUT=""
- ....N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT4,"TXT") OUT=TXT(1)
- ....I ONCTAG4="ROW" S NUM=NUM+1
- ....;--- Traverse fifth level child(ren) nodes
- ....N CT5 S CT5=1 F S CT5=$$CHILD^MXMLDOM(ONCRHDL,CT4,CT5) Q:CT5=0 D
- .....N ONCTAG5 S ONCTAG5=$$NAME^MXMLDOM(ONCRHDL,CT5)
- .....N OUT S OUT=""
- .....N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT5,"TXT") OUT=TXT(1)
- .....I ONCTAG5="CODE" S ^TMP("ONCPARSE",$J,NUM,"CODE")=OUT D
- ......I OUT?3N1"-"3N D RANGE Q
- ......I OUT="000" S ONCVLARR(0)=""
- ......S ONCVLARR(OUT)=""
- .....I ONCTAG5="DESCR" S ^TMP("ONCPARSE",$J,NUM,"DESCR")=OUT ;txt runs 1 line?
- .....I ONCTAG5="TN" S ^TMP("ONCPARSE",$J,"NOTE",NOTE)=OUT,NOTE=NOTE+1
- ...Q
- ..Q
- .Q
- D DELETE^MXMLDOM(ONCRHDL)
- K ONCRHDL
- Q
- ;
- ;--- CS COMPUTE COLLABORATIVE STAGE RESPONSE FROM THE CLOUD WEB SERVICE
- ;
- ; CS ERRORS
- ; <CsCalculateResponse xmlns:xsi="http://www.w3.org/2001/...XMLSchema">
- ; <NumberOfError>0</NumberOfError>
- ; <IsRequestValid>false</IsRequestValid>
- ; <Message>Lookup of codes (988, 988, 988) in Serum Tumor Marker S Value Table
- ; Based on CS SSF 1, 2, 3 returns "ERROR".
- ; </Message>
- ; </CsCalculateResponse>
- ;
- ; CS SUCCESS
- ; <CsCalculateResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema-inst...
- ; <NumberOfError>0</NumberOfError>
- ; <IsRequestValid>true</IsRequestValid>
- ; <CS-STOR>
- ; <T>30</T>
- ; <TDESCR>p</TDESCR>
- ; <N>00</N>
- ; <NDESCR>c</NDESCR>
- ; <M>00</M>
- ; <MDESCR>c</MDESCR>
- ; <AJCC>30</AJCC>
- ; <AJCC7-T></AJCC7-T>
- ; <AJCC7-TDESCR></AJCC7-TDESCR>
- ; <AJCC7-N></AJCC7-N>
- ; <AJCC7-NDESCR></AJCC7-NDESCR>
- ; <AJCC7-M></AJCC7-M>
- ; <AJCC7-MDESCR></AJCC7-MDESCR>
- ; <AJCC7-STAGE></AJCC7-STAGE>
- ; <SS1977>2</SS1977>
- ; <SS2000>2</SS2000>
- ; </CS-STOR>
- ; <CS-DISP>
- ; <T>T3</T>
- ; <TDESCR>p</TDESCR>
- ; <N>N0</N>
- ; <NDESCR>c</NDESCR>
- ; <M>M0</M>
- ; <MDESCR>c</MDESCR>
- ; <AJCC>II</AJCC>
- ; <AJCC7-T></AJCC7-T>
- ; <AJCC7-TDESCR></AJCC7-TDESCR>
- ; <AJCC7-N></AJCC7-N>
- ; <AJCC7-NDESCR></AJCC7-NDESCR>
- ; <AJCC7-M></AJCC7-M>
- ; <AJCC7-MDESCR></AJCC7-MDESCR>
- ; <AJCC7-STAGE></AJCC7-STAGE>
- ; <SS1977>RE</SS1977>
- ; <SS2000>RE</SS2000>
- ; </CS-DISP>
- ; <APIVER>020550</APIVER>
- ; <VERSION>2.00P</VERSION>
- ; </CS-RESPONSE>
- ;
- PARSECS ;parse CS Schema response message from cloud server
- ;
- ;Supported IA #3561 reference to ^MXMLDOM
- ;
- ;ONCRHDL = response handle from the MXML parser
- ;ONCTAG1 = 1st level tags, ONCTAG2 = 2nd level tags
- ;ONCPARR = array of server response tags and values
- ;ONCSTORE = array for derived values to store in 165.5, returned if successful
- ;ONCDISPL = array for derived values to display, returned if successful
- ;ONCCSERR = array of error messages, returned if unsuccessful
- ;ONCAPIVR = CS version number, ONCVERSN = version
- ;ERRFLG SET = 0 if NO CS errors, success
- ; = 1 if there are CS errors set
- ; = 2 if there is XML request/response failure
- N ONCRHDL,ONCTAG1
- S ONCCSSCH="E",ONCCSSNM=""
- S ERRFLG=0 S ONCRHDL=$$EN^MXMLDOM($NA(^TMP("ONCCSRSP",$J)),"W")
- I $D(^TMP("MXMLERR",$J)) D Q
- .S ERRFLG=2
- .N HDL S HDL=^TMP("MXMLERR",$J)
- .W !!?3,"XML message",!
- .N X S X=^TMP("MXMLERR",$J,HDL,"MSG") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
- .W !?3,"XML error",!
- .N X S X=^TMP("MXMLERR",$J,HDL,"XML") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
- .K ONCRHDL,^TMP("ONCCSRSP",$J)
- ;--- Traverse top level child(ren) nodes
- K ONCPARR,ONCSTORE,ONCDISPL,ONCAPIVR,ONCVERSN,ONCCSERR
- N CT S CT=1 F S CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT) Q:CT=0 D
- .N ONCTAG1 S ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
- .N OUT S OUT=""
- .N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT,"TXT") OUT=TXT(1)
- .;W !?2,"onctag1=",ONCTAG1,"---> out=",OUT
- .S ONCPARR(ONCTAG1)=OUT
- .;I ONCTAG1="IsRequestValid",OUT="false" S ERRFLG=1
- .I ONCTAG1="Message" S ONCCSERR(ONCTAG1)=OUT S ERRFLG=1 Q
- .I ONCTAG1="ErrorMessage" S ONCCSERR(ONCTAG1)=OUT S ERRFLG=1 Q
- .;--- Traverse second level child(ren) nodes
- .N CT2 S CT2=1 F S CT2=$$CHILD^MXMLDOM(ONCRHDL,CT,CT2) Q:CT2=0 D
- ..N ONCTAG2 S ONCTAG2=$$NAME^MXMLDOM(ONCRHDL,CT2)
- ..N OUT S OUT=""
- ..N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT2,"TXT") OUT=TXT(1)
- ..;W !,?8,"onctag2=",ONCTAG2,": ",OUT
- ..S ONCPARR(ONCTAG2)=OUT
- ..I ONCTAG1="CsStor" S ONCSTORE(ONCTAG2)=OUT
- ..I ONCTAG1="CsDisp" S ONCDISPL(ONCTAG2)=OUT
- ..Q
- .I ONCTAG1="Apiver" S ONCAPIVR=OUT
- .I ONCTAG1="Version" S ONCVERSN=OUT
- D DELETE^MXMLDOM(ONCRHDL)
- K ONCRHDL,^TMP("ONCCSRSP",$J)
- Q
- ;
- DISERR ;
- I $D(ONCPARR("Message")) W !?3,ONCPARR("Message"),!!
- I $D(ONCPARR("ErrorMessage")) W !?3,ONCPARR("ErrorMessage"),!!
- ; W N N F N=1:1 S N=$O(ONCCSERR(N)) W !,N
- Q
- ;
- RANGE ;
- N LOW,HIGH,Z
- S LOW=$P(OUT,"-",1),HIGH=$P(OUT,"-",2)
- F Z=LOW:1:HIGH S ONCVLARR(Z)=""
- Q
- ;
- DISPLAY ; display CS table codes, descriptions and notes
- ;
- K ^UTILITY($J,"W")
- S PG=0,EX="",LINE=$S($E(IOST,1,2)="C-":IOSL-2,1:IOSL-6)
- W @IOF
- I $D(ONCPARR("TITLE")) W !?4,ONCPARR("TITLE")
- I $D(ONCPARR("SUBTITLE")) W !?4,ONCPARR("SUBTITLE")
- W !
- N CODE,DESCR S CODE="",DESCR=""
- F N=0:0 S N=$O(^TMP("ONCPARSE",$J,N)) Q:N'>0 D
- .S CODE=^TMP("ONCPARSE",$J,N,"CODE"),DESCR=^TMP("ONCPARSE",$J,N,"DESCR")
- .N X S X=CODE_" "_DESCR S DIWL=3,DIWR=77 D ^DIWP,^DIWW D P Q:EX=U
- F N=0:0 S N=$O(^TMP("ONCPARSE",$J,"NOTE",N)) Q:N'>0 D
- .W ! N X S X=^TMP("ONCPARSE",$J,"NOTE",N)
- .S DIWL=3,DIWR=77 D ^DIWP,^DIWW D P Q:EX=U
- Q
- ;
- P ;
- I ($Y'<(LINE-1)) D Q:EX=U W !
- .I IOST?1"C".E W ! K DIR S DIR(0)="E",DIR("A")="Enter RETURN to continue"
- .D ^DIR I 'Y S EX=U Q
- .D HDR Q
- Q
- HDR ; Header
- W @IOF S PG=PG+1
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HONCWEBP2 9632 printed Feb 18, 2025@23:55:45 Page 2
- ONCWEBP2 ;HINES OIFO/RTK - PARSER DISPLAY FOR CLOUD SERVER ; 2/5/24 1:07pm
- +1 ;;2.2;ONCOLOGY;**19**;Jul 31, 2013;Build 4
- +2 ;
- +3 QUIT
- +4 ;
- +5 ;--- CS SCHEMA RESPONSE FROM THE CLOUD WEB SERVICE
- +6 ;
- +7 ; <CsGetSchemaResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema...
- +8 ; <IsRequestValid>false</IsRequestValid>
- +9 ; <Schema>106</Schema>
- +10 ; <SchemaName>Breast</SchemaName>
- +11 ; <Discriminator />
- +12 ; </CsGetSchemaResponse>
- +13 ;
- +14 ;
- PARSESCR ;parse CS Schema response message from cloud server
- +1 ;
- +2 ;Supported IA #3561 reference to ^MXMLDOM
- +3 ;
- +4 ;ONCRHDL = response handle from the MXML parser
- +5 ;ONCTAG1 = 1st level tags
- +6 ;ONCPARR = array of server response values; ^TMP("ONCPARSE" = errors
- +7 ;ERRFLG SET = 0 if NO CS errors, if there are CS errors set = 1
- +8 NEW ONCRHDL,ONCTAG1
- +9 SET ONCCSSCH="E"
- SET ONCCSSNM=""
- +10 SET ERRFLG=0
- SET ONCRHDL=$$EN^MXMLDOM($NAME(^TMP("ONCSCRSP",$JOB)),"W")
- +11 IF $DATA(^TMP("MXMLERR",$JOB))
- Begin DoDot:1
- +12 NEW HDL
- SET HDL=^TMP("MXMLERR",$JOB)
- +13 WRITE !!?3,"XML message",!
- +14 NEW X
- SET X=^TMP("MXMLERR",$JOB,HDL,"MSG")
- SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- +15 WRITE !?3,"XML error",!
- +16 NEW X
- SET X=^TMP("MXMLERR",$JOB,HDL,"XML")
- SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- +17 SET ERRFLG=2
- End DoDot:1
- QUIT
- +18 ;--- Traverse top level child(ren) nodes
- +19 KILL ONCPARR,^TMP("ONCPARSE",$JOB)
- +20 NEW CT
- SET CT=1
- FOR
- SET CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT)
- if CT=0
- QUIT
- Begin DoDot:1
- +21 NEW ONCTAG1
- SET ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
- +22 NEW OUT
- SET OUT=""
- +23 NEW TXT
- if $$TEXT^MXMLDOM(ONCRHDL,CT,"TXT")
- SET OUT=TXT(1)
- +24 SET ONCPARR(ONCTAG1)=OUT
- +25 IF ONCTAG1="Schema"
- SET ONCCSSCH=OUT
- +26 IF ONCTAG1="SchemaName"
- SET ONCCSSNM=OUT
- +27 QUIT
- End DoDot:1
- +28 DO DELETE^MXMLDOM(ONCRHDL)
- +29 KILL ONCRHDL
- +30 QUIT
- +31 ;
- +32 ;--- CS TABLE RESPONSE FROM THE CLOUD WEB SERVICE
- +33 ;
- +34 ; <CsGetSchemaResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema...
- +35 ; <IsRequestValid></IsRequestValid>
- +36 ; <CrResponse></CrResponse>
- +37 ; <SCHEMA></SCHEMA>
- +38 ; <TABLE>
- +39 ; <ROWS>
- +40 ; <ROW>
- +41 ; <CODE>
- +42 ; <DESCR>
- +43 ; <ACS>
- +44 ; . . .
- +45 ; <NUMBER></NUMBER>
- +46 ; <PATTERN></PATTERN>
- +47 ; <SUBTITLE></SUBTITLE>
- +48 ; <TITLE></TITLE>
- +49 ; <NOTES>
- +50 ; <TNS>
- +51 ; <TN>
- +52 ; . . .
- +53 ; </TNS>
- +54 ; <FNS/>
- +55 ; </NOTES>
- +56 ; </TABLE>
- +57 ; </CrResponse>
- +58 ;</TableRecordCompleteResponse>
- +59 ;
- +60 ;
- PARSETBR ;parse CS Table response message from cloud server
- +1 ;
- +2 ;Supported IA #3561 reference to ^MXMLDOM
- +3 ;
- +4 ;ONCRHDL = response handle from the MXML parser
- +5 ;ONCTAG1 = 1st level tags; ONCTAG2 = 2nd level tags; ONCTAG3 = 3rd level tags
- +6 ;ONCPARR = array of server response values; ^TMP("ONCPARSE" = errors
- +7 ;ERRFLG SET = 0 if NO EDITs errors, if there are EDITs errors set = 1
- +8 NEW ONCRHDL,ONCTAG1,ONCTAG2,ONCTAG3,ONCTAG4,ONCTAG5
- +9 SET ERRFLG=0
- SET ONCRHDL=$$EN^MXMLDOM($NAME(^TMP("ONCTBRSP",$JOB)),"W")
- +10 IF $DATA(^TMP("MXMLERR",$JOB))
- Begin DoDot:1
- +11 NEW HDL
- SET HDL=^TMP("MXMLERR",$JOB)
- +12 WRITE !!?3,"XML message",!
- +13 NEW X
- SET X=^TMP("MXMLERR",$JOB,HDL,"MSG")
- SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- +14 WRITE !?3,"XML error",!
- +15 NEW X
- SET X=^TMP("MXMLERR",$JOB,HDL,"XML")
- SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- +16 SET ERRFLG=2
- End DoDot:1
- QUIT
- +17 ;--- Traverse top level child(ren) nodes
- +18 KILL ONCPARR,ONCVLARR,^TMP("ONCPARSE",$JOB)
- +19 NEW CT,NUM,NOTE
- SET NUM=0
- SET NOTE=1
- +20 SET CT=1
- FOR
- SET CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT)
- if CT=0
- QUIT
- Begin DoDot:1
- +21 NEW ONCTAG1
- SET ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
- +22 ;--- Traverse second level child(ren) nodes
- +23 NEW CT2
- SET CT2=1
- FOR
- SET CT2=$$CHILD^MXMLDOM(ONCRHDL,CT,CT2)
- if CT2=0
- QUIT
- Begin DoDot:2
- +24 NEW ONCTAG2
- SET ONCTAG2=$$NAME^MXMLDOM(ONCRHDL,CT2)
- +25 NEW OUT
- SET OUT=""
- +26 NEW TXT
- if $$TEXT^MXMLDOM(ONCRHDL,CT2,"TXT")
- SET OUT=TXT(1)
- +27 ;S ONCPARR(ONCTAG2)=OUT
- +28 ;--- Traverse third level child(ren) nodes
- +29 NEW CT3
- SET CT3=1
- FOR
- SET CT3=$$CHILD^MXMLDOM(ONCRHDL,CT2,CT3)
- if CT3=0
- QUIT
- Begin DoDot:3
- +30 NEW ONCTAG3
- SET ONCTAG3=$$NAME^MXMLDOM(ONCRHDL,CT3)
- +31 NEW OUT
- SET OUT=""
- +32 NEW TXT
- if $$TEXT^MXMLDOM(ONCRHDL,CT3,"TXT")
- SET OUT=TXT(1)
- +33 SET ONCPARR(ONCTAG3)=OUT
- +34 ;--- Traverse fourth level child(ren) nodes
- +35 NEW CT4
- SET CT4=1
- FOR
- SET CT4=$$CHILD^MXMLDOM(ONCRHDL,CT3,CT4)
- if CT4=0
- QUIT
- Begin DoDot:4
- +36 NEW ONCTAG4
- SET ONCTAG4=$$NAME^MXMLDOM(ONCRHDL,CT4)
- +37 NEW OUT
- SET OUT=""
- +38 NEW TXT
- if $$TEXT^MXMLDOM(ONCRHDL,CT4,"TXT")
- SET OUT=TXT(1)
- +39 IF ONCTAG4="ROW"
- SET NUM=NUM+1
- +40 ;--- Traverse fifth level child(ren) nodes
- +41 NEW CT5
- SET CT5=1
- FOR
- SET CT5=$$CHILD^MXMLDOM(ONCRHDL,CT4,CT5)
- if CT5=0
- QUIT
- Begin DoDot:5
- +42 NEW ONCTAG5
- SET ONCTAG5=$$NAME^MXMLDOM(ONCRHDL,CT5)
- +43 NEW OUT
- SET OUT=""
- +44 NEW TXT
- if $$TEXT^MXMLDOM(ONCRHDL,CT5,"TXT")
- SET OUT=TXT(1)
- +45 IF ONCTAG5="CODE"
- SET ^TMP("ONCPARSE",$JOB,NUM,"CODE")=OUT
- Begin DoDot:6
- +46 IF OUT?3N1"-"3N
- DO RANGE
- QUIT
- +47 IF OUT="000"
- SET ONCVLARR(0)=""
- +48 SET ONCVLARR(OUT)=""
- End DoDot:6
- +49 ;txt runs 1 line?
- IF ONCTAG5="DESCR"
- SET ^TMP("ONCPARSE",$JOB,NUM,"DESCR")=OUT
- +50 IF ONCTAG5="TN"
- SET ^TMP("ONCPARSE",$JOB,"NOTE",NOTE)=OUT
- SET NOTE=NOTE+1
- End DoDot:5
- End DoDot:4
- +51 QUIT
- End DoDot:3
- +52 QUIT
- End DoDot:2
- +53 QUIT
- End DoDot:1
- +54 DO DELETE^MXMLDOM(ONCRHDL)
- +55 KILL ONCRHDL
- +56 QUIT
- +57 ;
- +58 ;--- CS COMPUTE COLLABORATIVE STAGE RESPONSE FROM THE CLOUD WEB SERVICE
- +59 ;
- +60 ; CS ERRORS
- +61 ; <CsCalculateResponse xmlns:xsi="http://www.w3.org/2001/...XMLSchema">
- +62 ; <NumberOfError>0</NumberOfError>
- +63 ; <IsRequestValid>false</IsRequestValid>
- +64 ; <Message>Lookup of codes (988, 988, 988) in Serum Tumor Marker S Value Table
- +65 ; Based on CS SSF 1, 2, 3 returns "ERROR".
- +66 ; </Message>
- +67 ; </CsCalculateResponse>
- +68 ;
- +69 ; CS SUCCESS
- +70 ; <CsCalculateResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema-inst...
- +71 ; <NumberOfError>0</NumberOfError>
- +72 ; <IsRequestValid>true</IsRequestValid>
- +73 ; <CS-STOR>
- +74 ; <T>30</T>
- +75 ; <TDESCR>p</TDESCR>
- +76 ; <N>00</N>
- +77 ; <NDESCR>c</NDESCR>
- +78 ; <M>00</M>
- +79 ; <MDESCR>c</MDESCR>
- +80 ; <AJCC>30</AJCC>
- +81 ; <AJCC7-T></AJCC7-T>
- +82 ; <AJCC7-TDESCR></AJCC7-TDESCR>
- +83 ; <AJCC7-N></AJCC7-N>
- +84 ; <AJCC7-NDESCR></AJCC7-NDESCR>
- +85 ; <AJCC7-M></AJCC7-M>
- +86 ; <AJCC7-MDESCR></AJCC7-MDESCR>
- +87 ; <AJCC7-STAGE></AJCC7-STAGE>
- +88 ; <SS1977>2</SS1977>
- +89 ; <SS2000>2</SS2000>
- +90 ; </CS-STOR>
- +91 ; <CS-DISP>
- +92 ; <T>T3</T>
- +93 ; <TDESCR>p</TDESCR>
- +94 ; <N>N0</N>
- +95 ; <NDESCR>c</NDESCR>
- +96 ; <M>M0</M>
- +97 ; <MDESCR>c</MDESCR>
- +98 ; <AJCC>II</AJCC>
- +99 ; <AJCC7-T></AJCC7-T>
- +100 ; <AJCC7-TDESCR></AJCC7-TDESCR>
- +101 ; <AJCC7-N></AJCC7-N>
- +102 ; <AJCC7-NDESCR></AJCC7-NDESCR>
- +103 ; <AJCC7-M></AJCC7-M>
- +104 ; <AJCC7-MDESCR></AJCC7-MDESCR>
- +105 ; <AJCC7-STAGE></AJCC7-STAGE>
- +106 ; <SS1977>RE</SS1977>
- +107 ; <SS2000>RE</SS2000>
- +108 ; </CS-DISP>
- +109 ; <APIVER>020550</APIVER>
- +110 ; <VERSION>2.00P</VERSION>
- +111 ; </CS-RESPONSE>
- +112 ;
- PARSECS ;parse CS Schema response message from cloud server
- +1 ;
- +2 ;Supported IA #3561 reference to ^MXMLDOM
- +3 ;
- +4 ;ONCRHDL = response handle from the MXML parser
- +5 ;ONCTAG1 = 1st level tags, ONCTAG2 = 2nd level tags
- +6 ;ONCPARR = array of server response tags and values
- +7 ;ONCSTORE = array for derived values to store in 165.5, returned if successful
- +8 ;ONCDISPL = array for derived values to display, returned if successful
- +9 ;ONCCSERR = array of error messages, returned if unsuccessful
- +10 ;ONCAPIVR = CS version number, ONCVERSN = version
- +11 ;ERRFLG SET = 0 if NO CS errors, success
- +12 ; = 1 if there are CS errors set
- +13 ; = 2 if there is XML request/response failure
- +14 NEW ONCRHDL,ONCTAG1
- +15 SET ONCCSSCH="E"
- SET ONCCSSNM=""
- +16 SET ERRFLG=0
- SET ONCRHDL=$$EN^MXMLDOM($NAME(^TMP("ONCCSRSP",$JOB)),"W")
- +17 IF $DATA(^TMP("MXMLERR",$JOB))
- Begin DoDot:1
- +18 SET ERRFLG=2
- +19 NEW HDL
- SET HDL=^TMP("MXMLERR",$JOB)
- +20 WRITE !!?3,"XML message",!
- +21 NEW X
- SET X=^TMP("MXMLERR",$JOB,HDL,"MSG")
- SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- +22 WRITE !?3,"XML error",!
- +23 NEW X
- SET X=^TMP("MXMLERR",$JOB,HDL,"XML")
- SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- +24 KILL ONCRHDL,^TMP("ONCCSRSP",$JOB)
- End DoDot:1
- QUIT
- +25 ;--- Traverse top level child(ren) nodes
- +26 KILL ONCPARR,ONCSTORE,ONCDISPL,ONCAPIVR,ONCVERSN,ONCCSERR
- +27 NEW CT
- SET CT=1
- FOR
- SET CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT)
- if CT=0
- QUIT
- Begin DoDot:1
- +28 NEW ONCTAG1
- SET ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
- +29 NEW OUT
- SET OUT=""
- +30 NEW TXT
- if $$TEXT^MXMLDOM(ONCRHDL,CT,"TXT")
- SET OUT=TXT(1)
- +31 ;W !?2,"onctag1=",ONCTAG1,"---> out=",OUT
- +32 SET ONCPARR(ONCTAG1)=OUT
- +33 ;I ONCTAG1="IsRequestValid",OUT="false" S ERRFLG=1
- +34 IF ONCTAG1="Message"
- SET ONCCSERR(ONCTAG1)=OUT
- SET ERRFLG=1
- QUIT
- +35 IF ONCTAG1="ErrorMessage"
- SET ONCCSERR(ONCTAG1)=OUT
- SET ERRFLG=1
- QUIT
- +36 ;--- Traverse second level child(ren) nodes
- +37 NEW CT2
- SET CT2=1
- FOR
- SET CT2=$$CHILD^MXMLDOM(ONCRHDL,CT,CT2)
- if CT2=0
- QUIT
- Begin DoDot:2
- +38 NEW ONCTAG2
- SET ONCTAG2=$$NAME^MXMLDOM(ONCRHDL,CT2)
- +39 NEW OUT
- SET OUT=""
- +40 NEW TXT
- if $$TEXT^MXMLDOM(ONCRHDL,CT2,"TXT")
- SET OUT=TXT(1)
- +41 ;W !,?8,"onctag2=",ONCTAG2,": ",OUT
- +42 SET ONCPARR(ONCTAG2)=OUT
- +43 IF ONCTAG1="CsStor"
- SET ONCSTORE(ONCTAG2)=OUT
- +44 IF ONCTAG1="CsDisp"
- SET ONCDISPL(ONCTAG2)=OUT
- +45 QUIT
- End DoDot:2
- +46 IF ONCTAG1="Apiver"
- SET ONCAPIVR=OUT
- +47 IF ONCTAG1="Version"
- SET ONCVERSN=OUT
- End DoDot:1
- +48 DO DELETE^MXMLDOM(ONCRHDL)
- +49 KILL ONCRHDL,^TMP("ONCCSRSP",$JOB)
- +50 QUIT
- +51 ;
- DISERR ;
- +1 IF $DATA(ONCPARR("Message"))
- WRITE !?3,ONCPARR("Message"),!!
- +2 IF $DATA(ONCPARR("ErrorMessage"))
- WRITE !?3,ONCPARR("ErrorMessage"),!!
- +3 ; W N N F N=1:1 S N=$O(ONCCSERR(N)) W !,N
- +4 QUIT
- +5 ;
- RANGE ;
- +1 NEW LOW,HIGH,Z
- +2 SET LOW=$PIECE(OUT,"-",1)
- SET HIGH=$PIECE(OUT,"-",2)
- +3 FOR Z=LOW:1:HIGH
- SET ONCVLARR(Z)=""
- +4 QUIT
- +5 ;
- DISPLAY ; display CS table codes, descriptions and notes
- +1 ;
- +2 KILL ^UTILITY($JOB,"W")
- +3 SET PG=0
- SET EX=""
- SET LINE=$SELECT($EXTRACT(IOST,1,2)="C-":IOSL-2,1:IOSL-6)
- +4 WRITE @IOF
- +5 IF $DATA(ONCPARR("TITLE"))
- WRITE !?4,ONCPARR("TITLE")
- +6 IF $DATA(ONCPARR("SUBTITLE"))
- WRITE !?4,ONCPARR("SUBTITLE")
- +7 WRITE !
- +8 NEW CODE,DESCR
- SET CODE=""
- SET DESCR=""
- +9 FOR N=0:0
- SET N=$ORDER(^TMP("ONCPARSE",$JOB,N))
- if N'>0
- QUIT
- Begin DoDot:1
- +10 SET CODE=^TMP("ONCPARSE",$JOB,N,"CODE")
- SET DESCR=^TMP("ONCPARSE",$JOB,N,"DESCR")
- +11 NEW X
- SET X=CODE_" "_DESCR
- SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- DO P
- if EX=U
- QUIT
- End DoDot:1
- +12 FOR N=0:0
- SET N=$ORDER(^TMP("ONCPARSE",$JOB,"NOTE",N))
- if N'>0
- QUIT
- Begin DoDot:1
- +13 WRITE !
- NEW X
- SET X=^TMP("ONCPARSE",$JOB,"NOTE",N)
- +14 SET DIWL=3
- SET DIWR=77
- DO ^DIWP
- DO ^DIWW
- DO P
- if EX=U
- QUIT
- End DoDot:1
- +15 QUIT
- +16 ;
- P ;
- +1 IF ($Y'<(LINE-1))
- Begin DoDot:1
- +2 IF IOST?1"C".E
- WRITE !
- KILL DIR
- SET DIR(0)="E"
- SET DIR("A")="Enter RETURN to continue"
- +3 DO ^DIR
- IF 'Y
- SET EX=U
- QUIT
- +4 DO HDR
- QUIT
- End DoDot:1
- if EX=U
- QUIT
- WRITE !
- +5 QUIT
- HDR ; Header
- +1 WRITE @IOF
- SET PG=PG+1
- +2 QUIT