- DGPTFM2 ;ALB/DWS - MASTER PROFESSIONAL SERVICE ENTER/EDIT ;6/16/05 8:33am
- ;;5.3;Registration;**517,590,606,635,850,912,1057**;Aug 13, 1993;Build 17
- ADD ;ADD CPT RECORD
- N DGZP S DGZP=0 S:'$D(^DGPT(PTF,"C",0)) ^(0)="^45.06D^^"
- S DIC="^DGPT("_PTF_",""C"",",DIC(0)="AELQMXZ",DA(1)=PTF,DLAYGO=45
- D ^DIC K DIC,DLAYGO G ^DGPTFM:Y'>0,^DGPTFM:'$D(^DGPT(PTF,"C",+Y))
- S DGPSM=+Y
- I '$P(Y,U,3) S DIR("A")="Do you want to edit this CPT RECORD DATE/TIME?",DIR(0)="Y",DIR("B")="YES" D ^DIR G ^DGPTFM:'Y!$D(DIRUT)
- D MOB
- I $P(DGZPRF,U,3) F I=1:1:$P(DGZPRF,U,3) S:DGZPRF(I,0)=DGPSM DGZP=I
- K I G:'DGZP ^DGPTFM S X="A,B",DGPSM=0
- ED G HELP^DGPTUTL1:X'["A"&(X'["B")&(X'["a")&(X'["b") K DA
- S DGJUMP=X,DGPRD=+DGZPRF(DGZP),X1="^801"
- I X["A"!(X["a") D L -^DGPT(PTF) I FLAG D MOB,REQ^DGPTFM3 G EXIT
- .S DA(1)=PTF,DIE="^DGPT("_PTF_",""C"",",(DA,REC)=DGZPRF(DGZP,0)
- .S DR=".01;.02;.03;.05;.09////0",DIC(0)="AELQZ" Q:'$$LOCK
- .D FMDIE S FLAG=$D(Y)>9!$D(DOUT)!'$D(DA) Q:$D(Y)>9!'$D(DA)
- .S DGPRD=+^DGPT(PTF,"C",DGZPRF(DGZP,0),0) Q:+DGZPRF(DGZP)=DGPRD
- .S DGI=0 F S DGI=$O(^DGCPT(46,"C",PTF,DGI)) Q:DGI'>0 D Q:$D(Y)>9!'$D(DA)
- ..Q:+^DGCPT(46,DGI,1)'=+DGZPRF(DGZP) Q:$D(^(9))
- ..S DR=".14////"_DGPRD,(DA,REC)=DGI,DIE="^DGCPT(46," D FMDIE
- ..I $D(Y)>9!'$D(DA) S FLAG=1
- ..;ADD IMPDATE check to see if Edit on date changed coding system
- . I $P(DGZPRF(DGZP),U)<IMPDATE,DGPRD'<IMPDATE D EN^DDIOL("Primary Diagnosis changing from ICD-9 to ICD-10. You must edit the Diagnosis.") S DGJUMP="B"
- . I $P(DGZPRF(DGZP),U)'<IMPDATE,DGPRD<IMPDATE D EN^DDIOL("Primary Diagnosis changing from ICD-10 to ICD-9. You must edit the Diagnosis.") S DGJUMP="B"
- .S $P(DGZPRF(DGZP),U)=DGPRD
- JUMP I DGJUMP["B"!(DGJUMP["b") S DGI=0 D CL^SDCO21(DFN,DGPRD,"",.SDCLY) D
- .F S DGI=$O(^DGCPT(46,"C",PTF,DGI)) Q:DGI'>0 I +^DGCPT(46,DGI,1)=+DGZPRF(DGZP),'$G(^(9)) D I $D(DUOUT) Q:'DGDIAG K DUOUT S DGI=0
- ..S (DA,REC)=DGI,DR=".01;",DIE="^DGCPT(46," D GETINFO^DGPTFM21
- .Q:$D(DUOUT)
- .F D D ^DIC S A=0 Q:Y'>0 D SED Q:$D(DUOUT)
- ..S DA=PTF,DIC="^DGCPT(46,",DIC(0)="AELMQZ",DLAYGO=46
- ..S DIC("S")="D EN6^DGPTFJC I 'DGER"
- I $D(DUOUT),$G(DGDIAG) K DUOUT G JUMP
- I $D(DUOUT),$G(DGJUMP)["A"!($G(DGJUMP)["a") S X=DGJUMP K DUOUT G ED
- K DR,DIE,DIC,DA,DGI,DGJUMP,DGPRD,DLAYGO,XREF
- D REQ^DGPTFM3,MOB H:RFL 2 K RFL
- G ^DGPTFM:'$D(DGZPRF(DGZP,0)),^DGPTFM:'$D(^DGPT(PTF,"C",DGZPRF(DGZP,0)))
- SET D MOB:'$D(DGZPRF) S:'$D(DGZP) DGZP=1 I $G(DGZPRF(DGZP,0))="" K DGZPRF(DGZP) G NEXP
- WRT G ^DGPTFM:'$D(^DGPT(PTF,"C",DGZPRF(DGZP,0),0)) S J=DGZP W @IOF,HEAD,?68
- N DGNUM S Z="<"_DGZP_">" W @DGVI,Z,@DGVO
- W !,?30,"Initial Date Of Service: ",$$EXTERNAL^DILFD(45,14,,$G(DGIDTS)) ; DG*5.3*1057
- W !! S Y=+DGZPRF(J),Z="A"
- D D^DGPTUTL,Z^DGPTFM5 W ?5,"CPT Record Date/Time: ",Y
- I $P(DGZPRF(J),U,8)'="" W ?55,"Visit Service Category: ",$P(DGZPRF(J),U,8)
- I $P(DGZPRF(J),U,2) W !,?5,"Referring or Ordering Provider: " D
- .S L=$P(DGZPRF(J),U,2) D PRV^DGPTFM
- W !,?5,"Rendering Provider: " S L=$P(DGZPRF(J),U,3) D PRV^DGPTFM
- I $P(DGZPRF(J),U,5) W !,?5,"Rendering Location: ",$P($G(^SC($P(DGZPRF(J),U,5),0)),U)
- W !! S Z="B" D Z^DGPTFM5 W " Procedures: "
- F K=$P(DGZPRF,U,2):1 Q:'$D(DGZPRF(J,K)) I '$D(DGZPRF(J,K,9)) D
- .W ?5 D CPT^DGPTUTL1 W ! Q:$Y>16
- F I=1:1:(IOSL-$Y-5) W !
- K I,J,K,L,Z S DGNUM=$S($D(DGZPRF(DGZP+1)):DGZP+1,1:"MAS")
- G 801^DGPTFJC:DGST
- S DIR("A")="Enter <RET> to continue, A-B to edit, 'I' to add an 801,"
- S DIR("A")=DIR("A")_$C(10,13)_"the number of an 801 screen, ?? to list 801 screens,"
- S DIR("A")=DIR("A")_$C(10,13)_"'S' for Send to PCE,"
- S DIR("A")=DIR("A")_" '^N' for screen N, or '^' to abort:"
- S DIR("?")="^D HELP^DGPTUTL1"
- S DIR(0)="F^OU",DIR("B")=DGNUM,DIR("??")="^D DISP^DGPTUTL1" D ^DIR
- K DIR G:$D(DIRUT) Q^DGPTF:X="^"
- I X?1"^".E S DGPTSCRN=801 G ^DGPTFJ
- I X="MAS" S DGZP=1 G ^DGPTFM
- G ADD:X="I"!(X="i"),HELP^DGPTUTL1:X["?"
- I X?1N.N,$D(DGZPRF(X)) S DGZP=X G SET
- I X["A"!(X["B")!(X["a")!(X["b") G ED
- I X="S"!(X="s") D PCE G WRT
- D HELP^DGPTUTL1 R !!,"Enter <RET>: ",X:DTIME G WRT
- PCE L +^DGPT(PTF):2
- I '$T W !,"CPT Record is being edited by another user" H 2 Q
- D ICDINFO^DGAPI(DFN,PTF),XREF^DGPTFM21
- S RES=$$DATA2PCE^DGAPI1(DFN,PTF,DGZP)
- I RES=1 L -^DGPT(PTF) W !,"PTF Record sent to PCE" H 2 Q
- W @IOF
- ;F I=1:1 Q:'$D(^TMP("DGPAPI",$J,"DIERR",$J,1,"TEXT",I)) W !,^(I)
- W !,"The PTF Record may not have been filed in PCE due to errors."
- W !,"Press return to continue." R X:DTIME
- L -^DGPT(PTF) Q
- NEXP S DGZP=DGZP+1
- I '$D(DGZPRF(DGZP)) W:DGZP=2 !,"NO PROF. SERVICES TO EDIT." G EXIT
- G SET
- EXIT K DGPSM H 2 S DGZP=1 G ^DGPTFM
- DEL ;DELETE A CPT RECORD
- I '$P(DGZPRF,U,3) G NOPROC
- ASK S DIR("A")="Select 801 record to Delete"
- S DIR(0)="NO^1:"_$P(DGZPRF,U,3),DIR("??")="^D DISP^DGPTUTL1"
- D ^DIR K DIR G ^DGPTFM:$D(DIRUT),^DGPTFM:'Y,^DGPTFM:'$D(^DGPT(PTF,"C",DGZPRF(Y,0),0)) S DGZP=Y,Y=+^(0) D D^DGPTUTL
- S DIR("A")="Are you sure you want to delete the entire 801 for "_Y
- S DIR(0)="Y",DIR("B")="No" D ^DIR K DIR G ^DGPTFM:'Y,^DGPTFM:'$$LOCK
- ;patch DG*5.3*912 modifies where the date is being set for deletion. This allows multiple cpt codes to be deleted from 801 in the ptf
- S DGI=0
- F S DGI=$O(^DGCPT(46,"C",PTF,DGI)) Q:DGI'>0 D:+^DGCPT(46,DGI,1)=+DGZPRF(DGZP)&'$G(^(9))
- .D NOW^%DTC S (DA,REC)=DGI,DIE="^DGCPT(46,",DR="1////^S X=%" D FMDIE
- S DR=".09////1",DIE="^DGPT("_PTF_",""C"",",DA=DGZPRF(DGZP,0)
- S DA(1)=PTF D ^DIE L -^DGPT(PTF)
- W !!,"CPT Records....Deleted" H 2
- K DIK,DA,DGI,DGPROC,DGPSM,DGPNUM,Y D MOB G ^DGPTFM
- NOPROC W !!,*7,"No procedures to delete",! H 3 G ^DGPTFM
- N ;ADD CPT CODES TO CPT RECORD
- I '$P(DGZPRF,U,3) W !!,"There are no 801 records that can be added to.",*7 H 2 G ^DGPTFM
- P1 S DIR("A")="Add to 801 record ",DIR(0)="NO^1:"_$P(DGZPRF,U,3)
- S DIR("??")="^D DISP^DGPTUTL1"
- D ^DIR K DIR G ^DGPTFM:'Y
- S DGZP=Y,DGI=0,DGPRD=+DGZPRF(DGZP) D CL^SDCO21(DFN,DGPRD,"",.SDCLY)
- S DA=PTF,DIC="^DGCPT(46,",DIC(0)="AELQMZ",DLAYGO=46,DIC("S")="D EN6^DGPTFJC I 'DGER"
- D ^DIC K DIC,DLAYGO D:Y>0 SED,MOB,REQ^DGPTFM3 K DGPRD,Y
- D PCE^DGPTFQWK G ^DGPTFM
- DC ;DELETE A CPT PROCEDURE
- I $E($G(ANS),2,99)>0 S DGPZ=+$E(ANS,2,99) G QQ
- S DIR("A")="Select 801 record to Delete a CPT code in"
- S DIR(0)="NO^1:"_$P(DGZPRF,U,3),DIR("??")="^D DISP^DGPTUTL1"
- D ^DIR K DIR G ^DGPTFM:$D(DIRUT),^DGPTFM:'Y,^DGPTFM:'$D(^DGPT(PTF,"C",DGZPRF(Y,0),0)) S DGZP=Y,Y=+^(0) D D^DGPTUTL
- F PS2=1:1 Q:'$D(DGZPRF(DGZP,PS2)) S PS2(PS2)=DGZP_"^"_PS2
- S PS2=PS2-1
- QQ S DIR("A")="Select CPT code to Delete <1 - "_PS2_">",DIR(0)="NO^^K:X<1!(X>"_PS2_") X" D ^DIR K DIR G ^DGPTFM:$D(DIRUT),^DGPTFM:'Y
- QQA S A1=Y,DGZP=+PS2(A1),CPT=+DGZPRF(DGZP,$P(PS2(A1),U,2))
- S DIR("A")="Are you sure you want to delete CPT code '"
- I $D(^ICPT(CPT)) D
- .S N=$$CPT^ICPTCOD(CPT,$$GETDATE^ICDGTDRG(PTF))
- .S N=$S(N>0:$P(N,U,2,99),1:"")
- .S DIR("A")=DIR("A")_$P(N,U)_" "_$P(N,U,2)_"'"
- E S DIR("A")=DIR("A")_CPT_" UNKNOWN"
- S DIR(0)="Y",DIR("B")="No" D ^DIR K DIR G ^DGPTFM:'Y
- G ^DGPTFM:'$$LOCK
- QEL D NOW^%DTC S DA=DGZPRF(DGZP,$P(PS2(A1),U,2),0),DR="1////^S X=%"
- S REC=DGZPRF(DGZP,0)
- S DIE="^DGCPT(46," D FMDIE K A1,DR W !!,"CPT Code....Deleted"
- I '$D(DGZPRF(DGZP,2)) S DR=".09////1",DIE="^DGPT("_PTF_",""C"",",DA=DGZPRF(DGZP,0),DA(1)=PTF D ^DIE
- I $D(DGZPRF(DGZP,2)) D PCE^DGPTFQWK
- L -^DGPT(PTF) W:$X>70 ! D MOB H 2 G ^DGPTFM
- F D MOB S DGZP=$S($E($G(ANS),2,99):+$E($G(ANS),2,99),1:1) G SET
- MOB S (H,I,N)=0 K DGZPRF F M=1:1:6 S:$D(SDCLY(M)) N=N+1
- F I2=1:1 S H=$O(^DGPT(PTF,"C","B",H)) Q:H'>0 D
- .F S I=$O(^DGPT(PTF,"C","B",H,I)) Q:I'>0 D
- ..S DGZPRF(I2)=^DGPT(PTF,"C",I,0),DGZPRF(I2,0)=I,(K,K1)=0,F=1 D
- ...F S K=$O(^DGCPT(46,"C",PTF,K)),L=N+1\2+3 Q:K'>0 I +DGZPRF(I2)=+$G(^DGCPT(46,K,1)),'$G(^DGCPT(46,K,9)) D
- ....S K1=K1+1,DGZPRF(I2,K1)=^(0),DGZPRF(I2,K1,0)=K,F=0
- ....F M=2,3,5,6,7,15,16,17,18 S:$P(DGZPRF(I2,K1),U,M) L=L+1
- ....S DGZPRF(I2,K1,1)=L
- ...I F,$G(DGPSM)'=DGZPRF(I2,0) K DGZPRF(I2) S I2=I2-1
- S DGZPRF="1^1^"_(I2-1) K F,I,K,K1,N Q
- SED S DR=".14////"_DGPRD_";.16////"_PTF_";",(DA,REC)=+Y,DIE="^DGCPT(46," D GETINFO^DGPTFM21 Q
- FMDIE ;Prompt user for questions and file answers (using DIE)
- D ^DIE Q:$D(Y)>9 S RES=$$DELVFILE^DGAPI1(DFN,PTF,DGZP) K DIE,REC Q
- LOCK() L +^DGPT(PTF):2 I Q 1
- ERR W !,"CPT Record is being edited by another user" K DIE,REC H 2 Q 0
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGPTFM2 8285 printed Feb 19, 2025@00:18:21 Page 2
- DGPTFM2 ;ALB/DWS - MASTER PROFESSIONAL SERVICE ENTER/EDIT ;6/16/05 8:33am
- +1 ;;5.3;Registration;**517,590,606,635,850,912,1057**;Aug 13, 1993;Build 17
- ADD ;ADD CPT RECORD
- +1 NEW DGZP
- SET DGZP=0
- if '$DATA(^DGPT(PTF,"C",0))
- SET ^(0)="^45.06D^^"
- +2 SET DIC="^DGPT("_PTF_",""C"","
- SET DIC(0)="AELQMXZ"
- SET DA(1)=PTF
- SET DLAYGO=45
- +3 DO ^DIC
- KILL DIC,DLAYGO
- if Y'>0
- GOTO ^DGPTFM
- if '$DATA(^DGPT(PTF,"C",+Y))
- GOTO ^DGPTFM
- +4 SET DGPSM=+Y
- +5 IF '$PIECE(Y,U,3)
- SET DIR("A")="Do you want to edit this CPT RECORD DATE/TIME?"
- SET DIR(0)="Y"
- SET DIR("B")="YES"
- DO ^DIR
- if 'Y!$DATA(DIRUT)
- GOTO ^DGPTFM
- +6 DO MOB
- +7 IF $PIECE(DGZPRF,U,3)
- FOR I=1:1:$PIECE(DGZPRF,U,3)
- if DGZPRF(I,0)=DGPSM
- SET DGZP=I
- +8 KILL I
- if 'DGZP
- GOTO ^DGPTFM
- SET X="A,B"
- SET DGPSM=0
- ED if X'["A"&(X'["B")&(X'["a")&(X'["b")
- GOTO HELP^DGPTUTL1
- KILL DA
- +1 SET DGJUMP=X
- SET DGPRD=+DGZPRF(DGZP)
- SET X1="^801"
- +2 IF X["A"!(X["a")
- Begin DoDot:1
- +3 SET DA(1)=PTF
- SET DIE="^DGPT("_PTF_",""C"","
- SET (DA,REC)=DGZPRF(DGZP,0)
- +4 SET DR=".01;.02;.03;.05;.09////0"
- SET DIC(0)="AELQZ"
- if '$$LOCK
- QUIT
- +5 DO FMDIE
- SET FLAG=$DATA(Y)>9!$DATA(DOUT)!'$DATA(DA)
- if $DATA(Y)>9!'$DATA(DA)
- QUIT
- +6 SET DGPRD=+^DGPT(PTF,"C",DGZPRF(DGZP,0),0)
- if +DGZPRF(DGZP)=DGPRD
- QUIT
- +7 SET DGI=0
- FOR
- SET DGI=$ORDER(^DGCPT(46,"C",PTF,DGI))
- if DGI'>0
- QUIT
- Begin DoDot:2
- +8 if +^DGCPT(46,DGI,1)'=+DGZPRF(DGZP)
- QUIT
- if $DATA(^(9))
- QUIT
- +9 SET DR=".14////"_DGPRD
- SET (DA,REC)=DGI
- SET DIE="^DGCPT(46,"
- DO FMDIE
- +10 IF $DATA(Y)>9!'$DATA(DA)
- SET FLAG=1
- +11 ;ADD IMPDATE check to see if Edit on date changed coding system
- End DoDot:2
- if $DATA(Y)>9!'$DATA(DA)
- QUIT
- +12 IF $PIECE(DGZPRF(DGZP),U)<IMPDATE
- IF DGPRD'<IMPDATE
- DO EN^DDIOL("Primary Diagnosis changing from ICD-9 to ICD-10. You must edit the Diagnosis.")
- SET DGJUMP="B"
- +13 IF $PIECE(DGZPRF(DGZP),U)'<IMPDATE
- IF DGPRD<IMPDATE
- DO EN^DDIOL("Primary Diagnosis changing from ICD-10 to ICD-9. You must edit the Diagnosis.")
- SET DGJUMP="B"
- +14 SET $PIECE(DGZPRF(DGZP),U)=DGPRD
- End DoDot:1
- LOCK -^DGPT(PTF)
- IF FLAG
- DO MOB
- DO REQ^DGPTFM3
- GOTO EXIT
- JUMP IF DGJUMP["B"!(DGJUMP["b")
- SET DGI=0
- DO CL^SDCO21(DFN,DGPRD,"",.SDCLY)
- Begin DoDot:1
- +1 FOR
- SET DGI=$ORDER(^DGCPT(46,"C",PTF,DGI))
- if DGI'>0
- QUIT
- IF +^DGCPT(46,DGI,1)=+DGZPRF(DGZP)
- IF '$GET(^(9))
- Begin DoDot:2
- +2 SET (DA,REC)=DGI
- SET DR=".01;"
- SET DIE="^DGCPT(46,"
- DO GETINFO^DGPTFM21
- End DoDot:2
- IF $DATA(DUOUT)
- if 'DGDIAG
- QUIT
- KILL DUOUT
- SET DGI=0
- +3 if $DATA(DUOUT)
- QUIT
- +4 FOR
- Begin DoDot:2
- +5 SET DA=PTF
- SET DIC="^DGCPT(46,"
- SET DIC(0)="AELMQZ"
- SET DLAYGO=46
- +6 SET DIC("S")="D EN6^DGPTFJC I 'DGER"
- End DoDot:2
- DO ^DIC
- SET A=0
- if Y'>0
- QUIT
- DO SED
- if $DATA(DUOUT)
- QUIT
- End DoDot:1
- +7 IF $DATA(DUOUT)
- IF $GET(DGDIAG)
- KILL DUOUT
- GOTO JUMP
- +8 IF $DATA(DUOUT)
- IF $GET(DGJUMP)["A"!($GET(DGJUMP)["a")
- SET X=DGJUMP
- KILL DUOUT
- GOTO ED
- +9 KILL DR,DIE,DIC,DA,DGI,DGJUMP,DGPRD,DLAYGO,XREF
- +10 DO REQ^DGPTFM3
- DO MOB
- if RFL
- HANG 2
- KILL RFL
- +11 if '$DATA(DGZPRF(DGZP,0))
- GOTO ^DGPTFM
- if '$DATA(^DGPT(PTF,"C",DGZPRF(DGZP,0)))
- GOTO ^DGPTFM
- SET if '$DATA(DGZPRF)
- DO MOB
- if '$DATA(DGZP)
- SET DGZP=1
- IF $GET(DGZPRF(DGZP,0))=""
- KILL DGZPRF(DGZP)
- GOTO NEXP
- WRT if '$DATA(^DGPT(PTF,"C",DGZPRF(DGZP,0),0))
- GOTO ^DGPTFM
- SET J=DGZP
- WRITE @IOF,HEAD,?68
- +1 NEW DGNUM
- SET Z="<"_DGZP_">"
- WRITE @DGVI,Z,@DGVO
- +2 ; DG*5.3*1057
- WRITE !,?30,"Initial Date Of Service: ",$$EXTERNAL^DILFD(45,14,,$GET(DGIDTS))
- +3 WRITE !!
- SET Y=+DGZPRF(J)
- SET Z="A"
- +4 DO D^DGPTUTL
- DO Z^DGPTFM5
- WRITE ?5,"CPT Record Date/Time: ",Y
- +5 IF $PIECE(DGZPRF(J),U,8)'=""
- WRITE ?55,"Visit Service Category: ",$PIECE(DGZPRF(J),U,8)
- +6 IF $PIECE(DGZPRF(J),U,2)
- WRITE !,?5,"Referring or Ordering Provider: "
- Begin DoDot:1
- +7 SET L=$PIECE(DGZPRF(J),U,2)
- DO PRV^DGPTFM
- End DoDot:1
- +8 WRITE !,?5,"Rendering Provider: "
- SET L=$PIECE(DGZPRF(J),U,3)
- DO PRV^DGPTFM
- +9 IF $PIECE(DGZPRF(J),U,5)
- WRITE !,?5,"Rendering Location: ",$PIECE($GET(^SC($PIECE(DGZPRF(J),U,5),0)),U)
- +10 WRITE !!
- SET Z="B"
- DO Z^DGPTFM5
- WRITE " Procedures: "
- +11 FOR K=$PIECE(DGZPRF,U,2):1
- if '$DATA(DGZPRF(J,K))
- QUIT
- IF '$DATA(DGZPRF(J,K,9))
- Begin DoDot:1
- +12 WRITE ?5
- DO CPT^DGPTUTL1
- WRITE !
- if $Y>16
- QUIT
- End DoDot:1
- +13 FOR I=1:1:(IOSL-$Y-5)
- WRITE !
- +14 KILL I,J,K,L,Z
- SET DGNUM=$SELECT($DATA(DGZPRF(DGZP+1)):DGZP+1,1:"MAS")
- +15 if DGST
- GOTO 801^DGPTFJC
- +16 SET DIR("A")="Enter <RET> to continue, A-B to edit, 'I' to add an 801,"
- +17 SET DIR("A")=DIR("A")_$CHAR(10,13)_"the number of an 801 screen, ?? to list 801 screens,"
- +18 SET DIR("A")=DIR("A")_$CHAR(10,13)_"'S' for Send to PCE,"
- +19 SET DIR("A")=DIR("A")_" '^N' for screen N, or '^' to abort:"
- +20 SET DIR("?")="^D HELP^DGPTUTL1"
- +21 SET DIR(0)="F^OU"
- SET DIR("B")=DGNUM
- SET DIR("??")="^D DISP^DGPTUTL1"
- DO ^DIR
- +22 KILL DIR
- if $DATA(DIRUT)
- if X="^"
- GOTO Q^DGPTF
- +23 IF X?1"^".E
- SET DGPTSCRN=801
- GOTO ^DGPTFJ
- +24 IF X="MAS"
- SET DGZP=1
- GOTO ^DGPTFM
- +25 if X="I"!(X="i")
- GOTO ADD
- if X["?"
- GOTO HELP^DGPTUTL1
- +26 IF X?1N.N
- IF $DATA(DGZPRF(X))
- SET DGZP=X
- GOTO SET
- +27 IF X["A"!(X["B")!(X["a")!(X["b")
- GOTO ED
- +28 IF X="S"!(X="s")
- DO PCE
- GOTO WRT
- +29 DO HELP^DGPTUTL1
- READ !!,"Enter <RET>: ",X:DTIME
- GOTO WRT
- PCE LOCK +^DGPT(PTF):2
- +1 IF '$TEST
- WRITE !,"CPT Record is being edited by another user"
- HANG 2
- QUIT
- +2 DO ICDINFO^DGAPI(DFN,PTF)
- DO XREF^DGPTFM21
- +3 SET RES=$$DATA2PCE^DGAPI1(DFN,PTF,DGZP)
- +4 IF RES=1
- LOCK -^DGPT(PTF)
- WRITE !,"PTF Record sent to PCE"
- HANG 2
- QUIT
- +5 WRITE @IOF
- +6 ;F I=1:1 Q:'$D(^TMP("DGPAPI",$J,"DIERR",$J,1,"TEXT",I)) W !,^(I)
- +7 WRITE !,"The PTF Record may not have been filed in PCE due to errors."
- +8 WRITE !,"Press return to continue."
- READ X:DTIME
- +9 LOCK -^DGPT(PTF)
- QUIT
- NEXP SET DGZP=DGZP+1
- +1 IF '$DATA(DGZPRF(DGZP))
- if DGZP=2
- WRITE !,"NO PROF. SERVICES TO EDIT."
- GOTO EXIT
- +2 GOTO SET
- EXIT KILL DGPSM
- HANG 2
- SET DGZP=1
- GOTO ^DGPTFM
- DEL ;DELETE A CPT RECORD
- +1 IF '$PIECE(DGZPRF,U,3)
- GOTO NOPROC
- ASK SET DIR("A")="Select 801 record to Delete"
- +1 SET DIR(0)="NO^1:"_$PIECE(DGZPRF,U,3)
- SET DIR("??")="^D DISP^DGPTUTL1"
- +2 DO ^DIR
- KILL DIR
- if $DATA(DIRUT)
- GOTO ^DGPTFM
- if 'Y
- GOTO ^DGPTFM
- if '$DATA(^DGPT(PTF,"C",DGZPRF(Y,0),0))
- GOTO ^DGPTFM
- SET DGZP=Y
- SET Y=+^(0)
- DO D^DGPTUTL
- +3 SET DIR("A")="Are you sure you want to delete the entire 801 for "_Y
- +4 SET DIR(0)="Y"
- SET DIR("B")="No"
- DO ^DIR
- KILL DIR
- if 'Y
- GOTO ^DGPTFM
- if '$$LOCK
- GOTO ^DGPTFM
- +5 ;patch DG*5.3*912 modifies where the date is being set for deletion. This allows multiple cpt codes to be deleted from 801 in the ptf
- +6 SET DGI=0
- +7 FOR
- SET DGI=$ORDER(^DGCPT(46,"C",PTF,DGI))
- if DGI'>0
- QUIT
- if +^DGCPT(46,DGI,1)=+DGZPRF(DGZP)&'$GET(^(9))
- Begin DoDot:1
- +8 DO NOW^%DTC
- SET (DA,REC)=DGI
- SET DIE="^DGCPT(46,"
- SET DR="1////^S X=%"
- DO FMDIE
- End DoDot:1
- +9 SET DR=".09////1"
- SET DIE="^DGPT("_PTF_",""C"","
- SET DA=DGZPRF(DGZP,0)
- +10 SET DA(1)=PTF
- DO ^DIE
- LOCK -^DGPT(PTF)
- +11 WRITE !!,"CPT Records....Deleted"
- HANG 2
- +12 KILL DIK,DA,DGI,DGPROC,DGPSM,DGPNUM,Y
- DO MOB
- GOTO ^DGPTFM
- NOPROC WRITE !!,*7,"No procedures to delete",!
- HANG 3
- GOTO ^DGPTFM
- N ;ADD CPT CODES TO CPT RECORD
- +1 IF '$PIECE(DGZPRF,U,3)
- WRITE !!,"There are no 801 records that can be added to.",*7
- HANG 2
- GOTO ^DGPTFM
- P1 SET DIR("A")="Add to 801 record "
- SET DIR(0)="NO^1:"_$PIECE(DGZPRF,U,3)
- +1 SET DIR("??")="^D DISP^DGPTUTL1"
- +2 DO ^DIR
- KILL DIR
- if 'Y
- GOTO ^DGPTFM
- +3 SET DGZP=Y
- SET DGI=0
- SET DGPRD=+DGZPRF(DGZP)
- DO CL^SDCO21(DFN,DGPRD,"",.SDCLY)
- +4 SET DA=PTF
- SET DIC="^DGCPT(46,"
- SET DIC(0)="AELQMZ"
- SET DLAYGO=46
- SET DIC("S")="D EN6^DGPTFJC I 'DGER"
- +5 DO ^DIC
- KILL DIC,DLAYGO
- if Y>0
- DO SED
- DO MOB
- DO REQ^DGPTFM3
- KILL DGPRD,Y
- +6 DO PCE^DGPTFQWK
- GOTO ^DGPTFM
- DC ;DELETE A CPT PROCEDURE
- +1 IF $EXTRACT($GET(ANS),2,99)>0
- SET DGPZ=+$EXTRACT(ANS,2,99)
- GOTO QQ
- +2 SET DIR("A")="Select 801 record to Delete a CPT code in"
- +3 SET DIR(0)="NO^1:"_$PIECE(DGZPRF,U,3)
- SET DIR("??")="^D DISP^DGPTUTL1"
- +4 DO ^DIR
- KILL DIR
- if $DATA(DIRUT)
- GOTO ^DGPTFM
- if 'Y
- GOTO ^DGPTFM
- if '$DATA(^DGPT(PTF,"C",DGZPRF(Y,0),0))
- GOTO ^DGPTFM
- SET DGZP=Y
- SET Y=+^(0)
- DO D^DGPTUTL
- +5 FOR PS2=1:1
- if '$DATA(DGZPRF(DGZP,PS2))
- QUIT
- SET PS2(PS2)=DGZP_"^"_PS2
- +6 SET PS2=PS2-1
- QQ SET DIR("A")="Select CPT code to Delete <1 - "_PS2_">"
- SET DIR(0)="NO^^K:X<1!(X>"_PS2_") X"
- DO ^DIR
- KILL DIR
- if $DATA(DIRUT)
- GOTO ^DGPTFM
- if 'Y
- GOTO ^DGPTFM
- QQA SET A1=Y
- SET DGZP=+PS2(A1)
- SET CPT=+DGZPRF(DGZP,$PIECE(PS2(A1),U,2))
- +1 SET DIR("A")="Are you sure you want to delete CPT code '"
- +2 IF $DATA(^ICPT(CPT))
- Begin DoDot:1
- +3 SET N=$$CPT^ICPTCOD(CPT,$$GETDATE^ICDGTDRG(PTF))
- +4 SET N=$SELECT(N>0:$PIECE(N,U,2,99),1:"")
- +5 SET DIR("A")=DIR("A")_$PIECE(N,U)_" "_$PIECE(N,U,2)_"'"
- End DoDot:1
- +6 IF '$TEST
- SET DIR("A")=DIR("A")_CPT_" UNKNOWN"
- +7 SET DIR(0)="Y"
- SET DIR("B")="No"
- DO ^DIR
- KILL DIR
- if 'Y
- GOTO ^DGPTFM
- +8 if '$$LOCK
- GOTO ^DGPTFM
- QEL DO NOW^%DTC
- SET DA=DGZPRF(DGZP,$PIECE(PS2(A1),U,2),0)
- SET DR="1////^S X=%"
- +1 SET REC=DGZPRF(DGZP,0)
- +2 SET DIE="^DGCPT(46,"
- DO FMDIE
- KILL A1,DR
- WRITE !!,"CPT Code....Deleted"
- +3 IF '$DATA(DGZPRF(DGZP,2))
- SET DR=".09////1"
- SET DIE="^DGPT("_PTF_",""C"","
- SET DA=DGZPRF(DGZP,0)
- SET DA(1)=PTF
- DO ^DIE
- +4 IF $DATA(DGZPRF(DGZP,2))
- DO PCE^DGPTFQWK
- +5 LOCK -^DGPT(PTF)
- if $X>70
- WRITE !
- DO MOB
- HANG 2
- GOTO ^DGPTFM
- F DO MOB
- SET DGZP=$SELECT($EXTRACT($GET(ANS),2,99):+$EXTRACT($GET(ANS),2,99),1:1)
- GOTO SET
- MOB SET (H,I,N)=0
- KILL DGZPRF
- FOR M=1:1:6
- if $DATA(SDCLY(M))
- SET N=N+1
- +1 FOR I2=1:1
- SET H=$ORDER(^DGPT(PTF,"C","B",H))
- if H'>0
- QUIT
- Begin DoDot:1
- +2 FOR
- SET I=$ORDER(^DGPT(PTF,"C","B",H,I))
- if I'>0
- QUIT
- Begin DoDot:2
- +3 SET DGZPRF(I2)=^DGPT(PTF,"C",I,0)
- SET DGZPRF(I2,0)=I
- SET (K,K1)=0
- SET F=1
- Begin DoDot:3
- +4 FOR
- SET K=$ORDER(^DGCPT(46,"C",PTF,K))
- SET L=N+1\2+3
- if K'>0
- QUIT
- IF +DGZPRF(I2)=+$GET(^DGCPT(46,K,1))
- IF '$GET(^DGCPT(46,K,9))
- Begin DoDot:4
- +5 SET K1=K1+1
- SET DGZPRF(I2,K1)=^(0)
- SET DGZPRF(I2,K1,0)=K
- SET F=0
- +6 FOR M=2,3,5,6,7,15,16,17,18
- if $PIECE(DGZPRF(I2,K1),U,M)
- SET L=L+1
- +7 SET DGZPRF(I2,K1,1)=L
- End DoDot:4
- +8 IF F
- IF $GET(DGPSM)'=DGZPRF(I2,0)
- KILL DGZPRF(I2)
- SET I2=I2-1
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +9 SET DGZPRF="1^1^"_(I2-1)
- KILL F,I,K,K1,N
- QUIT
- SED SET DR=".14////"_DGPRD_";.16////"_PTF_";"
- SET (DA,REC)=+Y
- SET DIE="^DGCPT(46,"
- DO GETINFO^DGPTFM21
- QUIT
- FMDIE ;Prompt user for questions and file answers (using DIE)
- +1 DO ^DIE
- if $DATA(Y)>9
- QUIT
- SET RES=$$DELVFILE^DGAPI1(DFN,PTF,DGZP)
- KILL DIE,REC
- QUIT
- LOCK() LOCK +^DGPT(PTF):2
- IF $TEST
- QUIT 1
- ERR WRITE !,"CPT Record is being edited by another user"
- KILL DIE,REC
- HANG 2
- QUIT 0