ONCSED04 ;Hines OIFO/SG - EDITS API (EDIT INFO) ; 9/22/06 11:58am ;;2.11;ONCOLOGY;**47**;Mar 07, 1995;Build 19 ; ;--- SOAP REQUST TO THE ONCOLOGY WEB SERVICE ; ; ; ; ; ; ... ; ... ; ... ; ; ; ; ;--- SOAP RESPONSE FROM THE ONCOLOGY WEB SERVICE ; ; ; ; ; ; ... ; ; ... ; ; ; ... ; ; ; ; ... ; ... ; ; ... ; ; ; ; ; Q ; ;***** END ELEMENT CALLBACK FOR THE SAX PARSER ; ; ELMT Name of the element ; ENDEL(ELMT) ; N I,L,L2E,TMP S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L) D ENDEL^ONCSAPIX(ELMT) ;--- Description line I L2E="DESCRIPTION,P" D Q . S I=$O(@ONCXML@(ONCEDIEN,"D"," "),-1)+1 . S @ONCXML@(ONCEDIEN,"D",I)=$$TRIM^XLFSTR($G(ONCXML("TEXT")),"R") ;--- Help line I L2E="HELP,P" D Q . S I=$O(@ONCXML@(ONCEDIEN,"H"," "),-1)+1 . S @ONCXML@(ONCEDIEN,"H",I)=$$TRIM^XLFSTR($G(ONCXML("TEXT")),"R") Q ; ;***** GETS EDIT INFO FROM THE SERVER IF NECESSARY ; ; [.ONCSAPI] Reference to the API descriptor (see the ^ONCSED) ; ; ESNAME Edit set name ; ; EDTNDX Edit index ; ; Return Values: ; <0 Error descriptor ; >0 IEN of the edit info ; GETINFO(ONCSAPI,ESNAME,EDTNDX) ; N ONCEDESC ; Edit descriptor N ONCEDIEN ; IEN of the description ; N DST,ESNSUB,ONCREQ,ONCRSP,ONCXML,SVX,SVY,URL S ESNSUB=$E(ESNAME,1,250) ;--- Initialize constants and variables S ONCXML=$NA(^XTMP("ONCSAPI","EDITS")) ; ;--- Check if the edit info is available S ONCEDIEN=+$G(@ONCXML@("ES",ESNSUB,EDTNDX)) I ONCEDIEN>0 Q:$D(@ONCXML@(ONCEDIEN))>1 ONCEDIEN S ONCRSP=$NA(^TMP("ONCSED04",$J)) K @ONCRSP ; ;--- Get the server URL S URL=$$GETCSURL^ONCSAPIU() ; D LOCK^DILF($NA(@ONCXML@("ES",ESNSUB,EDTNDX))) E Q $$ERROR^ONCSAPIE(-15,,"local cache") S SVX=$X,SVY=$Y S RC=0 D . ;--- Check if the info has become available . S ONCEDIEN=+$G(@ONCXML@("ES",ESNSUB,EDTNDX)) . I ONCEDIEN>0 Q:$D(@ONCXML@(ONCEDIEN))>1 . ; . ;--- Prepare the request data . S DST="ONCREQ" . D HEADER^ONCSAPIR(.DST,"ED-GET-EDITINFO") . D PUT^ONCSAPIR(.DST,"EDIT-SET",ESNAME) . D PUT^ONCSAPIR(.DST,"EDIT",EDTNDX) . D PUT^ONCSAPIR(.DST,"TEXT-WIDTH",75) . D TRAILER^ONCSAPIR(.DST) . K DST . ; . ;--- Send the request and get the response . D:$G(ONCSAPI("DEBUG")) . . D ZW^ONCSAPIU("ONCREQ","*** 'ED-GET-EDITDESC' REQUEST ***") . S RC=$$REQUEST^ONCSAPIR(URL,ONCRSP,"ONCREQ") Q:RC<0 . D:$G(ONCSAPI("DEBUG")) . . D ZW^ONCSAPIU(ONCRSP,"*** 'ED-GET-EDITDESC' RESPONSE ***") . ; . ;--- Parse the response . S ONCEDIEN=+$O(@ONCXML@(" "),-1)+1,ONCEDESC=EDTNDX . D SETCBK(.CBK),EN^MXMLPRSE(ONCRSP,.CBK,"W") . ;--- Check for parsing and web service errors . S RC=$$CHKERR^ONCSAPIR(.ONCXML) Q:RC<0 . ; . ;--- Complete the edit info . S @ONCXML@(ONCEDIEN,0)=ONCEDESC . S @ONCXML@("ES",ESNSUB,EDTNDX)=ONCEDIEN S $X=SVX,$Y=SVY L -@ONCXML@("ES",ESNSUB,EDTNDX) ; ;--- Cleanup K @ONCRSP Q $S(RC<0:RC,1:ONCEDIEN) ; ;***** RETURNS THE EDIT DESCRIPTION NODE (LOADS DATA IF NECESSARY) ; ; [.ONCSAPI] Reference to the API descriptor (see the ^ONCSED) ; ; ESNAME Edit set name ; ; EDTNDX Edit index ; ; The ^TMP("ONCSED04",$J) global node is used by this function. ; ; Return Values: ; <0 Error descriptor ; Closed root of the edit description node ; GETEDESC(ONCSAPI,ESNAME,EDTNDX) ; N NODE,RC D CLEAR^ONCSAPIE() Q:$G(EDTNDX,-1)<0 $$ERROR^ONCSAPIE(-6,,"EDTNDX",$G(EDTNDX)) S RC=$$GETINFO(.ONCSAPI,ESNAME,EDTNDX) Q $S(RC<0:RC,1:$NA(^XTMP("ONCSAPI","EDITS",RC,"D"))) ; ;***** RETURNS THE EDIT HELP NODE (LOADS DATA IF NECESSARY) ; ; [.ONCSAPI] Reference to the API descriptor (see the ^ONCSED) ; ; ESNAME Edit set name ; ; EDTNDX Edit index ; ; The ^TMP("ONCSED04",$J) global node is used by this function. ; ; Return Values: ; <0 Error descriptor ; Closed root of the edit help node ; GETEDHLP(ONCSAPI,ESNAME,EDTNDX) ; N NODE,RC D CLEAR^ONCSAPIE() Q:$G(EDTNDX,-1)<0 $$ERROR^ONCSAPIE(-6,,"EDTNDX",$G(EDTNDX)) S RC=$$GETINFO(.ONCSAPI,ESNAME,EDTNDX) Q $S(RC<0:RC,1:$NA(^XTMP("ONCSAPI","EDITS",RC,"H"))) ; ;***** SETS THE EVENT INTERFACE ENTRY POINTS ; ; .CBK Reference to the destination list ; SETCBK(CBK) ; ;;CHARACTERS^ TEXT^ONCSED04 ;;ENDELEMENT^ENDEL^ONCSED04 ; D SETCBK^ONCSAPIX(.CBK,"SETCBK^ONCSED04") Q ; ;***** TEXT CALLBACK FOR THE SAX PARSER ; ; TXT Line of unmarked text ; TEXT(TXT) ; N I,L,L2E,TMP S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L) ;--- Text of the edit description or help I (L2E="DESCRIPTION,P")!(L2E="HELP,P") D Q . S ONCXML("TEXT")=$G(ONCXML("TEXT"))_TXT ;--- Edit name I L2E="ED-RESPONSE,NAME" S $P(ONCEDESC,U,2)=$P(ONCEDESC,U,2)_TXT Q ;--- Default processing D TEXT^ONCSAPIX(TXT) Q