BGPGTXE ;cmi/anch/maw - ATX Gui Save Utilities 4/28/2005 9:22:40 AM
;;9.0;IHS CLINICAL REPORTING;**1**;JUL 01, 2009
;
;
;
;
;this routine will save from GUI applications
DEBUG(ATXRET,ATXSTR) ;-- call serenji debugger
;D DEBUG^%Serenji("TAX^ATXGE(.ATXRET,.ATXSTR)")
Q
;
Q
TAX(ATXRET,ATXSTR) ;EP -- save taxonomy
S X="MERR^BGPGTXU",@^%ZOSF("TRAP") ; m error trap
N P,ATXFL,ATXTAXN,ATXTAXF,ATXTAX,ATXI,ATXP,ATXERR,ATXTAXM,ATXTXG,ATXTXF,ATXTAXPF,ATXLOOK,ATXTX,ATXTXM
I ATXSTR="" D CATSTR^BGPGTXU(.ATXSTR,.ATXSTR)
K ^ATXTMP($J)
S ATXRET="^ATXTMP("_$J_")"
S ATXI=0
S ATXERR=""
S ^ATXTMP($J,ATXI)="T00080TAXONOMYSAVE"_$C(30)
S ATXI=ATXI+1
I $G(ATXSTR)="" S ^ATXTMP($J,ATXI)="Error Concatenating String for Taxonomy"_$C(30) Q
S P="|"
S ATXTAXN=$P(ATXSTR,P)
S ATXTAXF=$P(ATXSTR,P,2)
S ATXTXG="^ATXAX(""B"")"
S ATXTX="^ATXAX("
S ATXTXF=9002226
S ATXTXM=9002226.02101
I ATXTAXF="Lab" D
. S ATXTXG="^ATXLAB(""B"")"
. S ATXTX="^ATXLAB("
. S ATXTXF=9002228
. S ATXTXM=9002228.02101
. S ATXFL=60
S ATXTAX=$O(@ATXTXG@(ATXTAXN,0))
S ATXLOOK=0
I 'ATXTAX S ^ATXTMP($J,ATXI)="Taxonomy does not exist on System"_$C(30) Q
S ATXLOOK=0
I '$$GET1^DIQ(ATXTXF,ATXTAX,.13) S ATXLOOK=1
D CLEANTAX(ATXTX,ATXTAX)
F ATXP=3:1 S ATXTAXM=$P(ATXSTR,P,ATXP) Q:$G(ATXTAXM)="" D
. N ATXIENS,ATXFDA
. S ATXIENS="+2,"_ATXTAX_","
. I ATXLOOK D
.. N ATXGLF
.. I '$G(ATXFL) S ATXFL=$P($G(^ATXAX(ATXTAX,0)),U,15)
.. S ATXGLF=$G(^DIC(ATXFL,0,"GL"))
.. S ATXGLF=ATXGLF_"""B"")"
.. S ATXTAXM=$O(@ATXGLF@(ATXTAXM,0))
. I 'ATXLOOK D
.. S ATXTAXM=$P(ATXTAXM,"-")
.. S ATXTAXM=ATXTAXM_" "
. Q:$G(ATXTAXM)=""
. S ATXFDA(ATXTXM,ATXIENS,.01)=ATXTAXM
. I ATXTXM=9002226.02101 S ATXFDA(ATXTXM,ATXIENS,.02)=ATXTAXM
. D UPDATE^DIE("","ATXFDA","ATXIENS","ATXERR(1)")
S ^ATXTMP($J,ATXI+1)=$C(31)_$G(ATXERR)
Q
;
CLEANTAX(TAXF,TAX) ;EP -- remove existing entries from 21 multiple before adding
N ATXDA,TAXI,ATXAA
S TAXI=TAXF_TAX_",21)"
S DIK=TAXF_TAX_",21,",DA(1)=TAX
S ATXDA=0 F S ATXDA=$O(@TAXI@(ATXDA)) Q:'ATXDA D
. S DA=ATXDA
. D ^DIK
S ATXAA=TAXF_TAX_",21)"
K @ATXAA@("AA")
K DIK,DA
Q
;
LABTAX(ATXRET,ATXSTR) ;EP -- return the lab taxonomy
S X="MERR^BGPGTXU",@^%ZOSF("TRAP") ; m error trap
N P,ATXRFL,ATXI,ATXERR,ATXIEN,ATXTAXE,ATXTAX,ATXDA,ATXNONC,ATXXRF
N ATXGL,ATXGRF,ATXP
S P="|"
K ^ATXTMP($J)
S ATXRET="^ATXTMP("_$J_")"
S ATXI=0
S ATXERR=""
S ^ATXTMP($J,ATXI)="T00080LABTAXONOMY"_$C(30)
F ATXP=3:1 S ATXTAXE=$P(ATXSTR,P,ATXP) Q:$G(ATXTAXE)="" D
. Q:$G(ATXTAXE)=""
. ;S ATXTAXE=$P(ATXSTR,P)
. S ATXTAX=$O(^ATXLAB("B",ATXTAXE,0))
. Q:'$G(ATXTAX)
. S ATXNONC=$P($G(^ATXLAB(ATXTAX,0)),U,13)
. S ATXXRF=$P($G(^ATXLAB(ATXTAX,0)),U,14)
. S ATXFL=60
. S ATXGL=$G(^DIC(ATXFL,0,"GL"))
. S ATXDA=0 F S ATXDA=$O(^ATXLAB(ATXTAX,21,ATXDA)) Q:'ATXDA D
.. N ATXL,ATXH
.. S ATXI=ATXI+1
.. S ATXL=$P($G(^ATXLAB(ATXTAX,21,ATXDA,0)),U)
.. S ATXH=$P($G(^ATXLAB(ATXTAX,21,ATXDA,0)),U,2)
.. I (ATXL=ATXH)!($G(ATXH)="") D Q
... I $G(ATXXRF)="" D Q
.... S ATXGRF=ATXGL_""""_ATXL_""""_")"
.... S ^ATXTMP($J,ATXI)=$P($G(@ATXGRF@(0)),U)_$C(30)
... S ^ATXTMP($J,ATXI)=ATXL_$C(30)
.. S ATXGRF=ATXGL_""""_ATXXRF_""")"
.. N ATXIEN
.. S ATXIEN=$O(@ATXGRF@(ATXL),-1)
.. F S ATXIEN=$O(@ATXGRF@(ATXIEN)) Q:ATXIEN>ATXH D
... S ATXI=ATXI+1
... S ^ATXTMP($J,ATXI)=ATXIEN_$C(30)
S ^ATXTMP($J,ATXI+1)=$C(31)_$G(ATXERR)
Q
;
LTAX(ATXRET) ;EP -- generic lab taxonomy table
S X="MERR^BGPGTXU",@^%ZOSF("TRAP") ; m error trap
N P,ATXRFL,ATXI,ATXERR,ATXIEN,ATXTAXE,ATXTAX,ATXDA,ATXNONC,ATXXRF
N ATXGL,ATXGRF,ATXP,ATXPKG,ATXTDA,ATXPKGI
S P="|"
K ^ATXTMP($J)
S ATXRET="^ATXTMP("_$J_")"
S ATXI=0
S ATXERR=""
S ATXPKG=$P(ATXSTR,P,2)
S ATXPKGI=$O(^DIC(9.4,"C",ATXPKG,0))
S ^ATXTMP($J,ATXI)="T00080LABTAXONOMY"_$C(30)
S ATXTAX=0 F S ATXTAX=$O(^ATXLAB("APKG",ATXPKGI,ATXTAX)) Q:'ATXTAX D
. ;S ATXTAX=0 F S ATXTAX=$O(^ATXLAB(ATXTAX)) Q:'ATXTAX D
. ;S ATXTAX=$P($G(^ATXLAB(ATXP,0)),U)
. ;Q:$E($P($G(^ATXLAB(ATXTAX,0)),U),1,2)'="DM"
. ;S ATXTAXE=$P(ATXSTR,P)
. ;S ATXTAX=$O(^ATXLAB("B",ATXTAXE,0))
. ;Q:'$G(ATXTAX)
. S ATXXRF=$P($G(^ATXLAB(ATXTAX,0)),U,8)
. I $G(ATXXRF)="" S ATXXRF="B"
. S ATXFL=$P($G(^ATXLAB(ATXTAX,0)),U,9)
. S ATXGL=$G(^DIC(ATXFL,0,"GL"))
. S ATXDA=0 F S ATXDA=$O(^ATXLAB(ATXTAX,21,ATXDA)) Q:'ATXDA D
.. N ATXL,ATXH
.. S ATXI=ATXI+1
.. S ATXL=$P($G(^ATXLAB(ATXTAX,21,ATXDA,0)),U)
.. S ATXGRF=ATXGL_""""_ATXL_""""_")"
.. N ATXIEN
.. S ATXI=ATXI+1
.. S ^ATXTMP($J,ATXI)=$P($G(@ATXGRF@(0)),U)_$C(30)
S ^ATXTMP($J,ATXI+1)=$C(31)_$G(ATXERR)
Q
;
MEDBLD ;EP -- setup ATXSTR for medication taxonomy
S X="MERR^BGPGTXU",@^%ZOSF("TRAP") ; m error trap
N ATXTDA,ATXI,ATXPKG,ATXPKGI
S ATXI=1
S ATXPKG=$P(ATXSTR,P,2)
S ATXPKGI=$O(^DIC(9.4,"C",ATXPKG,0))
S ATXTDA=0 F S ATXTDA=$O(^ATXAX(ATXTDA)) Q:'ATXTDA D
. ;S ATXTDA=0 F S ATXTDA=$O(^ATXAX(ATXTDA)) Q:'ATXTDA D
. ;Q:$E($P($G(^ATXAX(ATXTDA,0)),U),1,2)'="DM"
. Q:$P($G(^ATXAX(ATXTDA,0)),U,15)'=50
. S ATXI=ATXI+1
. S $P(ATXSTR,P,ATXI)=$P($G(^ATXAX(ATXTDA,0)),U)
Q
;
BGPGTXE ;cmi/anch/maw - ATX Gui Save Utilities 4/28/2005 9:22:40 AM
+1 ;;9.0;IHS CLINICAL REPORTING;**1**;JUL 01, 2009
+2 ;
+3 ;
+4 ;
+5 ;
+6 ;this routine will save from GUI applications
DEBUG(ATXRET,ATXSTR) ;-- call serenji debugger
+1 ;D DEBUG^%Serenji("TAX^ATXGE(.ATXRET,.ATXSTR)")
+2 QUIT
+3 ;
+4 QUIT
TAX(ATXRET,ATXSTR) ;EP -- save taxonomy
+1 ; m error trap
SET X="MERR^BGPGTXU"
SET @^%ZOSF("TRAP")
+2 NEW P,ATXFL,ATXTAXN,ATXTAXF,ATXTAX,ATXI,ATXP,ATXERR,ATXTAXM,ATXTXG,ATXTXF,ATXTAXPF,ATXLOOK,ATXTX,ATXTXM
+3 IF ATXSTR=""
DO CATSTR^BGPGTXU(.ATXSTR,.ATXSTR)
+4 KILL ^ATXTMP($JOB)
+5 SET ATXRET="^ATXTMP("_$JOB_")"
+6 SET ATXI=0
+7 SET ATXERR=""
+8 SET ^ATXTMP($JOB,ATXI)="T00080TAXONOMYSAVE"_$CHAR(30)
+9 SET ATXI=ATXI+1
+10 IF $GET(ATXSTR)=""
SET ^ATXTMP($JOB,ATXI)="Error Concatenating String for Taxonomy"_$CHAR(30)
QUIT
+11 SET P="|"
+12 SET ATXTAXN=$PIECE(ATXSTR,P)
+13 SET ATXTAXF=$PIECE(ATXSTR,P,2)
+14 SET ATXTXG="^ATXAX(""B"")"
+15 SET ATXTX="^ATXAX("
+16 SET ATXTXF=9002226
+17 SET ATXTXM=9002226.02101
+18 IF ATXTAXF="Lab"
Begin DoDot:1
+19 SET ATXTXG="^ATXLAB(""B"")"
+20 SET ATXTX="^ATXLAB("
+21 SET ATXTXF=9002228
+22 SET ATXTXM=9002228.02101
+23 SET ATXFL=60
End DoDot:1
+24 SET ATXTAX=$ORDER(@ATXTXG@(ATXTAXN,0))
+25 SET ATXLOOK=0
+26 IF 'ATXTAX
SET ^ATXTMP($JOB,ATXI)="Taxonomy does not exist on System"_$CHAR(30)
QUIT
+27 SET ATXLOOK=0
+28 IF '$$GET1^DIQ(ATXTXF,ATXTAX,.13)
SET ATXLOOK=1
+29 DO CLEANTAX(ATXTX,ATXTAX)
+30 FOR ATXP=3:1
SET ATXTAXM=$PIECE(ATXSTR,P,ATXP)
IF $GET(ATXTAXM)=""
QUIT
Begin DoDot:1
+31 NEW ATXIENS,ATXFDA
+32 SET ATXIENS="+2,"_ATXTAX_","
+33 IF ATXLOOK
Begin DoDot:2
+34 NEW ATXGLF
+35 IF '$GET(ATXFL)
SET ATXFL=$PIECE($GET(^ATXAX(ATXTAX,0)),U,15)
+36 SET ATXGLF=$GET(^DIC(ATXFL,0,"GL"))
+37 SET ATXGLF=ATXGLF_"""B"")"
+38 SET ATXTAXM=$ORDER(@ATXGLF@(ATXTAXM,0))
End DoDot:2
+39 IF 'ATXLOOK
Begin DoDot:2
+40 SET ATXTAXM=$PIECE(ATXTAXM,"-")
+41 SET ATXTAXM=ATXTAXM_" "
End DoDot:2
+42 IF $GET(ATXTAXM)=""
QUIT
+43 SET ATXFDA(ATXTXM,ATXIENS,.01)=ATXTAXM
+44 IF ATXTXM=9002226.02101
SET ATXFDA(ATXTXM,ATXIENS,.02)=ATXTAXM
+45 DO UPDATE^DIE("","ATXFDA","ATXIENS","ATXERR(1)")
End DoDot:1
+46 SET ^ATXTMP($JOB,ATXI+1)=$CHAR(31)_$GET(ATXERR)
+47 QUIT
+48 ;
CLEANTAX(TAXF,TAX) ;EP -- remove existing entries from 21 multiple before adding
+1 NEW ATXDA,TAXI,ATXAA
+2 SET TAXI=TAXF_TAX_",21)"
+3 SET DIK=TAXF_TAX_",21,"
SET DA(1)=TAX
+4 SET ATXDA=0
FOR
SET ATXDA=$ORDER(@TAXI@(ATXDA))
IF 'ATXDA
QUIT
Begin DoDot:1
+5 SET DA=ATXDA
+6 DO ^DIK
End DoDot:1
+7 SET ATXAA=TAXF_TAX_",21)"
+8 KILL @ATXAA@("AA")
+9 KILL DIK,DA
+10 QUIT
+11 ;
LABTAX(ATXRET,ATXSTR) ;EP -- return the lab taxonomy
+1 ; m error trap
SET X="MERR^BGPGTXU"
SET @^%ZOSF("TRAP")
+2 NEW P,ATXRFL,ATXI,ATXERR,ATXIEN,ATXTAXE,ATXTAX,ATXDA,ATXNONC,ATXXRF
+3 NEW ATXGL,ATXGRF,ATXP
+4 SET P="|"
+5 KILL ^ATXTMP($JOB)
+6 SET ATXRET="^ATXTMP("_$JOB_")"
+7 SET ATXI=0
+8 SET ATXERR=""
+9 SET ^ATXTMP($JOB,ATXI)="T00080LABTAXONOMY"_$CHAR(30)
+10 FOR ATXP=3:1
SET ATXTAXE=$PIECE(ATXSTR,P,ATXP)
IF $GET(ATXTAXE)=""
QUIT
Begin DoDot:1
+11 IF $GET(ATXTAXE)=""
QUIT
+12 ;S ATXTAXE=$P(ATXSTR,P)
+13 SET ATXTAX=$ORDER(^ATXLAB("B",ATXTAXE,0))
+14 IF '$GET(ATXTAX)
QUIT
+15 SET ATXNONC=$PIECE($GET(^ATXLAB(ATXTAX,0)),U,13)
+16 SET ATXXRF=$PIECE($GET(^ATXLAB(ATXTAX,0)),U,14)
+17 SET ATXFL=60
+18 SET ATXGL=$GET(^DIC(ATXFL,0,"GL"))
+19 SET ATXDA=0
FOR
SET ATXDA=$ORDER(^ATXLAB(ATXTAX,21,ATXDA))
IF 'ATXDA
QUIT
Begin DoDot:2
+20 NEW ATXL,ATXH
+21 SET ATXI=ATXI+1
+22 SET ATXL=$PIECE($GET(^ATXLAB(ATXTAX,21,ATXDA,0)),U)
+23 SET ATXH=$PIECE($GET(^ATXLAB(ATXTAX,21,ATXDA,0)),U,2)
+24 IF (ATXL=ATXH)!($GET(ATXH)="")
Begin DoDot:3
+25 IF $GET(ATXXRF)=""
Begin DoDot:4
+26 SET ATXGRF=ATXGL_""""_ATXL_""""_")"
+27 SET ^ATXTMP($JOB,ATXI)=$PIECE($GET(@ATXGRF@(0)),U)_$CHAR(30)
End DoDot:4
QUIT
+28 SET ^ATXTMP($JOB,ATXI)=ATXL_$CHAR(30)
End DoDot:3
QUIT
+29 SET ATXGRF=ATXGL_""""_ATXXRF_""")"
+30 NEW ATXIEN
+31 SET ATXIEN=$ORDER(@ATXGRF@(ATXL),-1)
+32 FOR
SET ATXIEN=$ORDER(@ATXGRF@(ATXIEN))
IF ATXIEN>ATXH
QUIT
Begin DoDot:3
+33 SET ATXI=ATXI+1
+34 SET ^ATXTMP($JOB,ATXI)=ATXIEN_$CHAR(30)
End DoDot:3
End DoDot:2
End DoDot:1
+35 SET ^ATXTMP($JOB,ATXI+1)=$CHAR(31)_$GET(ATXERR)
+36 QUIT
+37 ;
LTAX(ATXRET) ;EP -- generic lab taxonomy table
+1 ; m error trap
SET X="MERR^BGPGTXU"
SET @^%ZOSF("TRAP")
+2 NEW P,ATXRFL,ATXI,ATXERR,ATXIEN,ATXTAXE,ATXTAX,ATXDA,ATXNONC,ATXXRF
+3 NEW ATXGL,ATXGRF,ATXP,ATXPKG,ATXTDA,ATXPKGI
+4 SET P="|"
+5 KILL ^ATXTMP($JOB)
+6 SET ATXRET="^ATXTMP("_$JOB_")"
+7 SET ATXI=0
+8 SET ATXERR=""
+9 SET ATXPKG=$PIECE(ATXSTR,P,2)
+10 SET ATXPKGI=$ORDER(^DIC(9.4,"C",ATXPKG,0))
+11 SET ^ATXTMP($JOB,ATXI)="T00080LABTAXONOMY"_$CHAR(30)
+12 SET ATXTAX=0
FOR
SET ATXTAX=$ORDER(^ATXLAB("APKG",ATXPKGI,ATXTAX))
IF 'ATXTAX
QUIT
Begin DoDot:1
+13 ;S ATXTAX=0 F S ATXTAX=$O(^ATXLAB(ATXTAX)) Q:'ATXTAX D
+14 ;S ATXTAX=$P($G(^ATXLAB(ATXP,0)),U)
+15 ;Q:$E($P($G(^ATXLAB(ATXTAX,0)),U),1,2)'="DM"
+16 ;S ATXTAXE=$P(ATXSTR,P)
+17 ;S ATXTAX=$O(^ATXLAB("B",ATXTAXE,0))
+18 ;Q:'$G(ATXTAX)
+19 SET ATXXRF=$PIECE($GET(^ATXLAB(ATXTAX,0)),U,8)
+20 IF $GET(ATXXRF)=""
SET ATXXRF="B"
+21 SET ATXFL=$PIECE($GET(^ATXLAB(ATXTAX,0)),U,9)
+22 SET ATXGL=$GET(^DIC(ATXFL,0,"GL"))
+23 SET ATXDA=0
FOR
SET ATXDA=$ORDER(^ATXLAB(ATXTAX,21,ATXDA))
IF 'ATXDA
QUIT
Begin DoDot:2
+24 NEW ATXL,ATXH
+25 SET ATXI=ATXI+1
+26 SET ATXL=$PIECE($GET(^ATXLAB(ATXTAX,21,ATXDA,0)),U)
+27 SET ATXGRF=ATXGL_""""_ATXL_""""_")"
+28 NEW ATXIEN
+29 SET ATXI=ATXI+1
+30 SET ^ATXTMP($JOB,ATXI)=$PIECE($GET(@ATXGRF@(0)),U)_$CHAR(30)
End DoDot:2
End DoDot:1
+31 SET ^ATXTMP($JOB,ATXI+1)=$CHAR(31)_$GET(ATXERR)
+32 QUIT
+33 ;
MEDBLD ;EP -- setup ATXSTR for medication taxonomy
+1 ; m error trap
SET X="MERR^BGPGTXU"
SET @^%ZOSF("TRAP")
+2 NEW ATXTDA,ATXI,ATXPKG,ATXPKGI
+3 SET ATXI=1
+4 SET ATXPKG=$PIECE(ATXSTR,P,2)
+5 SET ATXPKGI=$ORDER(^DIC(9.4,"C",ATXPKG,0))
+6 SET ATXTDA=0
FOR
SET ATXTDA=$ORDER(^ATXAX(ATXTDA))
IF 'ATXTDA
QUIT
Begin DoDot:1
+7 ;S ATXTDA=0 F S ATXTDA=$O(^ATXAX(ATXTDA)) Q:'ATXTDA D
+8 ;Q:$E($P($G(^ATXAX(ATXTDA,0)),U),1,2)'="DM"
+9 IF $PIECE($GET(^ATXAX(ATXTDA,0)),U,15)'=50
QUIT
+10 SET ATXI=ATXI+1
+11 SET $PIECE(ATXSTR,P,ATXI)=$PIECE($GET(^ATXAX(ATXTDA,0)),U)
End DoDot:1
+12 QUIT
+13 ;