Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ONCWEBP2

ONCWEBP2.m

Go to the documentation of this file.
  1. ONCWEBP2 ;HINES OIFO/RTK - PARSER DISPLAY FOR CLOUD SERVER ; 2/5/24 1:07pm
  1. ;;2.2;ONCOLOGY;**19**;Jul 31, 2013;Build 4
  1. ;
  1. Q
  1. ;
  1. ;--- CS SCHEMA RESPONSE FROM THE CLOUD WEB SERVICE
  1. ;
  1. ; <CsGetSchemaResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema...
  1. ; <IsRequestValid>false</IsRequestValid>
  1. ; <Schema>106</Schema>
  1. ; <SchemaName>Breast</SchemaName>
  1. ; <Discriminator />
  1. ; </CsGetSchemaResponse>
  1. ;
  1. ;
  1. PARSESCR ;parse CS Schema response message from cloud server
  1. ;
  1. ;Supported IA #3561 reference to ^MXMLDOM
  1. ;
  1. ;ONCRHDL = response handle from the MXML parser
  1. ;ONCTAG1 = 1st level tags
  1. ;ONCPARR = array of server response values; ^TMP("ONCPARSE" = errors
  1. ;ERRFLG SET = 0 if NO CS errors, if there are CS errors set = 1
  1. N ONCRHDL,ONCTAG1
  1. S ONCCSSCH="E",ONCCSSNM=""
  1. S ERRFLG=0 S ONCRHDL=$$EN^MXMLDOM($NA(^TMP("ONCSCRSP",$J)),"W")
  1. I $D(^TMP("MXMLERR",$J)) D Q
  1. .N HDL S HDL=^TMP("MXMLERR",$J)
  1. .W !!?3,"XML message",!
  1. .N X S X=^TMP("MXMLERR",$J,HDL,"MSG") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
  1. .W !?3,"XML error",!
  1. .N X S X=^TMP("MXMLERR",$J,HDL,"XML") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
  1. .S ERRFLG=2
  1. ;--- Traverse top level child(ren) nodes
  1. K ONCPARR,^TMP("ONCPARSE",$J)
  1. N CT S CT=1 F S CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT) Q:CT=0 D
  1. .N ONCTAG1 S ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
  1. .N OUT S OUT=""
  1. .N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT,"TXT") OUT=TXT(1)
  1. .S ONCPARR(ONCTAG1)=OUT
  1. .I ONCTAG1="Schema" S ONCCSSCH=OUT
  1. .I ONCTAG1="SchemaName" S ONCCSSNM=OUT
  1. .Q
  1. D DELETE^MXMLDOM(ONCRHDL)
  1. K ONCRHDL
  1. Q
  1. ;
  1. ;--- CS TABLE RESPONSE FROM THE CLOUD WEB SERVICE
  1. ;
  1. ; <CsGetSchemaResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema...
  1. ; <IsRequestValid></IsRequestValid>
  1. ; <CrResponse></CrResponse>
  1. ; <SCHEMA></SCHEMA>
  1. ; <TABLE>
  1. ; <ROWS>
  1. ; <ROW>
  1. ; <CODE>
  1. ; <DESCR>
  1. ; <ACS>
  1. ; . . .
  1. ; <NUMBER></NUMBER>
  1. ; <PATTERN></PATTERN>
  1. ; <SUBTITLE></SUBTITLE>
  1. ; <TITLE></TITLE>
  1. ; <NOTES>
  1. ; <TNS>
  1. ; <TN>
  1. ; . . .
  1. ; </TNS>
  1. ; <FNS/>
  1. ; </NOTES>
  1. ; </TABLE>
  1. ; </CrResponse>
  1. ;</TableRecordCompleteResponse>
  1. ;
  1. ;
  1. PARSETBR ;parse CS Table response message from cloud server
  1. ;
  1. ;Supported IA #3561 reference to ^MXMLDOM
  1. ;
  1. ;ONCRHDL = response handle from the MXML parser
  1. ;ONCTAG1 = 1st level tags; ONCTAG2 = 2nd level tags; ONCTAG3 = 3rd level tags
  1. ;ONCPARR = array of server response values; ^TMP("ONCPARSE" = errors
  1. ;ERRFLG SET = 0 if NO EDITs errors, if there are EDITs errors set = 1
  1. N ONCRHDL,ONCTAG1,ONCTAG2,ONCTAG3,ONCTAG4,ONCTAG5
  1. S ERRFLG=0 S ONCRHDL=$$EN^MXMLDOM($NA(^TMP("ONCTBRSP",$J)),"W")
  1. I $D(^TMP("MXMLERR",$J)) D Q
  1. .N HDL S HDL=^TMP("MXMLERR",$J)
  1. .W !!?3,"XML message",!
  1. .N X S X=^TMP("MXMLERR",$J,HDL,"MSG") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
  1. .W !?3,"XML error",!
  1. .N X S X=^TMP("MXMLERR",$J,HDL,"XML") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
  1. .S ERRFLG=2
  1. ;--- Traverse top level child(ren) nodes
  1. K ONCPARR,ONCVLARR,^TMP("ONCPARSE",$J)
  1. N CT,NUM,NOTE S NUM=0,NOTE=1
  1. S CT=1 F S CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT) Q:CT=0 D
  1. .N ONCTAG1 S ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
  1. .;--- Traverse second level child(ren) nodes
  1. .N CT2 S CT2=1 F S CT2=$$CHILD^MXMLDOM(ONCRHDL,CT,CT2) Q:CT2=0 D
  1. ..N ONCTAG2 S ONCTAG2=$$NAME^MXMLDOM(ONCRHDL,CT2)
  1. ..N OUT S OUT=""
  1. ..N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT2,"TXT") OUT=TXT(1)
  1. ..;S ONCPARR(ONCTAG2)=OUT
  1. ..;--- Traverse third level child(ren) nodes
  1. ..N CT3 S CT3=1 F S CT3=$$CHILD^MXMLDOM(ONCRHDL,CT2,CT3) Q:CT3=0 D
  1. ...N ONCTAG3 S ONCTAG3=$$NAME^MXMLDOM(ONCRHDL,CT3)
  1. ...N OUT S OUT=""
  1. ...N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT3,"TXT") OUT=TXT(1)
  1. ...S ONCPARR(ONCTAG3)=OUT
  1. ...;--- Traverse fourth level child(ren) nodes
  1. ...N CT4 S CT4=1 F S CT4=$$CHILD^MXMLDOM(ONCRHDL,CT3,CT4) Q:CT4=0 D
  1. ....N ONCTAG4 S ONCTAG4=$$NAME^MXMLDOM(ONCRHDL,CT4)
  1. ....N OUT S OUT=""
  1. ....N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT4,"TXT") OUT=TXT(1)
  1. ....I ONCTAG4="ROW" S NUM=NUM+1
  1. ....;--- Traverse fifth level child(ren) nodes
  1. ....N CT5 S CT5=1 F S CT5=$$CHILD^MXMLDOM(ONCRHDL,CT4,CT5) Q:CT5=0 D
  1. .....N ONCTAG5 S ONCTAG5=$$NAME^MXMLDOM(ONCRHDL,CT5)
  1. .....N OUT S OUT=""
  1. .....N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT5,"TXT") OUT=TXT(1)
  1. .....I ONCTAG5="CODE" S ^TMP("ONCPARSE",$J,NUM,"CODE")=OUT D
  1. ......I OUT?3N1"-"3N D RANGE Q
  1. ......I OUT="000" S ONCVLARR(0)=""
  1. ......S ONCVLARR(OUT)=""
  1. .....I ONCTAG5="DESCR" S ^TMP("ONCPARSE",$J,NUM,"DESCR")=OUT ;txt runs 1 line?
  1. .....I ONCTAG5="TN" S ^TMP("ONCPARSE",$J,"NOTE",NOTE)=OUT,NOTE=NOTE+1
  1. ...Q
  1. ..Q
  1. .Q
  1. D DELETE^MXMLDOM(ONCRHDL)
  1. K ONCRHDL
  1. Q
  1. ;
  1. ;--- CS COMPUTE COLLABORATIVE STAGE RESPONSE FROM THE CLOUD WEB SERVICE
  1. ;
  1. ; CS ERRORS
  1. ; <CsCalculateResponse xmlns:xsi="http://www.w3.org/2001/...XMLSchema">
  1. ; <NumberOfError>0</NumberOfError>
  1. ; <IsRequestValid>false</IsRequestValid>
  1. ; <Message>Lookup of codes (988, 988, 988) in Serum Tumor Marker S Value Table
  1. ; Based on CS SSF 1, 2, 3 returns "ERROR".
  1. ; </Message>
  1. ; </CsCalculateResponse>
  1. ;
  1. ; CS SUCCESS
  1. ; <CsCalculateResponse xmlns:xsi=""http://www.w3.org/2001/XMLSchema-inst...
  1. ; <NumberOfError>0</NumberOfError>
  1. ; <IsRequestValid>true</IsRequestValid>
  1. ; <CS-STOR>
  1. ; <T>30</T>
  1. ; <TDESCR>p</TDESCR>
  1. ; <N>00</N>
  1. ; <NDESCR>c</NDESCR>
  1. ; <M>00</M>
  1. ; <MDESCR>c</MDESCR>
  1. ; <AJCC>30</AJCC>
  1. ; <AJCC7-T></AJCC7-T>
  1. ; <AJCC7-TDESCR></AJCC7-TDESCR>
  1. ; <AJCC7-N></AJCC7-N>
  1. ; <AJCC7-NDESCR></AJCC7-NDESCR>
  1. ; <AJCC7-M></AJCC7-M>
  1. ; <AJCC7-MDESCR></AJCC7-MDESCR>
  1. ; <AJCC7-STAGE></AJCC7-STAGE>
  1. ; <SS1977>2</SS1977>
  1. ; <SS2000>2</SS2000>
  1. ; </CS-STOR>
  1. ; <CS-DISP>
  1. ; <T>T3</T>
  1. ; <TDESCR>p</TDESCR>
  1. ; <N>N0</N>
  1. ; <NDESCR>c</NDESCR>
  1. ; <M>M0</M>
  1. ; <MDESCR>c</MDESCR>
  1. ; <AJCC>II</AJCC>
  1. ; <AJCC7-T></AJCC7-T>
  1. ; <AJCC7-TDESCR></AJCC7-TDESCR>
  1. ; <AJCC7-N></AJCC7-N>
  1. ; <AJCC7-NDESCR></AJCC7-NDESCR>
  1. ; <AJCC7-M></AJCC7-M>
  1. ; <AJCC7-MDESCR></AJCC7-MDESCR>
  1. ; <AJCC7-STAGE></AJCC7-STAGE>
  1. ; <SS1977>RE</SS1977>
  1. ; <SS2000>RE</SS2000>
  1. ; </CS-DISP>
  1. ; <APIVER>020550</APIVER>
  1. ; <VERSION>2.00P</VERSION>
  1. ; </CS-RESPONSE>
  1. ;
  1. PARSECS ;parse CS Schema response message from cloud server
  1. ;
  1. ;Supported IA #3561 reference to ^MXMLDOM
  1. ;
  1. ;ONCRHDL = response handle from the MXML parser
  1. ;ONCTAG1 = 1st level tags, ONCTAG2 = 2nd level tags
  1. ;ONCPARR = array of server response tags and values
  1. ;ONCSTORE = array for derived values to store in 165.5, returned if successful
  1. ;ONCDISPL = array for derived values to display, returned if successful
  1. ;ONCCSERR = array of error messages, returned if unsuccessful
  1. ;ONCAPIVR = CS version number, ONCVERSN = version
  1. ;ERRFLG SET = 0 if NO CS errors, success
  1. ; = 1 if there are CS errors set
  1. ; = 2 if there is XML request/response failure
  1. N ONCRHDL,ONCTAG1
  1. S ONCCSSCH="E",ONCCSSNM=""
  1. S ERRFLG=0 S ONCRHDL=$$EN^MXMLDOM($NA(^TMP("ONCCSRSP",$J)),"W")
  1. I $D(^TMP("MXMLERR",$J)) D Q
  1. .S ERRFLG=2
  1. .N HDL S HDL=^TMP("MXMLERR",$J)
  1. .W !!?3,"XML message",!
  1. .N X S X=^TMP("MXMLERR",$J,HDL,"MSG") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
  1. .W !?3,"XML error",!
  1. .N X S X=^TMP("MXMLERR",$J,HDL,"XML") S DIWL=3,DIWR=77 D ^DIWP,^DIWW
  1. .K ONCRHDL,^TMP("ONCCSRSP",$J)
  1. ;--- Traverse top level child(ren) nodes
  1. K ONCPARR,ONCSTORE,ONCDISPL,ONCAPIVR,ONCVERSN,ONCCSERR
  1. N CT S CT=1 F S CT=$$CHILD^MXMLDOM(ONCRHDL,1,CT) Q:CT=0 D
  1. .N ONCTAG1 S ONCTAG1=$$NAME^MXMLDOM(ONCRHDL,CT)
  1. .N OUT S OUT=""
  1. .N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT,"TXT") OUT=TXT(1)
  1. .;W !?2,"onctag1=",ONCTAG1,"---> out=",OUT
  1. .S ONCPARR(ONCTAG1)=OUT
  1. .;I ONCTAG1="IsRequestValid",OUT="false" S ERRFLG=1
  1. .I ONCTAG1="Message" S ONCCSERR(ONCTAG1)=OUT S ERRFLG=1 Q
  1. .I ONCTAG1="ErrorMessage" S ONCCSERR(ONCTAG1)=OUT S ERRFLG=1 Q
  1. .;--- Traverse second level child(ren) nodes
  1. .N CT2 S CT2=1 F S CT2=$$CHILD^MXMLDOM(ONCRHDL,CT,CT2) Q:CT2=0 D
  1. ..N ONCTAG2 S ONCTAG2=$$NAME^MXMLDOM(ONCRHDL,CT2)
  1. ..N OUT S OUT=""
  1. ..N TXT S:$$TEXT^MXMLDOM(ONCRHDL,CT2,"TXT") OUT=TXT(1)
  1. ..;W !,?8,"onctag2=",ONCTAG2,": ",OUT
  1. ..S ONCPARR(ONCTAG2)=OUT
  1. ..I ONCTAG1="CsStor" S ONCSTORE(ONCTAG2)=OUT
  1. ..I ONCTAG1="CsDisp" S ONCDISPL(ONCTAG2)=OUT
  1. ..Q
  1. .I ONCTAG1="Apiver" S ONCAPIVR=OUT
  1. .I ONCTAG1="Version" S ONCVERSN=OUT
  1. D DELETE^MXMLDOM(ONCRHDL)
  1. K ONCRHDL,^TMP("ONCCSRSP",$J)
  1. Q
  1. ;
  1. DISERR ;
  1. I $D(ONCPARR("Message")) W !?3,ONCPARR("Message"),!!
  1. I $D(ONCPARR("ErrorMessage")) W !?3,ONCPARR("ErrorMessage"),!!
  1. ; W N N F N=1:1 S N=$O(ONCCSERR(N)) W !,N
  1. Q
  1. ;
  1. RANGE ;
  1. N LOW,HIGH,Z
  1. S LOW=$P(OUT,"-",1),HIGH=$P(OUT,"-",2)
  1. F Z=LOW:1:HIGH S ONCVLARR(Z)=""
  1. Q
  1. ;
  1. DISPLAY ; display CS table codes, descriptions and notes
  1. ;
  1. K ^UTILITY($J,"W")
  1. S PG=0,EX="",LINE=$S($E(IOST,1,2)="C-":IOSL-2,1:IOSL-6)
  1. W @IOF
  1. I $D(ONCPARR("TITLE")) W !?4,ONCPARR("TITLE")
  1. I $D(ONCPARR("SUBTITLE")) W !?4,ONCPARR("SUBTITLE")
  1. W !
  1. N CODE,DESCR S CODE="",DESCR=""
  1. F N=0:0 S N=$O(^TMP("ONCPARSE",$J,N)) Q:N'>0 D
  1. .S CODE=^TMP("ONCPARSE",$J,N,"CODE"),DESCR=^TMP("ONCPARSE",$J,N,"DESCR")
  1. .N X S X=CODE_" "_DESCR S DIWL=3,DIWR=77 D ^DIWP,^DIWW D P Q:EX=U
  1. F N=0:0 S N=$O(^TMP("ONCPARSE",$J,"NOTE",N)) Q:N'>0 D
  1. .W ! N X S X=^TMP("ONCPARSE",$J,"NOTE",N)
  1. .S DIWL=3,DIWR=77 D ^DIWP,^DIWW D P Q:EX=U
  1. Q
  1. ;
  1. P ;
  1. I ($Y'<(LINE-1)) D Q:EX=U W !
  1. .I IOST?1"C".E W ! K DIR S DIR(0)="E",DIR("A")="Enter RETURN to continue"
  1. .D ^DIR I 'Y S EX=U Q
  1. .D HDR Q
  1. Q
  1. HDR ; Header
  1. W @IOF S PG=PG+1
  1. Q