- ONCSAPI1 ;Hines OIFO/SG - COLLABORATIVE STAGING (DD TOOLS) ;06/23/10
- ;;2.2;ONCOLOGY;**1**;Jul 31, 2013;Build 8
- ;
- Q
- ;
- ;***** DISPLAYS THE ERRORS
- ERRORS(MODE,ERRCODE) ;
- S ERRCODE=+$G(ERRCODE)
- ;--- Display the explanations (for the user)
- I MODE="HLP" D:(ERRCODE=-10)
- . D ERROR^ONCSAPIE(-19,"Please try later.")
- E I MODE="INP" D:(ERRCODE'=-2)
- . D ERROR^ONCSAPIE(-20,"Please inform IRM about the problem.")
- E I MODE="CDN" D:(ERRCODE=-10)
- . D ERROR^ONCSAPIE(-21,"Please try later.")
- ;--- Display the error stack (for the IRM)
- D PRTERRS^ONCSAPIE()
- Q
- ;
- ;***** DISPLAYS THE HELP FOR A FIELD
- ;
- ; TABLE Table number (see the ^ONCSAPI routine)
- ;
- ; [IEN] IEN of the record in the file #165.5
- ;
- ; [SITE] Primary site
- ; [HIST] Histology
- ;
- ; Either the IEN or both the SITE and HIST must be provided.
- ;
- HELP(TABLE,IEN,SITE,HIST) ;
- N DISCRIM,EXIT,I,MNL,NODE,NOTE,ONCMSG,ONCSAPI,RC,ROW,SHNS,TBLIEN,TMP
- S SHNS=$S($G(X)="":1,1:X="??")
- D CLEAR^ONCSAPIE(1)
- D:$G(IEN)>0
- . S SITE=$TR($$GET1^DIQ(165.5,IEN,20.1,,,"ONCMSG"),".")
- . S HIST=$E($$HIST^ONCFUNC(IEN),1,4)
- . S DISCRIM=$$GET1^DIQ(165.5,IEN,240)
- I ($G(SITE)="")&($G(HIST)="") D Q
- . S TMP=""
- . S:$D(IEN)#10 TMP=TMP_", IEN="_IEN
- . S:$D(SITE)#10 TMP=TMP_", SITE="_SITE
- . S:$D(HIST)#10 TMP=TMP_", HIST="_HIST
- . S TMP=$P(TMP,", ",2,999)
- . D PRTERRS^ONCSAPIE($$ERROR^ONCSAPIE(-16,TMP,"IEN, SITE, HIST"))
- ;---
- L +^XTMP("ONCSAPI","TABLES","JOB",$J):5 E D Q
- . D ERROR^ONCSAPIE(-15,,"access control node")
- . D ERRORS("HLP")
- ;
- S RC=0 D
- . ;--- Get the table IEN
- . S TBLIEN=$$GETCSTBL^ONCSAPIT(.ONCSAPI,SITE,HIST,TABLE)
- . I TBLIEN<0 S RC=TBLIEN Q
- . ;--- Initialize constants and variables
- . S NODE=$NA(^XTMP("ONCSAPI","TABLES",TBLIEN))
- . S MNL=$S($G(IOSL)>3:IOSL-3,1:20),$Y=0
- . ;--- Display the title and optional subtitle
- . S TMP=$G(@NODE@(0))
- . D WW^ONCSAPIU($P(TMP,U,5))
- . D:$P(TMP,U,6)'="" WW^ONCSAPIU($P(TMP,U,6))
- . ;--- Display top notes
- . I SHNS D I $Y'<MNL S EXIT=$$PAGE^ONCSAPIU() Q:EXIT
- . . S (EXIT,NOTE)=0
- . . F S NOTE=$O(@NODE@("TN",NOTE)) Q:NOTE'>0 D Q:EXIT
- . . . D EN^DDIOL(" ")
- . . . I $Y'<MNL S EXIT=$$PAGE^ONCSAPIU() Q:EXIT
- . . . S I=0
- . . . F S I=$O(@NODE@("TN",NOTE,I)) Q:I'>0 D Q:EXIT
- . . . . D EN^DDIOL(@NODE@("TN",NOTE,I))
- . . . . S:$Y'<MNL EXIT=$$PAGE^ONCSAPIU()
- . ;--- Display the table
- . D EN^DDIOL(" ")
- . S (EXIT,ROW)=0
- . F S ROW=$O(@NODE@(ROW)) Q:ROW'>0 D Q:EXIT
- . . D EN^DDIOL($J($P(@NODE@(ROW,1),U),7))
- . . D:$D(@NODE@(ROW,3,1)) EN^DDIOL(@NODE@(ROW,3,1),,"?9")
- . . I $Y'<MNL S EXIT=$$PAGE^ONCSAPIU() Q:EXIT
- . . S I=1
- . . F S I=$O(@NODE@(ROW,3,I)) Q:I="" D Q:EXIT
- . . . D EN^DDIOL(@NODE@(ROW,3,I),,"!?9")
- . . . S:$Y'<MNL EXIT=$$PAGE^ONCSAPIU()
- . ;--- Display footnotes
- . I SHNS D I $Y'<MNL S EXIT=$$PAGE^ONCSAPIU() Q:EXIT
- . . S (EXIT,NOTE)=0
- . . F S NOTE=$O(@NODE@("FN",NOTE)) Q:NOTE'>0 D Q:EXIT
- . . . D EN^DDIOL(" ")
- . . . I $Y'<MNL S EXIT=$$PAGE^ONCSAPIU() Q:EXIT
- . . . S I=0
- . . . F S I=$O(@NODE@("FN",NOTE,I)) Q:I'>0 D Q:EXIT
- . . . . D EN^DDIOL(@NODE@("FN",NOTE,I))
- . . . . S:$Y'<MNL EXIT=$$PAGE^ONCSAPIU()
- . . D EN^DDIOL(" ")
- ;
- L -^XTMP("ONCSAPI","TABLES","JOB",$J)
- D:RC<0 ERRORS("HLP",RC)
- Q
- ;
- ;***** VALIDATES AND TRANSFORMS THE INPUT (CODES)
- ;
- ; X Input value should be assigned to the X local
- ; variable before calling this procedure. The
- ; variable is KILL'ed if it has an invalid value.
- ;
- ; TABLE Table number (see the ^ONCSAPI routine)
- ;
- ; CODELEN Valid length of the code
- ;
- ; [IEN] IEN of the record in the file #165.5
- ;
- ; [SITE] Primary site
- ; [HIST] Histology
- ;
- ; [SILENT] Silent mode flags (can be combined):
- ; D Do not display code description
- ; E Do not display error messages
- ;
- ; Either the IEN or both the SITE and HIST must be provided.
- ;
- INPUT(TABLE,CODELEN,IEN,SITE,HIST,SILENT) ;
- N CODE,ONCBUF,ONCSAPI,RC,TBLIEN,TMP
- S X=$$TRIM^XLFSTR($G(X))
- I X'?@(CODELEN_"N") K X Q
- S:'($D(SILENT)#10) SILENT=$S($G(DIUTIL)="VERIFY FIELDS":"DE",1:"")
- D CLEAR^ONCSAPIE(1)
- ;---
- D:$G(IEN)>0
- . S SITE=$TR($$GET1^DIQ(165.5,IEN,20.1,,,"ONCMSG"),".")
- . S HIST=$E($$HIST^ONCFUNC(IEN),1,4)
- . S DISCRIM=$$GET1^DIQ(165.5,IEN,240)
- I ($G(SITE)="")&($G(HIST)="") D K X Q
- . D PRTERRS^ONCSAPIE($$ERROR^ONCSAPIE(-16,,"IEN, SITE, HIST"))
- ;---
- L +^XTMP("ONCSAPI","TABLES","JOB",$J):5 E D K X Q
- . D ERROR^ONCSAPIE(-15,,"access control node")
- . D ERRORS("INP")
- ;
- S RC=0 D
- . ;--- Get the table IEN
- . S TBLIEN=$$GETCSTBL^ONCSAPIT(.ONCSAPI,SITE,HIST,TABLE)
- . I TBLIEN<0 S RC=TBLIEN Q
- . ;--- Check the single code
- . S CODE=+$G(X)
- . Q:$D(^XTMP("ONCSAPI","TABLES",TBLIEN,"C",CODE))
- . ;--- Check the interval
- . S TMP=$O(^XTMP("ONCSAPI","TABLES",TBLIEN,"C",CODE),-1)
- . I TMP'="" D Q:CODE'>$P(TMP,U,2)
- . . S TMP=$G(^XTMP("ONCSAPI","TABLES",TBLIEN,"C",TMP))
- . ;--- Invalid value
- . K X
- ;
- I $D(X)&(RC'<0) D:SILENT'["D"
- . Q:$$CODEDESC^ONCSAPIT(.ONCSAPI,SITE,HIST,TABLE,X,"ONCBUF")<0
- . I ONCBUF(1)["OBSOLETE" K X W " OBSOLETE code" Q
- . S TMP=""
- . F S TMP=$O(ONCBUF(TMP)) Q:TMP="" S ONCBUF(TMP,"F")="!?2"
- . D EN^DDIOL(.ONCBUF),EN^DDIOL(" ")
- ;
- L -^XTMP("ONCSAPI","TABLES","JOB",$J)
- I RC<0 D:SILENT'["E" ERRORS("INP",RC) K X
- Q
- ;
- CLEANUP ;Cleanup
- K DIUTIL
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HONCSAPI1 5511 printed Mar 13, 2025@21:32:30 Page 2
- ONCSAPI1 ;Hines OIFO/SG - COLLABORATIVE STAGING (DD TOOLS) ;06/23/10
- +1 ;;2.2;ONCOLOGY;**1**;Jul 31, 2013;Build 8
- +2 ;
- +3 QUIT
- +4 ;
- +5 ;***** DISPLAYS THE ERRORS
- ERRORS(MODE,ERRCODE) ;
- +1 SET ERRCODE=+$GET(ERRCODE)
- +2 ;--- Display the explanations (for the user)
- +3 IF MODE="HLP"
- if (ERRCODE=-10)
- Begin DoDot:1
- +4 DO ERROR^ONCSAPIE(-19,"Please try later.")
- End DoDot:1
- +5 IF '$TEST
- IF MODE="INP"
- if (ERRCODE'=-2)
- Begin DoDot:1
- +6 DO ERROR^ONCSAPIE(-20,"Please inform IRM about the problem.")
- End DoDot:1
- +7 IF '$TEST
- IF MODE="CDN"
- if (ERRCODE=-10)
- Begin DoDot:1
- +8 DO ERROR^ONCSAPIE(-21,"Please try later.")
- End DoDot:1
- +9 ;--- Display the error stack (for the IRM)
- +10 DO PRTERRS^ONCSAPIE()
- +11 QUIT
- +12 ;
- +13 ;***** DISPLAYS THE HELP FOR A FIELD
- +14 ;
- +15 ; TABLE Table number (see the ^ONCSAPI routine)
- +16 ;
- +17 ; [IEN] IEN of the record in the file #165.5
- +18 ;
- +19 ; [SITE] Primary site
- +20 ; [HIST] Histology
- +21 ;
- +22 ; Either the IEN or both the SITE and HIST must be provided.
- +23 ;
- HELP(TABLE,IEN,SITE,HIST) ;
- +1 NEW DISCRIM,EXIT,I,MNL,NODE,NOTE,ONCMSG,ONCSAPI,RC,ROW,SHNS,TBLIEN,TMP
- +2 SET SHNS=$SELECT($GET(X)="":1,1:X="??")
- +3 DO CLEAR^ONCSAPIE(1)
- +4 if $GET(IEN)>0
- Begin DoDot:1
- +5 SET SITE=$TRANSLATE($$GET1^DIQ(165.5,IEN,20.1,,,"ONCMSG"),".")
- +6 SET HIST=$EXTRACT($$HIST^ONCFUNC(IEN),1,4)
- +7 SET DISCRIM=$$GET1^DIQ(165.5,IEN,240)
- End DoDot:1
- +8 IF ($GET(SITE)="")&($GET(HIST)="")
- Begin DoDot:1
- +9 SET TMP=""
- +10 if $DATA(IEN)#10
- SET TMP=TMP_", IEN="_IEN
- +11 if $DATA(SITE)#10
- SET TMP=TMP_", SITE="_SITE
- +12 if $DATA(HIST)#10
- SET TMP=TMP_", HIST="_HIST
- +13 SET TMP=$PIECE(TMP,", ",2,999)
- +14 DO PRTERRS^ONCSAPIE($$ERROR^ONCSAPIE(-16,TMP,"IEN, SITE, HIST"))
- End DoDot:1
- QUIT
- +15 ;---
- +16 LOCK +^XTMP("ONCSAPI","TABLES","JOB",$JOB):5
- IF '$TEST
- Begin DoDot:1
- +17 DO ERROR^ONCSAPIE(-15,,"access control node")
- +18 DO ERRORS("HLP")
- End DoDot:1
- QUIT
- +19 ;
- +20 SET RC=0
- Begin DoDot:1
- +21 ;--- Get the table IEN
- +22 SET TBLIEN=$$GETCSTBL^ONCSAPIT(.ONCSAPI,SITE,HIST,TABLE)
- +23 IF TBLIEN<0
- SET RC=TBLIEN
- QUIT
- +24 ;--- Initialize constants and variables
- +25 SET NODE=$NAME(^XTMP("ONCSAPI","TABLES",TBLIEN))
- +26 SET MNL=$SELECT($GET(IOSL)>3:IOSL-3,1:20)
- SET $Y=0
- +27 ;--- Display the title and optional subtitle
- +28 SET TMP=$GET(@NODE@(0))
- +29 DO WW^ONCSAPIU($PIECE(TMP,U,5))
- +30 if $PIECE(TMP,U,6)'=""
- DO WW^ONCSAPIU($PIECE(TMP,U,6))
- +31 ;--- Display top notes
- +32 IF SHNS
- Begin DoDot:2
- +33 SET (EXIT,NOTE)=0
- +34 FOR
- SET NOTE=$ORDER(@NODE@("TN",NOTE))
- if NOTE'>0
- QUIT
- Begin DoDot:3
- +35 DO EN^DDIOL(" ")
- +36 IF $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- if EXIT
- QUIT
- +37 SET I=0
- +38 FOR
- SET I=$ORDER(@NODE@("TN",NOTE,I))
- if I'>0
- QUIT
- Begin DoDot:4
- +39 DO EN^DDIOL(@NODE@("TN",NOTE,I))
- +40 if $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- End DoDot:4
- if EXIT
- QUIT
- End DoDot:3
- if EXIT
- QUIT
- End DoDot:2
- IF $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- if EXIT
- QUIT
- +41 ;--- Display the table
- +42 DO EN^DDIOL(" ")
- +43 SET (EXIT,ROW)=0
- +44 FOR
- SET ROW=$ORDER(@NODE@(ROW))
- if ROW'>0
- QUIT
- Begin DoDot:2
- +45 DO EN^DDIOL($JUSTIFY($PIECE(@NODE@(ROW,1),U),7))
- +46 if $DATA(@NODE@(ROW,3,1))
- DO EN^DDIOL(@NODE@(ROW,3,1),,"?9")
- +47 IF $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- if EXIT
- QUIT
- +48 SET I=1
- +49 FOR
- SET I=$ORDER(@NODE@(ROW,3,I))
- if I=""
- QUIT
- Begin DoDot:3
- +50 DO EN^DDIOL(@NODE@(ROW,3,I),,"!?9")
- +51 if $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- End DoDot:3
- if EXIT
- QUIT
- End DoDot:2
- if EXIT
- QUIT
- +52 ;--- Display footnotes
- +53 IF SHNS
- Begin DoDot:2
- +54 SET (EXIT,NOTE)=0
- +55 FOR
- SET NOTE=$ORDER(@NODE@("FN",NOTE))
- if NOTE'>0
- QUIT
- Begin DoDot:3
- +56 DO EN^DDIOL(" ")
- +57 IF $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- if EXIT
- QUIT
- +58 SET I=0
- +59 FOR
- SET I=$ORDER(@NODE@("FN",NOTE,I))
- if I'>0
- QUIT
- Begin DoDot:4
- +60 DO EN^DDIOL(@NODE@("FN",NOTE,I))
- +61 if $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- End DoDot:4
- if EXIT
- QUIT
- End DoDot:3
- if EXIT
- QUIT
- +62 DO EN^DDIOL(" ")
- End DoDot:2
- IF $Y'<MNL
- SET EXIT=$$PAGE^ONCSAPIU()
- if EXIT
- QUIT
- End DoDot:1
- +63 ;
- +64 LOCK -^XTMP("ONCSAPI","TABLES","JOB",$JOB)
- +65 if RC<0
- DO ERRORS("HLP",RC)
- +66 QUIT
- +67 ;
- +68 ;***** VALIDATES AND TRANSFORMS THE INPUT (CODES)
- +69 ;
- +70 ; X Input value should be assigned to the X local
- +71 ; variable before calling this procedure. The
- +72 ; variable is KILL'ed if it has an invalid value.
- +73 ;
- +74 ; TABLE Table number (see the ^ONCSAPI routine)
- +75 ;
- +76 ; CODELEN Valid length of the code
- +77 ;
- +78 ; [IEN] IEN of the record in the file #165.5
- +79 ;
- +80 ; [SITE] Primary site
- +81 ; [HIST] Histology
- +82 ;
- +83 ; [SILENT] Silent mode flags (can be combined):
- +84 ; D Do not display code description
- +85 ; E Do not display error messages
- +86 ;
- +87 ; Either the IEN or both the SITE and HIST must be provided.
- +88 ;
- INPUT(TABLE,CODELEN,IEN,SITE,HIST,SILENT) ;
- +1 NEW CODE,ONCBUF,ONCSAPI,RC,TBLIEN,TMP
- +2 SET X=$$TRIM^XLFSTR($GET(X))
- +3 IF X'?@(CODELEN_"N")
- KILL X
- QUIT
- +4 if '($DATA(SILENT)#10)
- SET SILENT=$SELECT($GET(DIUTIL)="VERIFY FIELDS":"DE",1:"")
- +5 DO CLEAR^ONCSAPIE(1)
- +6 ;---
- +7 if $GET(IEN)>0
- Begin DoDot:1
- +8 SET SITE=$TRANSLATE($$GET1^DIQ(165.5,IEN,20.1,,,"ONCMSG"),".")
- +9 SET HIST=$EXTRACT($$HIST^ONCFUNC(IEN),1,4)
- +10 SET DISCRIM=$$GET1^DIQ(165.5,IEN,240)
- End DoDot:1
- +11 IF ($GET(SITE)="")&($GET(HIST)="")
- Begin DoDot:1
- +12 DO PRTERRS^ONCSAPIE($$ERROR^ONCSAPIE(-16,,"IEN, SITE, HIST"))
- End DoDot:1
- KILL X
- QUIT
- +13 ;---
- +14 LOCK +^XTMP("ONCSAPI","TABLES","JOB",$JOB):5
- IF '$TEST
- Begin DoDot:1
- +15 DO ERROR^ONCSAPIE(-15,,"access control node")
- +16 DO ERRORS("INP")
- End DoDot:1
- KILL X
- QUIT
- +17 ;
- +18 SET RC=0
- Begin DoDot:1
- +19 ;--- Get the table IEN
- +20 SET TBLIEN=$$GETCSTBL^ONCSAPIT(.ONCSAPI,SITE,HIST,TABLE)
- +21 IF TBLIEN<0
- SET RC=TBLIEN
- QUIT
- +22 ;--- Check the single code
- +23 SET CODE=+$GET(X)
- +24 if $DATA(^XTMP("ONCSAPI","TABLES",TBLIEN,"C",CODE))
- QUIT
- +25 ;--- Check the interval
- +26 SET TMP=$ORDER(^XTMP("ONCSAPI","TABLES",TBLIEN,"C",CODE),-1)
- +27 IF TMP'=""
- Begin DoDot:2
- +28 SET TMP=$GET(^XTMP("ONCSAPI","TABLES",TBLIEN,"C",TMP))
- End DoDot:2
- if CODE'>$PIECE(TMP,U,2)
- QUIT
- +29 ;--- Invalid value
- +30 KILL X
- End DoDot:1
- +31 ;
- +32 IF $DATA(X)&(RC'<0)
- if SILENT'["D"
- Begin DoDot:1
- +33 if $$CODEDESC^ONCSAPIT(.ONCSAPI,SITE,HIST,TABLE,X,"ONCBUF")<0
- QUIT
- +34 IF ONCBUF(1)["OBSOLETE"
- KILL X
- WRITE " OBSOLETE code"
- QUIT
- +35 SET TMP=""
- +36 FOR
- SET TMP=$ORDER(ONCBUF(TMP))
- if TMP=""
- QUIT
- SET ONCBUF(TMP,"F")="!?2"
- +37 DO EN^DDIOL(.ONCBUF)
- DO EN^DDIOL(" ")
- End DoDot:1
- +38 ;
- +39 LOCK -^XTMP("ONCSAPI","TABLES","JOB",$JOB)
- +40 IF RC<0
- if SILENT'["E"
- DO ERRORS("INP",RC)
- KILL X
- +41 QUIT
- +42 ;
- CLEANUP ;Cleanup
- +1 KILL DIUTIL