SROACC2 ;BIR/MAM - CPT ACCURACY ALL CODES AND 1 SPECIALTY ;05/14/99 11:33 AM
;;3.0; Surgery ;**37,50,88,127,142**;24 Jun 93
;
; Reference to ^ECC(723 supported by DBIA #205
;
S SRSPEC=SRSS,SRSS=$S(SRFLG=1:$P(^SRO(137.45,SRSS,0),"^"),1:$P(^ECC(723,SRSS,0),"^"))
S SRSDT=SDATE1 F S SRSDT=$O(^SRF("AC",SRSDT)) Q:SRSDT>EDATE1!('SRSDT) S SRTN=0 F S SRTN=$O(^SRF("AC",SRSDT,SRTN)) Q:'SRTN I $D(^SRF(SRTN,0)),$P($G(^SRF(SRTN,30)),"^")="",$$DIV^SROUTL0(SRTN) D UTIL
S SRHDR=0 D HDR^SROACC0 S CPT=0 F S CPT=$O(^TMP("SR",$J,SRSS,CPT)) Q:'CPT!(SRSOUT) D MORE
I '$D(^TMP("SR",$J)) D LINE W $$NODATA^SROUTL0()
Q
MORE ; print CPT description and get cases
I $Y+12>IOSL D HDR^SROACC0 I SRSOUT Q
S TYPE=0,X=$$CPT^ICPTCOD(CPT,EDATE),CPT1=$P(X,"^",2)_" "_$P(X,"^",3)
F S TYPE=$O(^TMP("SR",$J,SRSS,CPT,TYPE)) Q:TYPE="" D DESC S SRSDT=0 F S SRSDT=$O(^TMP("SR",$J,SRSS,CPT,TYPE,SRSDT)) Q:'SRSDT!(SRSOUT) D SRTN
Q
SRTN S SRTN=0 F S SRTN=$O(^TMP("SR",$J,SRSS,CPT,TYPE,SRSDT,SRTN)) Q:'SRTN!(SRSOUT) D PRINT
Q
LOOP ; break procedure greater than 50 characters
S SROP(M)="" F LOOP=1:1 S MM=$P(SROPER," "),MMM=$P(SROPER," ",2,200) Q:MMM="" Q:$L(SROP(M))+$L(MM)'<50 S SROP(M)=SROP(M)_MM_" ",SROPER=MMM
Q
DESC ; print description
Q:SRSOUT I '$O(^TMP("SR",$J,SRSS,CPT,TYPE,0)) Q
D LINE W !!,?(132-$L(CPT1)\2),CPT1
I TYPE=1 W !,?50,"PRINCIPAL PROCEDURES"
I TYPE=2 W !,?54,"OTHER PROCEDURES"
K SRDESC S X=$$CPTD^ICPTCOD(CPT,"SRDESC",,EDATE) F I=1:1:X S Y=$S(I=1:"DESCRIPTION: "_SRDESC(I),1:SRDESC(I)) W !,?(132-$L(Y)\2),Y
W !! F LINE=1:1:132 W "-"
Q
PRINT ; print each case
I $Y+5>IOSL D HDR^SROACC0 Q:SRSOUT D DESC
S SRNON=0 I $P($G(^SRF(SRTN,"NON")),"^")="Y" S SRNON=1
S DFN=$P(^SRF(SRTN,0),"^"),Y=SRSDT D D^DIQ S SRDT=Y
S Y=$P(SRDT,"@",2),SRDT=$E(SRSDT,4,5)_"/"_$E(SRSDT,6,7)_"/"_$E(SRSDT,2,3)_" "_Y
D DEM^VADPT S SRNAME=VADM(1),SSN=VA("PID"),SR(.1)=$S($D(^SRF(SRTN,.1)):^(.1),1:""),SRSUR=$S(SRNON:$P(^SRF(SRTN,"NON"),"^",6),1:$P(SR(.1),"^",4)),SRATT=$S(SRNON:$P(^SRF(SRTN,"NON"),"^",7),1:$P(SR(.1),"^",13))
I SRSUR S SRSUR=$P(^VA(200,SRSUR,0),"^") I $L(SRSUR)>20 S SRSUR=$P(SRSUR,",")_", "_$E($P(SRSUR,",",2))
I SRATT S SRATT=$P(^VA(200,SRATT,0),"^") I $L(SRATT)>20 S SRATT=$P(SRATT,",")_", "_$E($P(SRATT,",",2))
D OPER^SROACC0
K SROP,SROPT,MM,MMM S:$L(SROPER)<51 SROP(1)=SROPER I $L(SROPER)>50 S SROPER=SROPER_" " F M=1:1 D LOOP Q:MMM=""
W !,SRDT,?20,SRNAME,?60,SROP(1),?111,SRSUR,!,?3,SRTN,?20,VA("PID") W:$D(SROP(2)) ?60,SROP(2) W ?111,SRATT,! W:SRFLG=3&(SRNON) "NON-O.R." I $D(SROP(3)) W ?60,SROP(3) I $D(SROP(4)) W !,?60,SROP(4) I $D(SROP(5)) W !,?60,SROP(5)
I $D(SRCPTT) S:$L(SRCPTT)<51 SROPT(1)=SRCPTT I $L(SRCPTT)>50 S SRCPTT=SRCPTT_" " F M=1:1 D LOOP^SROACC0 Q:MMM=""
I $D(SRCPTT) F LOOP=1:1 Q:'$D(SROPT(LOOP)) W !,?60,SROPT(LOOP)
W ! Q
UTIL ; set ^TMP("SR")
S SRNON=0 I $P($G(^SRF(SRTN,"NON")),"^")="Y" S SRNON=1
I SRFLG=1!(SRFLG=3&('SRNON)) Q:$P($G(^SRF(SRTN,.2)),"^",12)=""
I SRFLG=2 Q:'SRNON
S CPT=$P($G(^SRO(136,SRTN,0)),"^",2)
I 'SRNON S X=$P(^SRF(SRTN,0),"^",4) I X'=SRSPEC Q
I SRNON S X=$P(^SRF(SRTN,"NON"),"^",8) I X'=SRSPEC Q
I CPT S ^TMP("SR",$J,SRSS,CPT,1,SRSDT,SRTN)=""
S OP=0 F S OP=$O(^SRO(136,SRTN,3,OP)) Q:'OP I $P($G(^SRO(136,SRTN,3,OP,0)),"^") S CPT=$P(^(0),"^"),^TMP("SR",$J,SRSS,CPT,2,SRSDT,SRTN)=""
Q
LINE W ! F LINE=1:1:132 W "="
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSROACC2 3359 printed Nov 22, 2024@17:49:59 Page 2
SROACC2 ;BIR/MAM - CPT ACCURACY ALL CODES AND 1 SPECIALTY ;05/14/99 11:33 AM
+1 ;;3.0; Surgery ;**37,50,88,127,142**;24 Jun 93
+2 ;
+3 ; Reference to ^ECC(723 supported by DBIA #205
+4 ;
+5 SET SRSPEC=SRSS
SET SRSS=$SELECT(SRFLG=1:$PIECE(^SRO(137.45,SRSS,0),"^"),1:$PIECE(^ECC(723,SRSS,0),"^"))
+6 SET SRSDT=SDATE1
FOR
SET SRSDT=$ORDER(^SRF("AC",SRSDT))
if SRSDT>EDATE1!('SRSDT)
QUIT
SET SRTN=0
FOR
SET SRTN=$ORDER(^SRF("AC",SRSDT,SRTN))
if 'SRTN
QUIT
IF $DATA(^SRF(SRTN,0))
IF $PIECE($GET(^SRF(SRTN,30)),"^")=""
IF $$DIV^SROUTL0(SRTN)
DO UTIL
+7 SET SRHDR=0
DO HDR^SROACC0
SET CPT=0
FOR
SET CPT=$ORDER(^TMP("SR",$JOB,SRSS,CPT))
if 'CPT!(SRSOUT)
QUIT
DO MORE
+8 IF '$DATA(^TMP("SR",$JOB))
DO LINE
WRITE $$NODATA^SROUTL0()
+9 QUIT
MORE ; print CPT description and get cases
+1 IF $Y+12>IOSL
DO HDR^SROACC0
IF SRSOUT
QUIT
+2 SET TYPE=0
SET X=$$CPT^ICPTCOD(CPT,EDATE)
SET CPT1=$PIECE(X,"^",2)_" "_$PIECE(X,"^",3)
+3 FOR
SET TYPE=$ORDER(^TMP("SR",$JOB,SRSS,CPT,TYPE))
if TYPE=""
QUIT
DO DESC
SET SRSDT=0
FOR
SET SRSDT=$ORDER(^TMP("SR",$JOB,SRSS,CPT,TYPE,SRSDT))
if 'SRSDT!(SRSOUT)
QUIT
DO SRTN
+4 QUIT
SRTN SET SRTN=0
FOR
SET SRTN=$ORDER(^TMP("SR",$JOB,SRSS,CPT,TYPE,SRSDT,SRTN))
if 'SRTN!(SRSOUT)
QUIT
DO PRINT
+1 QUIT
LOOP ; break procedure greater than 50 characters
+1 SET SROP(M)=""
FOR LOOP=1:1
SET MM=$PIECE(SROPER," ")
SET MMM=$PIECE(SROPER," ",2,200)
if MMM=""
QUIT
if $LENGTH(SROP(M))+$LENGTH(MM)'<50
QUIT
SET SROP(M)=SROP(M)_MM_" "
SET SROPER=MMM
+2 QUIT
DESC ; print description
+1 if SRSOUT
QUIT
IF '$ORDER(^TMP("SR",$JOB,SRSS,CPT,TYPE,0))
QUIT
+2 DO LINE
WRITE !!,?(132-$LENGTH(CPT1)\2),CPT1
+3 IF TYPE=1
WRITE !,?50,"PRINCIPAL PROCEDURES"
+4 IF TYPE=2
WRITE !,?54,"OTHER PROCEDURES"
+5 KILL SRDESC
SET X=$$CPTD^ICPTCOD(CPT,"SRDESC",,EDATE)
FOR I=1:1:X
SET Y=$SELECT(I=1:"DESCRIPTION: "_SRDESC(I),1:SRDESC(I))
WRITE !,?(132-$LENGTH(Y)\2),Y
+6 WRITE !!
FOR LINE=1:1:132
WRITE "-"
+7 QUIT
PRINT ; print each case
+1 IF $Y+5>IOSL
DO HDR^SROACC0
if SRSOUT
QUIT
DO DESC
+2 SET SRNON=0
IF $PIECE($GET(^SRF(SRTN,"NON")),"^")="Y"
SET SRNON=1
+3 SET DFN=$PIECE(^SRF(SRTN,0),"^")
SET Y=SRSDT
DO D^DIQ
SET SRDT=Y
+4 SET Y=$PIECE(SRDT,"@",2)
SET SRDT=$EXTRACT(SRSDT,4,5)_"/"_$EXTRACT(SRSDT,6,7)_"/"_$EXTRACT(SRSDT,2,3)_" "_Y
+5 DO DEM^VADPT
SET SRNAME=VADM(1)
SET SSN=VA("PID")
SET SR(.1)=$SELECT($DATA(^SRF(SRTN,.1)):^(.1),1:"")
SET SRSUR=$SELECT(SRNON:$PIECE(^SRF(SRTN,"NON"),"^",6),1:$PIECE(SR(.1),"^",4))
SET SRATT=$SELECT(SRNON:$PIECE(^SRF(SRTN,"NON"),"^",7),1:$PIECE(SR(.1),"^",13))
+6 IF SRSUR
SET SRSUR=$PIECE(^VA(200,SRSUR,0),"^")
IF $LENGTH(SRSUR)>20
SET SRSUR=$PIECE(SRSUR,",")_", "_$EXTRACT($PIECE(SRSUR,",",2))
+7 IF SRATT
SET SRATT=$PIECE(^VA(200,SRATT,0),"^")
IF $LENGTH(SRATT)>20
SET SRATT=$PIECE(SRATT,",")_", "_$EXTRACT($PIECE(SRATT,",",2))
+8 DO OPER^SROACC0
+9 KILL SROP,SROPT,MM,MMM
if $LENGTH(SROPER)<51
SET SROP(1)=SROPER
IF $LENGTH(SROPER)>50
SET SROPER=SROPER_" "
FOR M=1:1
DO LOOP
if MMM=""
QUIT
+10 WRITE !,SRDT,?20,SRNAME,?60,SROP(1),?111,SRSUR,!,?3,SRTN,?20,VA("PID")
if $DATA(SROP(2))
WRITE ?60,SROP(2)
WRITE ?111,SRATT,!
if SRFLG=3&(SRNON)
WRITE "NON-O.R."
IF $DATA(SROP(3))
WRITE ?60,SROP(3)
IF $DATA(SROP(4))
WRITE !,?60,SROP(4)
IF $DATA(SROP(5))
WRITE !,?60,SROP(5)
+11 IF $DATA(SRCPTT)
if $LENGTH(SRCPTT)<51
SET SROPT(1)=SRCPTT
IF $LENGTH(SRCPTT)>50
SET SRCPTT=SRCPTT_" "
FOR M=1:1
DO LOOP^SROACC0
if MMM=""
QUIT
+12 IF $DATA(SRCPTT)
FOR LOOP=1:1
if '$DATA(SROPT(LOOP))
QUIT
WRITE !,?60,SROPT(LOOP)
+13 WRITE !
QUIT
UTIL ; set ^TMP("SR")
+1 SET SRNON=0
IF $PIECE($GET(^SRF(SRTN,"NON")),"^")="Y"
SET SRNON=1
+2 IF SRFLG=1!(SRFLG=3&('SRNON))
if $PIECE($GET(^SRF(SRTN,.2)),"^",12)=""
QUIT
+3 IF SRFLG=2
if 'SRNON
QUIT
+4 SET CPT=$PIECE($GET(^SRO(136,SRTN,0)),"^",2)
+5 IF 'SRNON
SET X=$PIECE(^SRF(SRTN,0),"^",4)
IF X'=SRSPEC
QUIT
+6 IF SRNON
SET X=$PIECE(^SRF(SRTN,"NON"),"^",8)
IF X'=SRSPEC
QUIT
+7 IF CPT
SET ^TMP("SR",$JOB,SRSS,CPT,1,SRSDT,SRTN)=""
+8 SET OP=0
FOR
SET OP=$ORDER(^SRO(136,SRTN,3,OP))
if 'OP
QUIT
IF $PIECE($GET(^SRO(136,SRTN,3,OP,0)),"^")
SET CPT=$PIECE(^(0),"^")
SET ^TMP("SR",$JOB,SRSS,CPT,2,SRSDT,SRTN)=""
+9 QUIT
LINE WRITE !
FOR LINE=1:1:132
WRITE "="
+1 QUIT