ECXDSSD ;ALB/JAP - Derive DSS Department code ;July 16, 1998
;;3.0;DSS EXTRACTS;**8**;Dec 22, 1997
;
DERIVE(ECXSVC,ECXPUNIT,ECXDIV,ECXSUF) ;entry point for extrinsic function
; input
; ECXSVC = null or pointer to file #730; required
; ECXPUNIT = null or pointer to file #729; required
; ECXDIV = null or pointer to file #727.3; required
; ECXSUF = null or character string; optional
; output
; DSSDEPT = dss department code as ABBCxxx or null
; A=DSS CODE from file (#730)
; BB=DSS PRODUCTION UNIT CODE from file (#729)
; C=DSS DIVISION IDENTIFIER from file (#727.3)
; xxx=suffix of not more than three characters (optional)
;
N DSSDEPT
S DSSDEPT=""
Q:'$D(ECXSVC) DSSDEPT Q:'$D(ECXPUNIT) DSSDEPT Q:'$D(ECXDIV) DSSDEPT
D GETDIV(.ECXDIV)
I ECXDIV="" Q DSSDEPT
D GETSVC(.ECXSVC)
I ECXSVC="" Q DSSDEPT
D GETPUNIT(.ECXPUNIT)
I ECXPUNIT="" Q DSSDEPT
S DSSDEPT=ECXSVC_ECXPUNIT_ECXDIV
;if variable ecxsuf does not exist, then do nothing
;if variable ecxsuf is null, then assume user interaction for entry
;if variable suffix is a character string, then assume no user interaction; validate ecxsuf
I $D(ECXSUF) D
.D GETSUF(.ECXSUF)
.S DSSDEPT=DSSDEPT_ECXSUF
Q DSSDEPT
;
GETDIV(ECXDIV) ;get division portion of dss dept code
; input
; ECXDIV = pointer to file #40.8 or null; required; passed by reference
; output
; ECXDIV = dss division identifier or null
N ECX,USER,DIC,DR,DIQ,DA,X,Y,DTOUT,DUOUT,JJ,SS
S USER=0
I ECXDIV="" D Q:$D(DTOUT)!($D(DUOUT))!(+Y<1)
.W !!
.S USER=1
.S DIC(0)="AEMQZ",DIC="^ECX(727.3," D ^DIC
.S:+Y>0 ECXDIV=+Y Q
S DIC="^ECX(727.3,",DR="1;",DIQ(0)="E",DIQ="ECX",DA=ECXDIV
D EN^DIQ1
S ECXDIV=$G(ECX(727.3,ECXDIV,1,"E"))
I ECXDIV="",USER=1 D
.W !!,"The selected division does not yet have a"
.W !,"DSS Identifier code defined.",!
.W !,"Use the Enter/Edit DSS Division Identifier option"
.W !,"to associate a DSS identifier with this division.",!
.I $E(IOST)="C" D
..S SS=22-$Y F JJ=1:1:SS W !
..S DIR(0)="E" W ! D ^DIR K DIR W !
Q
;
GETSVC(ECXSVC) ;get service portion of dss dept code
; input
; ECXSVC = pointer to file #730 or null; required; passed by reference
; output
; ECXSVC = dss service code or null
N ECX,USER,DIC,DR,DIQ,X,Y,JJ,SS,DA,DTOUT,DUOUT
S USER=0
I ECXSVC="" D Q:$D(DTOUT)!($D(DUOUT))!(+Y<1)
.W !!
.S USER=1
.S DIC(0)="AEMQZ",DIC="^ECC(730," D ^DIC
.S:+Y>0 ECXSVC=+Y
S DIC="^ECC(730,",DR="3;",DIQ(0)="E",DIQ="ECX",DA=ECXSVC
D EN^DIQ1
S ECXSVC=$G(ECX(730,ECXSVC,3,"E"))
I ECXSVC="",USER=1 D
.W !!,"The selected National Service does not have a"
.W !,"DSS Clinical Service code defined.",!
.W !,"It cannot be used in a DSS Department code.",!
.I $E(IOST)="C" D
..S SS=22-$Y F JJ=1:1:SS W !
..S DIR(0)="E" W ! D ^DIR K DIR W !
Q
;
GETPUNIT(ECXPUNIT) ;get production unit portion of dss dept code
; input
; ECXPUNIT = pointer to file #729 or null; required; passed by reference
; output
; ECXPUNIT = dss production unit code or null
N ECX,DIC,DR,DIQ,X,Y,DTOUT,DUOUT,DA
I ECXPUNIT="" D Q:$D(DTOUT)!($D(DUOUT))!(+Y<1)
.W !!
.S DIC(0)="AEMQZ",DIC="^ECX(729," D ^DIC
.S:+Y>0 ECXPUNIT=+Y
S DIC="^ECX(729,",DR=".01;",DIQ(0)="E",DIQ="ECX",DA=ECXPUNIT
D EN^DIQ1
S ECXPUNIT=$G(ECX(729,ECXPUNIT,.01,"E"))
Q
;
GETSUF(ECXSUF) ;get suffix portion of dss dept code
; input
; ECXSUF = character string or null; required; passed by reference
; output
; ECXSUF = character string or null;
; input character string will be returned as null
N USER,AGAIN,LEN,ZERO,OUT,DIR,DIRUT,DTOUT,DUOUT,X,Y
;ask user for input only if ecxsuf="", otherwise assume no user interaction
;variable user acts as a flag --> if =1, then assume user interaction
S USER=0 S:ECXSUF="" USER=1,AGAIN=0
;variable again acts as a flag --> if =1, don't ask user if he wants to enter suffix
D SUF2
Q
SUF2 ;ask user for input if necessary, then validate variable ecxsuf
I USER=1 D
.I AGAIN=0 D Q:$D(DIRUT)!(Y=0)
..W !!
..S DIR(0)="YA",DIR("A")="Do you want to enter a suffix? ",DIR("B")="NO" K X,Y
..D ^DIR K DIR
.W !!
.S AGAIN=0
.S DIR(0)="FA^1:3",DIR("A")="Enter suffix: " K X,Y
.D ^DIR K DIR
.Q:$D(DIRUT) Q:(X="^")&(Y="^")
.S ECXSUF=Y,LEN=$L(ECXSUF)
.I ECXSUF["-" D
..I $L(ECXSUF)=1 W !!,"Invalid ...try again." S ECXSUF="",AGAIN=1 Q
..I $E(ECXSUF,1)'="-" D Q
...W !!,"The hyphen character < - > is only allowed as the"
...W !!,"1st character in the suffix.",!
...W !,"Try again...",!
...S ECXSUF="",AGAIN=1
..W !!,"The hyphen character < - > should not be used unless this"
..W !,"DSS Department code was previously established in DSS/Austin."
..W !
..S DIR(0)="YA",DIR("A")="Do you want to remove the hyphen? ",DIR("B")="YES" K X,Y
..D ^DIR K DIR
..S:($D(DIRUT))!(Y=1) ECXSUF="" S:(Y=1) AGAIN=1
.Q:AGAIN=1
.S ZERO=0
.F I=1:1:LEN S X=$E(ECXSUF,I) D Q:AGAIN=1
..Q:X="-"&(I=1)
..I X?1P D Q:AGAIN=1
...W !!,"There is an invalid punctuation character < "_X_" > in the suffix.",!
...W !,"Try again...",!
...S ECXSUF="",AGAIN=1
..I X?1L D Q:AGAIN=1
...W !!,"There is an invalid lowercase character < "_X_" > in the suffix.",!
...W !,"Try again...",!
...S ECXSUF="",AGAIN=1
..S:X="0" ZERO=ZERO+0 S:X'="0" ZERO=ZERO+1
.Q:AGAIN=1
.I ZERO=0 D
..W !!,"There are too many zeroes in the suffix.",!
..W !,"Try again...",!
..S ECXSUF="",AGAIN=1
I USER=1,AGAIN=1 G SUF2
;no user interaction; validate ecxsuf
I USER=0,ECXSUF]"" D
.S (ZERO,OUT)=0
.S LEN=$L(ECXSUF) I LEN>3 S ECXSUF="" Q
.F I=1:1:LEN S X=$E(ECXSUF,I) D Q:OUT=1
..I X="-",I'=1 S ECXSUF="",OUT=1
..I X?1P,X'="-" S ECXSUF="",OUT=1
..I X?1L S ECXSUF="",OUT=1
..S:X="0" ZERO=ZERO+0 S:X'="0" ZERO=ZERO+1
.I ZERO=0 S ECXSUF=""
Q
;
DECODE ;allow user to decode a dss department code
N CODE,DESC,OUT,DIR,DIRUT,DTOUT,DUOUT,X,Y
W !!,"You may enter a DSS Department as 'ABBC' (no suffix)."
W !,"The code will be 'translated' into a description and displayed.",!!
S OUT=0
F D Q:OUT=1 Q:$D(DIRUT)
.S DIR(0)="FA^4:4",DIR("A")="Enter a DSS Department code: " K X,Y
.D ^DIR K DIR
.Q:$D(DIRUT) Q:(X="^")&(Y="^")
.S CODE=Y D REVERSE(CODE,.DESC)
.W !
.W !?5,"Service ",?20,"<"_$E(CODE,1)_"> = "_$P(DESC,U,1)
.W !?5,"Prod. Unit ",?20,"<"_$E(CODE,2,3)_"> = "_$P(DESC,U,2)
.W !?5,"Division ",?20,"<"_$E(CODE,4)_"> = "_$P(DESC,U,3)
.W !
.S DIR(0)="YA",DIR("A")="Another one? ",DIR("B")="YES" K X,Y
.D ^DIR K DIR
.I Y=0 S OUT=1
Q
;
REVERSE(ECXDEPT,ECXDESC) ;get dss dept code description
; input
; ECXDEPT = dss dept code as ABBCxxx; required
; output
; ECXDESC = code description; passed by reference
; service_name^prod_unit_long_desc^division_name/station number
; note: if suffix (xxx) is present, it is ignored because free text
N SVC,PUNIT,DIV
Q:$L(ECXDEPT)<4
S SVC=$E(ECXDEPT,1),PUNIT=$E(ECXDEPT,2,3),DIV=$E(ECXDEPT,4)
K X,ECXERR S X=$$FIND1^DIC(730,,"X",SVC,"C",,"ECXERR")
S SVC=$S(X>0:$P(^ECC(730,X,0),U,1),X=0:"Not found",X="":"Error",1:"")
K X,ECXERR S X=$$FIND1^DIC(729,,"X",PUNIT,"B",,"ECXERR")
S PUNIT=$S(X>0:$P(^ECX(729,X,0),U,3),X=0:"Not found",X="":"Error",1:"")
K X,ECXERR S X=$$FIND1^DIC(727.3,,"X",DIV,"C",,"ECXERR")
S DIV=$S(X>0:$P(^DG(40.8,X,0),U,1)_"/"_$P(^(0),U,2),X=0:"Not found",X="":"Error",1:"")
S ECXDESC=SVC_U_PUNIT_U_DIV
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HECXDSSD 7441 printed Dec 13, 2024@01:52:29 Page 2
ECXDSSD ;ALB/JAP - Derive DSS Department code ;July 16, 1998
+1 ;;3.0;DSS EXTRACTS;**8**;Dec 22, 1997
+2 ;
DERIVE(ECXSVC,ECXPUNIT,ECXDIV,ECXSUF) ;entry point for extrinsic function
+1 ; input
+2 ; ECXSVC = null or pointer to file #730; required
+3 ; ECXPUNIT = null or pointer to file #729; required
+4 ; ECXDIV = null or pointer to file #727.3; required
+5 ; ECXSUF = null or character string; optional
+6 ; output
+7 ; DSSDEPT = dss department code as ABBCxxx or null
+8 ; A=DSS CODE from file (#730)
+9 ; BB=DSS PRODUCTION UNIT CODE from file (#729)
+10 ; C=DSS DIVISION IDENTIFIER from file (#727.3)
+11 ; xxx=suffix of not more than three characters (optional)
+12 ;
+13 NEW DSSDEPT
+14 SET DSSDEPT=""
+15 if '$DATA(ECXSVC)
QUIT DSSDEPT
if '$DATA(ECXPUNIT)
QUIT DSSDEPT
if '$DATA(ECXDIV)
QUIT DSSDEPT
+16 DO GETDIV(.ECXDIV)
+17 IF ECXDIV=""
QUIT DSSDEPT
+18 DO GETSVC(.ECXSVC)
+19 IF ECXSVC=""
QUIT DSSDEPT
+20 DO GETPUNIT(.ECXPUNIT)
+21 IF ECXPUNIT=""
QUIT DSSDEPT
+22 SET DSSDEPT=ECXSVC_ECXPUNIT_ECXDIV
+23 ;if variable ecxsuf does not exist, then do nothing
+24 ;if variable ecxsuf is null, then assume user interaction for entry
+25 ;if variable suffix is a character string, then assume no user interaction; validate ecxsuf
+26 IF $DATA(ECXSUF)
Begin DoDot:1
+27 DO GETSUF(.ECXSUF)
+28 SET DSSDEPT=DSSDEPT_ECXSUF
End DoDot:1
+29 QUIT DSSDEPT
+30 ;
GETDIV(ECXDIV) ;get division portion of dss dept code
+1 ; input
+2 ; ECXDIV = pointer to file #40.8 or null; required; passed by reference
+3 ; output
+4 ; ECXDIV = dss division identifier or null
+5 NEW ECX,USER,DIC,DR,DIQ,DA,X,Y,DTOUT,DUOUT,JJ,SS
+6 SET USER=0
+7 IF ECXDIV=""
Begin DoDot:1
+8 WRITE !!
+9 SET USER=1
+10 SET DIC(0)="AEMQZ"
SET DIC="^ECX(727.3,"
DO ^DIC
+11 if +Y>0
SET ECXDIV=+Y
QUIT
End DoDot:1
if $DATA(DTOUT)!($DATA(DUOUT))!(+Y<1)
QUIT
+12 SET DIC="^ECX(727.3,"
SET DR="1;"
SET DIQ(0)="E"
SET DIQ="ECX"
SET DA=ECXDIV
+13 DO EN^DIQ1
+14 SET ECXDIV=$GET(ECX(727.3,ECXDIV,1,"E"))
+15 IF ECXDIV=""
IF USER=1
Begin DoDot:1
+16 WRITE !!,"The selected division does not yet have a"
+17 WRITE !,"DSS Identifier code defined.",!
+18 WRITE !,"Use the Enter/Edit DSS Division Identifier option"
+19 WRITE !,"to associate a DSS identifier with this division.",!
+20 IF $EXTRACT(IOST)="C"
Begin DoDot:2
+21 SET SS=22-$Y
FOR JJ=1:1:SS
WRITE !
+22 SET DIR(0)="E"
WRITE !
DO ^DIR
KILL DIR
WRITE !
End DoDot:2
End DoDot:1
+23 QUIT
+24 ;
GETSVC(ECXSVC) ;get service portion of dss dept code
+1 ; input
+2 ; ECXSVC = pointer to file #730 or null; required; passed by reference
+3 ; output
+4 ; ECXSVC = dss service code or null
+5 NEW ECX,USER,DIC,DR,DIQ,X,Y,JJ,SS,DA,DTOUT,DUOUT
+6 SET USER=0
+7 IF ECXSVC=""
Begin DoDot:1
+8 WRITE !!
+9 SET USER=1
+10 SET DIC(0)="AEMQZ"
SET DIC="^ECC(730,"
DO ^DIC
+11 if +Y>0
SET ECXSVC=+Y
End DoDot:1
if $DATA(DTOUT)!($DATA(DUOUT))!(+Y<1)
QUIT
+12 SET DIC="^ECC(730,"
SET DR="3;"
SET DIQ(0)="E"
SET DIQ="ECX"
SET DA=ECXSVC
+13 DO EN^DIQ1
+14 SET ECXSVC=$GET(ECX(730,ECXSVC,3,"E"))
+15 IF ECXSVC=""
IF USER=1
Begin DoDot:1
+16 WRITE !!,"The selected National Service does not have a"
+17 WRITE !,"DSS Clinical Service code defined.",!
+18 WRITE !,"It cannot be used in a DSS Department code.",!
+19 IF $EXTRACT(IOST)="C"
Begin DoDot:2
+20 SET SS=22-$Y
FOR JJ=1:1:SS
WRITE !
+21 SET DIR(0)="E"
WRITE !
DO ^DIR
KILL DIR
WRITE !
End DoDot:2
End DoDot:1
+22 QUIT
+23 ;
GETPUNIT(ECXPUNIT) ;get production unit portion of dss dept code
+1 ; input
+2 ; ECXPUNIT = pointer to file #729 or null; required; passed by reference
+3 ; output
+4 ; ECXPUNIT = dss production unit code or null
+5 NEW ECX,DIC,DR,DIQ,X,Y,DTOUT,DUOUT,DA
+6 IF ECXPUNIT=""
Begin DoDot:1
+7 WRITE !!
+8 SET DIC(0)="AEMQZ"
SET DIC="^ECX(729,"
DO ^DIC
+9 if +Y>0
SET ECXPUNIT=+Y
End DoDot:1
if $DATA(DTOUT)!($DATA(DUOUT))!(+Y<1)
QUIT
+10 SET DIC="^ECX(729,"
SET DR=".01;"
SET DIQ(0)="E"
SET DIQ="ECX"
SET DA=ECXPUNIT
+11 DO EN^DIQ1
+12 SET ECXPUNIT=$GET(ECX(729,ECXPUNIT,.01,"E"))
+13 QUIT
+14 ;
GETSUF(ECXSUF) ;get suffix portion of dss dept code
+1 ; input
+2 ; ECXSUF = character string or null; required; passed by reference
+3 ; output
+4 ; ECXSUF = character string or null;
+5 ; input character string will be returned as null
+6 NEW USER,AGAIN,LEN,ZERO,OUT,DIR,DIRUT,DTOUT,DUOUT,X,Y
+7 ;ask user for input only if ecxsuf="", otherwise assume no user interaction
+8 ;variable user acts as a flag --> if =1, then assume user interaction
+9 SET USER=0
if ECXSUF=""
SET USER=1
SET AGAIN=0
+10 ;variable again acts as a flag --> if =1, don't ask user if he wants to enter suffix
+11 DO SUF2
+12 QUIT
SUF2 ;ask user for input if necessary, then validate variable ecxsuf
+1 IF USER=1
Begin DoDot:1
+2 IF AGAIN=0
Begin DoDot:2
+3 WRITE !!
+4 SET DIR(0)="YA"
SET DIR("A")="Do you want to enter a suffix? "
SET DIR("B")="NO"
KILL X,Y
+5 DO ^DIR
KILL DIR
End DoDot:2
if $DATA(DIRUT)!(Y=0)
QUIT
+6 WRITE !!
+7 SET AGAIN=0
+8 SET DIR(0)="FA^1:3"
SET DIR("A")="Enter suffix: "
KILL X,Y
+9 DO ^DIR
KILL DIR
+10 if $DATA(DIRUT)
QUIT
if (X="^")&(Y="^")
QUIT
+11 SET ECXSUF=Y
SET LEN=$LENGTH(ECXSUF)
+12 IF ECXSUF["-"
Begin DoDot:2
+13 IF $LENGTH(ECXSUF)=1
WRITE !!,"Invalid ...try again."
SET ECXSUF=""
SET AGAIN=1
QUIT
+14 IF $EXTRACT(ECXSUF,1)'="-"
Begin DoDot:3
+15 WRITE !!,"The hyphen character < - > is only allowed as the"
+16 WRITE !!,"1st character in the suffix.",!
+17 WRITE !,"Try again...",!
+18 SET ECXSUF=""
SET AGAIN=1
End DoDot:3
QUIT
+19 WRITE !!,"The hyphen character < - > should not be used unless this"
+20 WRITE !,"DSS Department code was previously established in DSS/Austin."
+21 WRITE !
+22 SET DIR(0)="YA"
SET DIR("A")="Do you want to remove the hyphen? "
SET DIR("B")="YES"
KILL X,Y
+23 DO ^DIR
KILL DIR
+24 if ($DATA(DIRUT))!(Y=1)
SET ECXSUF=""
if (Y=1)
SET AGAIN=1
End DoDot:2
+25 if AGAIN=1
QUIT
+26 SET ZERO=0
+27 FOR I=1:1:LEN
SET X=$EXTRACT(ECXSUF,I)
Begin DoDot:2
+28 if X="-"&(I=1)
QUIT
+29 IF X?1P
Begin DoDot:3
+30 WRITE !!,"There is an invalid punctuation character < "_X_" > in the suffix.",!
+31 WRITE !,"Try again...",!
+32 SET ECXSUF=""
SET AGAIN=1
End DoDot:3
if AGAIN=1
QUIT
+33 IF X?1L
Begin DoDot:3
+34 WRITE !!,"There is an invalid lowercase character < "_X_" > in the suffix.",!
+35 WRITE !,"Try again...",!
+36 SET ECXSUF=""
SET AGAIN=1
End DoDot:3
if AGAIN=1
QUIT
+37 if X="0"
SET ZERO=ZERO+0
if X'="0"
SET ZERO=ZERO+1
End DoDot:2
if AGAIN=1
QUIT
+38 if AGAIN=1
QUIT
+39 IF ZERO=0
Begin DoDot:2
+40 WRITE !!,"There are too many zeroes in the suffix.",!
+41 WRITE !,"Try again...",!
+42 SET ECXSUF=""
SET AGAIN=1
End DoDot:2
End DoDot:1
+43 IF USER=1
IF AGAIN=1
GOTO SUF2
+44 ;no user interaction; validate ecxsuf
+45 IF USER=0
IF ECXSUF]""
Begin DoDot:1
+46 SET (ZERO,OUT)=0
+47 SET LEN=$LENGTH(ECXSUF)
IF LEN>3
SET ECXSUF=""
QUIT
+48 FOR I=1:1:LEN
SET X=$EXTRACT(ECXSUF,I)
Begin DoDot:2
+49 IF X="-"
IF I'=1
SET ECXSUF=""
SET OUT=1
+50 IF X?1P
IF X'="-"
SET ECXSUF=""
SET OUT=1
+51 IF X?1L
SET ECXSUF=""
SET OUT=1
+52 if X="0"
SET ZERO=ZERO+0
if X'="0"
SET ZERO=ZERO+1
End DoDot:2
if OUT=1
QUIT
+53 IF ZERO=0
SET ECXSUF=""
End DoDot:1
+54 QUIT
+55 ;
DECODE ;allow user to decode a dss department code
+1 NEW CODE,DESC,OUT,DIR,DIRUT,DTOUT,DUOUT,X,Y
+2 WRITE !!,"You may enter a DSS Department as 'ABBC' (no suffix)."
+3 WRITE !,"The code will be 'translated' into a description and displayed.",!!
+4 SET OUT=0
+5 FOR
Begin DoDot:1
+6 SET DIR(0)="FA^4:4"
SET DIR("A")="Enter a DSS Department code: "
KILL X,Y
+7 DO ^DIR
KILL DIR
+8 if $DATA(DIRUT)
QUIT
if (X="^")&(Y="^")
QUIT
+9 SET CODE=Y
DO REVERSE(CODE,.DESC)
+10 WRITE !
+11 WRITE !?5,"Service ",?20,"<"_$EXTRACT(CODE,1)_"> = "_$PIECE(DESC,U,1)
+12 WRITE !?5,"Prod. Unit ",?20,"<"_$EXTRACT(CODE,2,3)_"> = "_$PIECE(DESC,U,2)
+13 WRITE !?5,"Division ",?20,"<"_$EXTRACT(CODE,4)_"> = "_$PIECE(DESC,U,3)
+14 WRITE !
+15 SET DIR(0)="YA"
SET DIR("A")="Another one? "
SET DIR("B")="YES"
KILL X,Y
+16 DO ^DIR
KILL DIR
+17 IF Y=0
SET OUT=1
End DoDot:1
if OUT=1
QUIT
if $DATA(DIRUT)
QUIT
+18 QUIT
+19 ;
REVERSE(ECXDEPT,ECXDESC) ;get dss dept code description
+1 ; input
+2 ; ECXDEPT = dss dept code as ABBCxxx; required
+3 ; output
+4 ; ECXDESC = code description; passed by reference
+5 ; service_name^prod_unit_long_desc^division_name/station number
+6 ; note: if suffix (xxx) is present, it is ignored because free text
+7 NEW SVC,PUNIT,DIV
+8 if $LENGTH(ECXDEPT)<4
QUIT
+9 SET SVC=$EXTRACT(ECXDEPT,1)
SET PUNIT=$EXTRACT(ECXDEPT,2,3)
SET DIV=$EXTRACT(ECXDEPT,4)
+10 KILL X,ECXERR
SET X=$$FIND1^DIC(730,,"X",SVC,"C",,"ECXERR")
+11 SET SVC=$SELECT(X>0:$PIECE(^ECC(730,X,0),U,1),X=0:"Not found",X="":"Error",1:"")
+12 KILL X,ECXERR
SET X=$$FIND1^DIC(729,,"X",PUNIT,"B",,"ECXERR")
+13 SET PUNIT=$SELECT(X>0:$PIECE(^ECX(729,X,0),U,3),X=0:"Not found",X="":"Error",1:"")
+14 KILL X,ECXERR
SET X=$$FIND1^DIC(727.3,,"X",DIV,"C",,"ECXERR")
+15 SET DIV=$SELECT(X>0:$PIECE(^DG(40.8,X,0),U,1)_"/"_$PIECE(^(0),U,2),X=0:"Not found",X="":"Error",1:"")
+16 SET ECXDESC=SVC_U_PUNIT_U_DIV
+17 QUIT