- ICPTMIDX ;DLS/DEK - MUMPS Cross Reference Routine for History ; 04/28/2003
- ;;6.0;CPT/HCPCS;**14**;May 19, 1997;Build 44
- ;
- ; ICPTMOD CPT/HCPC Code Modifier from Global
- ; ICPTMODX CPT/HCPC Code Modifier passed in (X)
- ; ICPTEFF Effective Date
- ; ICPTSTA Status
- ; ICPTNOD Global Node (to reduce Global hits)
- ; DA ien file 81.3 or 81.33
- ; ICPTIEN,DA(1) ien of file 81.3
- ; ICPTHIS ien of file 81.33
- ; X Data passed in to be indexed
- ;
- ; Set and Kill Activation History
- ;
- ; File 81.3, field .01
- SAHC ; Set new value when CPT Code Modifier is Edited
- ; ^DD(81.3,.01,1,D0,1) = D SAHC^ICPTMIDX
- N ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD,ICPTMODX,ICPTHIS,ICPTIEN
- S ICPTMODX=$G(X) Q:'$L(ICPTMODX) S ICPTIEN=+($G(DA)) Q:+ICPTIEN'>0
- S ICPTHIS=0 F S ICPTHIS=$O(^DIC(81.3,+ICPTIEN,60,ICPTHIS)) Q:+ICPTHIS=0 D
- . N DA,X S DA=+ICPTHIS,DA(1)=+ICPTIEN D HDC
- . S ICPTMOD=ICPTMODX Q:'$L($G(ICPTMOD))
- . Q:'$L($G(ICPTEFF)) Q:'$L($G(ICPTSTA)) D SHIS
- Q
- KAHC ; Kill old value when CPT Code is Edited
- ; ^DD(81.3,.01,1,D0,2) = D KAHC^ICPTMIDX
- N ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD,ICPTMODX,ICPTHIS,ICPTIEN
- S ICPTMODX=$G(X) Q:'$L(ICPTMODX) S ICPTIEN=+($G(DA)) Q:+ICPTIEN'>0
- S ICPTHIS=0 F S ICPTHIS=$O(^DIC(81.3,+ICPTIEN,60,ICPTHIS)) Q:+ICPTHIS=0 D
- . N DA,X S DA=+ICPTHIS,DA(1)=+ICPTIEN D HDC
- . S ICPTMOD=ICPTMODX Q:'$L($G(ICPTMOD))
- . Q:'$L($G(ICPTEFF)) Q:'$L($G(ICPTSTA)) D KHIS
- Q
- ;
- ; File 81.33, field .01
- SAHD ; Set new value when Effective Date is Edited
- ; ^DD(81.33,.01,1,D0,1) = D SAHD^ICPTMIDX
- N ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- D HDC Q:'$L($G(ICPTMOD)) Q:'$L($G(ICPTSTA)) S ICPTEFF=+($G(X)) Q:+ICPTEFF=0 D SHIS
- Q
- KAHD ; Kill old value when Effective Date is Edited
- ; ^DD(81.33,.01,1,D0,2) = D KAHD^ICPTMIDX
- N ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- D HDC Q:'$L($G(ICPTMOD)) Q:'$L($G(ICPTSTA))
- S ICPTEFF=+($G(X)) Q:+ICPTEFF=0 D KHIS
- Q
- ;
- ; File 81.33, field .02
- SAHS ; Set new value when Status is Edited
- ; ^DD(81.33,.02,1,D0,1) = D SAHS^ICPTMIDX
- N ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- D HDC Q:'$L($G(ICPTMOD)) Q:+ICPTEFF=0
- S ICPTSTA=$G(X) Q:'$L(ICPTSTA) D SHIS
- Q
- KAHS ; Kill old value when Status is Edited
- ; ^DD(81.33,.02,1,D0,2) = D KAHS^ICPTMIDX
- N ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- D HDC Q:'$L($G(ICPTMOD)) Q:+ICPTEFF=0
- S ICPTSTA=$G(X) Q:'$L(ICPTSTA) D KHIS
- Q
- ;
- HDC ; Set Common Variables (Code, Status and Effective Date)
- S (ICPTMOD,ICPTSTA,ICPTEFF)=""
- Q:+($G(DA(1)))'>0 Q:+($G(DA))'>0 Q:'$D(^DIC(81.3,+($G(DA(1))),60,+($G(DA)),0))
- S ICPTMOD=$P($G(^DIC(81.3,+($G(DA(1))),0)),"^",1),ICPTNOD=$G(^DIC(81.3,+($G(DA(1))),60,+($G(DA)),0))
- S ICPTSTA=$P(ICPTNOD,"^",2),ICPTEFF=$P(ICPTNOD,"^",1)
- Q
- ;
- SHIS ; Set Index ^DIC(81.3,"ACT",<code>,<status>,<date>,<ien>,<history>)
- Q:+($G(DA(1)))'>0 Q:+($G(DA))'>0 Q:'$D(^DIC(81.3,+($G(DA(1))),60,+($G(DA)),0))
- S ^DIC(81.3,"ACT",(ICPTMOD_" "),ICPTSTA,ICPTEFF,DA(1),DA)=""
- N PIECE,INACT S PIECE=$S('ICPTSTA:7,1:8),INACT=$S('ICPTSTA:1,1:"")
- S $P(^DIC(81.3,DA(1),0),"^",5)=INACT,$P(^DIC(81.3,DA(1),0),"^",PIECE)=ICPTEFF
- Q
- KHIS ; Kill Index ^DIC(81.3,"ACT",<code>,<status>,<date>,<ien>,<history>)
- Q:+($G(DA(1)))'>0 Q:+($G(DA))'>0 Q:'$D(^DIC(81.3,+($G(DA(1))),60,+($G(DA)),0))
- N PIECE,INACT,IEN,OPP,OPPSTA,OPPEFF,BOOL
- S PIECE=$S('ICPTSTA:7,1:8),INACT=$S('ICPTSTA:"",1:1),OPPEFF=ICPTEFF,BOOL=0
- F S OPPEFF=$O(^DIC(81.3,DA(1),60,"B",OPPEFF),-1) Q:'OPPEFF!BOOL D
- . S IEN=$O(^DIC(81.3,DA(1),60,"B",OPPEFF,""))
- . I 'IEN S OPPEFF="" Q
- . S OPP=$G(^DIC(81.3,DA(1),60,IEN,0)),OPPEFF=$P($G(OPP),"^",1)
- . S OPPSTA=$P($G(OPP),"^",2),BOOL=OPPSTA'=ICPTSTA
- I BOOL D
- . S $P(^DIC(81.3,DA(1),0),"^",5)=INACT,$P(^DIC(81.3,DA(1),0),"^",PIECE)=OPPEFF
- E S $P(^DIC(81.3,DA(1),0),"^",5)=1,$P(^DIC(81.3,DA(1),0),"^",7,8)="^"
- K ^DIC(81.3,"ACT",(ICPTMOD_" "),ICPTSTA,ICPTEFF,DA(1),DA)
- Q
- ICPTMIDX ;DLS/DEK - MUMPS Cross Reference Routine for History ; 04/28/2003
- +1 ;;6.0;CPT/HCPCS;**14**;May 19, 1997;Build 44
- +2 ;
- +3 ; ICPTMOD CPT/HCPC Code Modifier from Global
- +4 ; ICPTMODX CPT/HCPC Code Modifier passed in (X)
- +5 ; ICPTEFF Effective Date
- +6 ; ICPTSTA Status
- +7 ; ICPTNOD Global Node (to reduce Global hits)
- +8 ; DA ien file 81.3 or 81.33
- +9 ; ICPTIEN,DA(1) ien of file 81.3
- +10 ; ICPTHIS ien of file 81.33
- +11 ; X Data passed in to be indexed
- +12 ;
- +13 ; Set and Kill Activation History
- +14 ;
- +15 ; File 81.3, field .01
- SAHC ; Set new value when CPT Code Modifier is Edited
- +1 ; ^DD(81.3,.01,1,D0,1) = D SAHC^ICPTMIDX
- +2 NEW ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD,ICPTMODX,ICPTHIS,ICPTIEN
- +3 SET ICPTMODX=$GET(X)
- IF '$LENGTH(ICPTMODX)
- QUIT
- SET ICPTIEN=+($GET(DA))
- IF +ICPTIEN'>0
- QUIT
- +4 SET ICPTHIS=0
- FOR
- SET ICPTHIS=$ORDER(^DIC(81.3,+ICPTIEN,60,ICPTHIS))
- IF +ICPTHIS=0
- QUIT
- Begin DoDot:1
- +5 NEW DA,X
- SET DA=+ICPTHIS
- SET DA(1)=+ICPTIEN
- DO HDC
- +6 SET ICPTMOD=ICPTMODX
- IF '$LENGTH($GET(ICPTMOD))
- QUIT
- +7 IF '$LENGTH($GET(ICPTEFF))
- QUIT
- IF '$LENGTH($GET(ICPTSTA))
- QUIT
- DO SHIS
- End DoDot:1
- +8 QUIT
- KAHC ; Kill old value when CPT Code is Edited
- +1 ; ^DD(81.3,.01,1,D0,2) = D KAHC^ICPTMIDX
- +2 NEW ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD,ICPTMODX,ICPTHIS,ICPTIEN
- +3 SET ICPTMODX=$GET(X)
- IF '$LENGTH(ICPTMODX)
- QUIT
- SET ICPTIEN=+($GET(DA))
- IF +ICPTIEN'>0
- QUIT
- +4 SET ICPTHIS=0
- FOR
- SET ICPTHIS=$ORDER(^DIC(81.3,+ICPTIEN,60,ICPTHIS))
- IF +ICPTHIS=0
- QUIT
- Begin DoDot:1
- +5 NEW DA,X
- SET DA=+ICPTHIS
- SET DA(1)=+ICPTIEN
- DO HDC
- +6 SET ICPTMOD=ICPTMODX
- IF '$LENGTH($GET(ICPTMOD))
- QUIT
- +7 IF '$LENGTH($GET(ICPTEFF))
- QUIT
- IF '$LENGTH($GET(ICPTSTA))
- QUIT
- DO KHIS
- End DoDot:1
- +8 QUIT
- +9 ;
- +10 ; File 81.33, field .01
- SAHD ; Set new value when Effective Date is Edited
- +1 ; ^DD(81.33,.01,1,D0,1) = D SAHD^ICPTMIDX
- +2 NEW ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- +3 DO HDC
- IF '$LENGTH($GET(ICPTMOD))
- QUIT
- IF '$LENGTH($GET(ICPTSTA))
- QUIT
- SET ICPTEFF=+($GET(X))
- IF +ICPTEFF=0
- QUIT
- DO SHIS
- +4 QUIT
- KAHD ; Kill old value when Effective Date is Edited
- +1 ; ^DD(81.33,.01,1,D0,2) = D KAHD^ICPTMIDX
- +2 NEW ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- +3 DO HDC
- IF '$LENGTH($GET(ICPTMOD))
- QUIT
- IF '$LENGTH($GET(ICPTSTA))
- QUIT
- +4 SET ICPTEFF=+($GET(X))
- IF +ICPTEFF=0
- QUIT
- DO KHIS
- +5 QUIT
- +6 ;
- +7 ; File 81.33, field .02
- SAHS ; Set new value when Status is Edited
- +1 ; ^DD(81.33,.02,1,D0,1) = D SAHS^ICPTMIDX
- +2 NEW ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- +3 DO HDC
- IF '$LENGTH($GET(ICPTMOD))
- QUIT
- IF +ICPTEFF=0
- QUIT
- +4 SET ICPTSTA=$GET(X)
- IF '$LENGTH(ICPTSTA)
- QUIT
- DO SHIS
- +5 QUIT
- KAHS ; Kill old value when Status is Edited
- +1 ; ^DD(81.33,.02,1,D0,2) = D KAHS^ICPTMIDX
- +2 NEW ICPTNOD,ICPTSTA,ICPTEFF,ICPTMOD
- +3 DO HDC
- IF '$LENGTH($GET(ICPTMOD))
- QUIT
- IF +ICPTEFF=0
- QUIT
- +4 SET ICPTSTA=$GET(X)
- IF '$LENGTH(ICPTSTA)
- QUIT
- DO KHIS
- +5 QUIT
- +6 ;
- HDC ; Set Common Variables (Code, Status and Effective Date)
- +1 SET (ICPTMOD,ICPTSTA,ICPTEFF)=""
- +2 IF +($GET(DA(1)))'>0
- QUIT
- IF +($GET(DA))'>0
- QUIT
- IF '$DATA(^DIC(81.3,+($GET(DA(1))),60,+($GET(DA)),0))
- QUIT
- +3 SET ICPTMOD=$PIECE($GET(^DIC(81.3,+($GET(DA(1))),0)),"^",1)
- SET ICPTNOD=$GET(^DIC(81.3,+($GET(DA(1))),60,+($GET(DA)),0))
- +4 SET ICPTSTA=$PIECE(ICPTNOD,"^",2)
- SET ICPTEFF=$PIECE(ICPTNOD,"^",1)
- +5 QUIT
- +6 ;
- SHIS ; Set Index ^DIC(81.3,"ACT",<code>,<status>,<date>,<ien>,<history>)
- +1 IF +($GET(DA(1)))'>0
- QUIT
- IF +($GET(DA))'>0
- QUIT
- IF '$DATA(^DIC(81.3,+($GET(DA(1))),60,+($GET(DA)),0))
- QUIT
- +2 SET ^DIC(81.3,"ACT",(ICPTMOD_" "),ICPTSTA,ICPTEFF,DA(1),DA)=""
- +3 NEW PIECE,INACT
- SET PIECE=$SELECT('ICPTSTA:7,1:8)
- SET INACT=$SELECT('ICPTSTA:1,1:"")
- +4 SET $PIECE(^DIC(81.3,DA(1),0),"^",5)=INACT
- SET $PIECE(^DIC(81.3,DA(1),0),"^",PIECE)=ICPTEFF
- +5 QUIT
- KHIS ; Kill Index ^DIC(81.3,"ACT",<code>,<status>,<date>,<ien>,<history>)
- +1 IF +($GET(DA(1)))'>0
- QUIT
- IF +($GET(DA))'>0
- QUIT
- IF '$DATA(^DIC(81.3,+($GET(DA(1))),60,+($GET(DA)),0))
- QUIT
- +2 NEW PIECE,INACT,IEN,OPP,OPPSTA,OPPEFF,BOOL
- +3 SET PIECE=$SELECT('ICPTSTA:7,1:8)
- SET INACT=$SELECT('ICPTSTA:"",1:1)
- SET OPPEFF=ICPTEFF
- SET BOOL=0
- +4 FOR
- SET OPPEFF=$ORDER(^DIC(81.3,DA(1),60,"B",OPPEFF),-1)
- IF 'OPPEFF!BOOL
- QUIT
- Begin DoDot:1
- +5 SET IEN=$ORDER(^DIC(81.3,DA(1),60,"B",OPPEFF,""))
- +6 IF 'IEN
- SET OPPEFF=""
- QUIT
- +7 SET OPP=$GET(^DIC(81.3,DA(1),60,IEN,0))
- SET OPPEFF=$PIECE($GET(OPP),"^",1)
- +8 SET OPPSTA=$PIECE($GET(OPP),"^",2)
- SET BOOL=OPPSTA'=ICPTSTA
- End DoDot:1
- +9 IF BOOL
- Begin DoDot:1
- +10 SET $PIECE(^DIC(81.3,DA(1),0),"^",5)=INACT
- SET $PIECE(^DIC(81.3,DA(1),0),"^",PIECE)=OPPEFF
- End DoDot:1
- +11 IF '$TEST
- SET $PIECE(^DIC(81.3,DA(1),0),"^",5)=1
- SET $PIECE(^DIC(81.3,DA(1),0),"^",7,8)="^"
- +12 KILL ^DIC(81.3,"ACT",(ICPTMOD_" "),ICPTSTA,ICPTEFF,DA(1),DA)
- +13 QUIT